我需要使用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