Neo4j 如何找到最佳路径GraphAlgoFactory(第一最佳、第二最佳等等)
我是neo4j的初学者,我想知道是否有可能找到使用neo4j的最佳路径,这是有成本的,但我想要第一条最佳路径,第二条最佳路径等等 如果我有3条可能的路径,我需要按成本将所有3条按顺序排列,如果我有100条可能的路径,我也需要限制结果(例如,前10条结果) 这在neo4j中是可能的吗 PS:在我的测试中,我使用了java astar路由示例:Neo4j 如何找到最佳路径GraphAlgoFactory(第一最佳、第二最佳等等),neo4j,Neo4j,我是neo4j的初学者,我想知道是否有可能找到使用neo4j的最佳路径,这是有成本的,但我想要第一条最佳路径,第二条最佳路径等等 如果我有3条可能的路径,我需要按成本将所有3条按顺序排列,如果我有100条可能的路径,我也需要限制结果(例如,前10条结果) 这在neo4j中是可能的吗 PS:在我的测试中,我使用了java astar路由示例: 感谢并为我糟糕的英语感到抱歉;) 基本上,您需要的是两个节点之间的所有路径,然后计算它们的权重,然后按成本对它们进行排序 后两位操作非常简单,现在只需找到所
感谢并为我糟糕的英语感到抱歉;) 基本上,您需要的是两个节点之间的所有路径,然后计算它们的权重,然后按成本对它们进行排序 后两位操作非常简单,现在只需找到所有路径:
,int)您还可以使用最佳优先排序策略编写自己的遍历器。比如:
Traversal.traversal()
.order( new MyOwnBestFirstOrdering() )
...
.traverse( startNode );
class MyOwnBestFirstOrdering extends BestFirstSelectorFactory<Integer,Integer>
{
@Override public Integer startData() {
return 0;
}
...
}
Traversal.Traversal()
.order(新的MyOwnBestFirstOrdering())
...
.导线测量(起始节点);
类MyOwnBestFirstOrdering扩展了BestFirstSelectorFactory
{
@重写公共整数startData(){
返回0;
}
...
}
您可以使用Dijkstra或A*并使用finder.GetAllPath(),然后按成本/权重排序。@MichaelHunger我认为哪个finder.GetAllPath()返回所有最佳路径,如果这些路径具有相同的最佳成本,它将返回多个结果。我需要第一个最好的,第二个最好的等等…所以迭代(惰性)结果迭代器,并从最佳分数返回一个(如果多个),从第二个最佳分数返回一个(如果多个)。。。等等Dijkstra和AStar返回具有成本存取器的WeightedPath对象。在您的解决方案中,我将如何知道最佳路径的顺序,以及如何将路径限制为3条第一最佳路径。您只需根据路径的权重对返回的路径集合进行排序。您可以在代码中手动执行此操作,而不是在Neo4j中。无论如何,在Neo4J中这样做没有什么区别,因为他们仍然需要检查所有路径,看看它是否属于前3名