任何人都可以使用neo4j 3.1.0版本發送Cypher查詢以查找兩個節點之間的LONGEST PATH。Cypher查詢使用neo4j 3.1.0版本查找最長路徑3.1.0版本
回答
查找最長路徑的圖算法未實現。
這裏是一個暗號查詢得到的所有路徑和大小對其進行排序:
// get the nodes
MATCH (a:Node), (b:Node)
WHERE ID(a) = 14 AND ID(b) = 7
WITH a,b
// match all paths
MATCH p=(a)-[*]-(b)
// return the longest
RETURN p, length(p) ORDER BY length(p) DESC LIMIT 1
然而,如果沒有對查詢任何限制,這可能不是大圖工作。在無向圖中查找最長路徑很昂貴:https://en.wikipedia.org/wiki/Longest_path_problem
而且對查詢(方向和關係類型)沒有限制,查詢將查找所有無向路徑。
你應該限制你的路徑查詢或嘗試兩個解決你的問題沒有最長的路徑。
我嘗試沒有任何限制,因爲我們的topolgy很大,所以它會無限循環。 – raj
計算最長路徑只適用於有向無環圖。在無向循環圖中,最長的路徑可能是無限的(請參閱您的帖子的評論)。不幸的是,圖論不允許你想要做什麼。 –
如果您正在尋找其中鏈中的每個節點到下一個相同的關係節點之間的最長路徑,然後看到Achieving longestPath Using Cypher表示:
MATCH p=(parent:Entity)-[:HAS_CHILD*1..10]->(child:Person)
WHERE size((child)-[:HAS_CHILD]->()) = 0
RETURN child;
但是我使用:
MATCH (parent:Entity)-[:HAS_CHILD*1..10]->(child:Person)
WHERE NOT (child)-[r:HAS_CHILD]->()
RETURN child;
如果任何人都可以評論表現或任何其他方面,請做!
我還發現了一個未公開的特性,這將還給孩子的時候它也是父(如只有一個節點):
MATCH (parent:Entity)-[:HAS_CHILD*0..]->(child:Person)
WHERE NOT (child)-[r:HAS_CHILD]->()
RETURN child;
- 1. Rails的版本3.1.0到2.3.14
- 2. ggbiplot for R版本3.1.0
- 3. 將Nexus升級到版本3.1.0-04後無法查看版本/工件
- 4. 將AFNetworking從版本1.2.1更新到3.1.0
- 5. 按版本查找Xcode安裝路徑
- 6. Neo4j Cypher查詢返回節點沿任意長的路徑
- 7. 尋求Neo4J Cypher查詢很長(但幾乎)唯一的路徑
- 8. 找出版本庫路徑的最早版本?
- 9. neo4j Cypher查詢
- 10. Cypher Neo4j查詢
- 11. Neo4j 3.1.0 apoc.load.csv問題
- 12. 在多個MATCH UNION查詢中重複使用路徑cypher neo4j
- 13. 在R版本3.1.0中使用ggsurv函數
- 14. Neo4j - Complex Cypher查詢
- 15. 查找angularjs版本
- 16. 版本查找表
- 17. 查找Struts版本?
- 18. 查找GCC版本
- 19. JRE版本查詢
- 20. Notification.alert在phonegap版本中不起作用3.1.0
- 21. 將Nexus升級到版本3.1.0-04後無法查看存儲庫
- 22. wxWidgets從3.1.0版缺失的庫
- 23. Neo4j OGM 2.0查詢路徑
- 24. Neo4j的查詢路徑
- 25. 分析Neo4j路徑查詢
- 26. 的Neo4j - 對路徑查詢
- 27. 的Cypher查詢語言/ Neo4j的 - 可變路徑長度的嵌套返回
- 28. Neo4j Cypher查找探索排序關係的所有路徑
- 29. 無法找到neo4j-cypher-dsl版本1.9.M04任何地方
- 30. 查找最新版本的文件夾
你的意思是最長的*簡單*路徑(即,沒有任何週期)?如果要包含循環,則所有具有循環的路徑都可以被認爲具有無限長度。 – cybersam