Java 如何在给定的两个节点之间找到路径?
如何在neo4j Java API中找到给定两个节点之间的路径,路径的所有权重的乘积在两个节点之间的所有路径中都是最大的,我该怎么办? 在我的图形数据库中,有两个元素:一个是node,另一个是relationship,所有元素都有一个name属性,但该关系还有一个额外的属性:weight(双精度类型,以及(0,1)中的值)Java 如何在给定的两个节点之间找到路径?,java,neo4j,Java,Neo4j,如何在neo4j Java API中找到给定两个节点之间的路径,路径的所有权重的乘积在两个节点之间的所有路径中都是最大的,我该怎么办? 在我的图形数据库中,有两个元素:一个是node,另一个是relationship,所有元素都有一个name属性,但该关系还有一个额外的属性:weight(双精度类型,以及(0,1)中的值) public static ArrayList<Path> getAllOptPaths(Long startNodeId, Long endNodeId, Gr
public static ArrayList<Path> getAllOptPaths(Long startNodeId, Long endNodeId, GraphDatabaseService db){
ArrayList<Path> optPathsBetweenTwoNodes = new ArrayList<Path>();
try (Transaction tx = db.beginTx()){
Node node1 = db.getNodeById(startNodeId);
Node node2 = db.getNodeById(endNodeId);
PathExpander<Object> pathExpander = PathExpanders.allTypesAndDirections();
CostEvaluator<Double> costEvaluator = CommonEvaluators.doubleCostEvaluator("Cost");
// find all paths between given two nodes
PathFinder<WeightedPath> dijkstraPathsFinder = GraphAlgoFactory.dijkstra(pathExpander, costEvaluator);
WeightedPath path = dijkstraPathsFinder.findSinglePath(node1, node2);
optPathsBetweenTwoNodes.add(path);
tx.success();
} catch (Exception e) {
e.printStackTrace();
}
return optPathsBetweenTwoNodes;
}
publicstaticarraylistgetalloptpath(长startNodeId、长endNodeId、GraphDatabaseService db){
ArrayList optPathsBetweenTwoNodes=新ArrayList();
try(事务tx=db.beginTx()){
Node node1=db.getNodeById(startNodeId);
节点node2=db.getNodeById(endNodeId);
PathExpander PathExpander=PathExpanders.allTypesAndDirections();
CostEvaluator CostEvaluator=CommonEvaluator.doubleCostEvaluator(“成本”);
//查找给定两个节点之间的所有路径
PathFinder dijkstraPathsFinder=GraphAlgoFactory.dijkstra(路径扩展器,成本评估器);
加权路径路径=dijkstraPathsFinder.findSinglePath(节点1,节点2);
optpathsbetweetwonodes.add(路径);
成功();
}捕获(例外e){
e、 printStackTrace();
}
返回两个节点之间的optpathsb;
}
在密码查询中也可以探索路径。这可以为您提供加权路径计算的结果(以及权重最小的路径)
包含加权路径查询的示例。此外,该函数将帮助您指定如何计算(和加权)路径。在cypher查询中也可以探索路径。这可以为您提供加权路径计算的结果(以及权重最小的路径)
包含加权路径查询的示例。此外,该函数将帮助您指定如何计算(和加权)您的路径。这个问题已经由我自己解决了,方法是修改neo4j核心JAVA API的源代码。在修改源代码的过程中,涉及到一些具体的文档,如下:Dijkstra.JAVA、BestFirstSelectoryFactory.JAVA、GraphAlgoFactory.JAVA、Path.JAVA、WeightedPathImpl.JAVA、WeightedPathIterator.JAVA在修改的细节中,你可以发邮件给我。这个问题已经由我自己解决了,方法是修改neo4j core JAVA API的源代码。在修改源代码的过程中涉及到一些具体的文档,如下:Dijkstra.JAVA、BestFirstSelectoryFactory.JAVA、GraphAlgoFactory.JAVA、Path.JAVA、WeightedPathImpl.JAVA、WeightedPathIterator.java。如果有人对修改的详细信息感兴趣,可以给我发邮件。我认为更改代码库不是一个好主意。在使用函数setProperty()设置关系属性(例如边的权重)时,可以使用键“Cost”设置边的权重.我认为更改代码库不是一个好主意。当使用函数setProperty()设置关系属性(例如边的权重)时,可以使用键“Cost”设置边的权重这不是一个理想的答案。这种类型的答案应该作为评论。我知道,你不能发表评论,只要你达到50个声誉。考虑阅读这不是一个理想的答案。这种类型的答案应该作为评论。我知道,你不能发表评论,你达到50个声誉。考虑阅读此。