2013-04-02 107 views
0

我在neo4j中有1250000個節點,現在我想計算這些節點之間的平均路徑長度。有沒有一種有效的方法來做到這一點?如果我使用: 對於節點中的x: 對於y中的節點: cal(x,y) 我認爲它花費的時間太多。所以我想要一個更高效的算法。謝謝!如何計算neo4j中的平均路徑長度

回答

0

那麼, 我會複製圖(例如在一個Neo4j HA集羣中),然後只運行每個節點上的總x的部分,這樣並行計算。

+0

感謝您的建議!我會嘗試 – user2234995

0

您可以嘗試避免計算之前步驟中已計算的路徑(以某種方式,就像您在動態編程中所做的那樣)。例如,假設你有路徑x-> y-> z,比計算x ---> z路徑時要記住路徑x-> y和y-> z,以便你可以使用它們稍後的。

如果您使用此方法,您可能會遇到內存限制,具體取決於您的服務器配置。

+0

這聽起來像dijkstra algorithm.For長度,我直接使用的API,問題是我必須tranvesal節點兩次konw每個對的長度,它仍然花費太多了。我不確定DP是否可以解決這個問題... – user2234995

+0

我不確定,但你可以試試看。是的,你仍然有節點²最複雜的,但你可以避免重新做一些工作。 – RaduK

+0

謝謝!現在我在獲取最大連接子圖時遇到了問題。我有1250000個節點,我選擇連接並刪除未連接。運行該程序後,我刪除了一些節點,如果我使用密碼來查看網絡管理員中已刪除的節點,則表示它是無效的查詢,但在儀表板中它仍然顯示我有1250000個節點。看來我根本沒有刪除節點!你有什麼建議嗎? – user2234995