簡體   English   中英

使用密碼查詢在無限深度的巨大循環neo4j有向圖中找到最大路徑

[英]Finding largest path in huge cyclic neo4j directed graph with infinite depth using cypher query

我有一個neo4j圖,其中不同的節點通過有向關系進行連接。此圖包含周期。 我想找到最大路徑中具有此關系的所有實體,這些關系是一組給定實體與一組目標實體的關系。 下面提供了我正在使用的查詢:注意:示例圖中的節點數= 1000,關系= 2500,深度=無限。 同樣,我們的最終圖形可能包含最多25000個節點。

match (n:dataEntity) where id(n) in 
[28, 4, 27, 151, 34, 36, 57, 59, 71, 73, 75, 119, 121, 140, 142, 144] 
match (d:dataEntity) where   NOT (d)-[:dependsOn]->(:dataEntity)
with distinct d ,n
match res =(n)-[:dependsOn*]->(d) 
with   d,n,nodes(res) as   x 
return x

該查詢的問題是它可以很好地工作到深度5,但是由於不確定的深度,它花費了太多時間,即超過20分鍾。 在此先感謝,如果您需要任何其他信息,請恢復!

基本問題是您正在嘗試執行不合理的昂貴查詢。

根據您的數據特征:

  • 一個dataEntity節點平均具有約2.5個傳出關系
  • 從任何節點n到任何節點d的路徑的最大長度為2500

例如,假設從一個特定的n到一個特定的d的特定路徑(可能有大量可能的路徑)的長度為500。要找到該路徑,操作數應為(2.5 ^ 500),或大約10 ^ 199

您需要重新考慮您要嘗試做的事情,看看是否有更聰明的方法來做您想做的事情。 也許更改數據模型會有所幫助,但這全部取決於您的用例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM