我需要使用TraversalDescription查找兩個節點之間的所有最短路徑。使用TraversalDescription查找所有最短路徑
(我不能用暗號程序allShortestPaths(),因爲我需要一些具體的評估以後添加: Neo4J: shortest paths with specific relation types sequence constrain )
Node startNode = ...;
Node endNode = ...;
TraversalDescription td = graphDb.traversalDescription()
.breadthFirst()
.evaluator(Evaluators.endNodeIs(Evaluation.INCLUDE_AND_PRUNE,
Evaluation.EXCLUDE_AND_CONTINUE,
endNode));
for (Path path : td.traverse(startNode)) {
// only 1 path found
}
我只得到1路。
但是,如果我運行的Cypher查詢:
MATCH (startNode{...})
MATCH (endNode{...})
MATCH path = allShortestPaths((startNode)-[*]-(endNode))
RETURN path;
找到了相同的StartNode和終端節點多於一個路徑。
如何設置TraversalDescription來查找所有(最短)路徑?
謝謝你的建議。我試圖使用'BidirectionalTraversalDescription',甚至得到了結果,但遭受了顯着的性能問題: http://stackoverflow.com/questions/43526585/neo4j-set-up-bidirectionaltraversaldescription-for-shortest-paths-search – Kit