0
속성을 기반으로하는 일부 노드를 Neo4j Dijkstra 알고리즘에서 제외 할 수있는 방법이 있습니까?일부 노드를 제외하는 방법
알고 계시 겠지만 의 유형 및 방향에 허용 된 연관성 및 길 찾기를 설정할 수 있지만이 경우 제 도움이되지 않습니다.
코드 다음 한의 난을 가정 해 봅시다 :
try (Transaction tx = graphDb.beginTx()) {
Node startNode = graphDb.getNodeById(12353);
Node endNode = graphDb.getNodeById(12356);
CostEvaluator<Double> costEvaluator = new CostEvaluator<Double>() {
@Override
public Double getCost(Relationship relationship, Direction direction) {
Integer cost = Integer.parseInt(relationship.getProperty("cost").toString());
return cost.doubleValue();
}
};
PathFinder<WeightedPath> finder = GraphAlgoFactory.dijkstra(
PathExpanders.forTypeAndDirection(RelationshipTypes.RELATED, Direction.OUTGOING), costEvaluator);
WeightedPath path = finder.findSinglePath(startNode, endNode);
System.out.println(path.length());
tx.success();
}
}
다 익스트라는 속성 이름을 가진 노드를 통해 간다 '런던'방법이 경로를 실행 중지하고 다른 곳에서 계속?
감사합니다. 한 가지 문제가 있습니다. 두 번째 재정의 변수 경로에서 오류가 발생했습니다. 어떻게 작동하는지 잘 모르겠습니다. 이 코드는 http://pastebin.com/wjShzxxA입니다. – EdWood
@EdWood, 그건 내 잘못입니다. 프로세스에 적절한주의를 기울이지 않고 코드를 복사하여 붙여 넣었습니다. 지금 고쳤습니다. 다시 시도하십시오. – tkroman
@EdWood, 물론 아무 일도 일어나지 않습니다! 또한 이미 사용하고있는 확장자 ('dijkstra'에 대한 인수) 대신에 확장자를 사용해야합니다. 당신은 단순한 클래스 정의에서 아무것도 기대할 수 없습니다 - 당신은 또한 그것을 인스턴스화하고 어딘가에 사용해야합니다.) – tkroman