2017-05-03 55 views
-2

我是相對較新的圖形處理和 我有一個2600萬邊緣與節點的圖形,我想運行k-最短路徑算法,目前,我' m使用散列表來存儲邊緣,但是我得到的java堆空間內存不足錯誤(這是可以理解的)。有效的方式來存儲2600萬邊緣的圖形

所以我的問題是什麼是最有效的方式來存儲此圖,以便我沒有得到內存溢出錯誤,我可以有效地運行k-最短路徑算法。 是否有一些專門用於圖形的內存數據庫?

+1

此帖可能會有幫助:http://stackoverflow.com/questions/3287003/three-ways-to-store-a-graph-in-memory-advantages-and-disadvantages – victor

回答

0

在內存圖形數據庫中存在不同(在處理和存儲方面是本地和非本地的)。您可以在下面找到它們中最受歡迎的三種:

  • Bitsy是一個小型,快速,可嵌入,耐用的內存圖形數據庫,可實現Blueprints API。
  • Graph Engine(GE)是一個分佈式內存數據處理引擎,由強類型的RAM存儲和通用分佈式計算引擎支撐。
  • Grapholytic是使用高級機器學習算法將圖自動分佈到羣集節點的唯一數據庫。無限制的可擴展性。將數據綁定到CPU功率:實現分析處理的並行處理和高級性能。用於企業計算場景的內存計算和低成本存儲相結合。

此外,您可以使用一些流行的緩存系統,如Redis。如果你想存儲鄰接矩陣內聯內存,Redis可能是一個合理的選擇。