TraversalDescription을 사용하여 두 노드 간의 모든 최단 경로를 모두 찾아야합니다.TraversalDescription을 사용하여 최단 경로 찾기
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
}
난 단지 한 경로를 가져올 수 :
은 ( Neo4J: shortest paths with specific relation types sequence constrain 나는 사이퍼 절차 allShortestPaths을() 나는 몇 가지 구체적인 평가 나중에 추가 할 필요가 있기 때문에 사용할 수 없습니다).하지만 사이퍼 쿼리를 실행하는 경우 :
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