Neo4j 如何找到最佳路径GraphAlgoFactory(第一最佳、第二最佳等等)

Neo4j 如何找到最佳路径GraphAlgoFactory(第一最佳、第二最佳等等),neo4j,Neo4j,我是neo4j的初学者,我想知道是否有可能找到使用neo4j的最佳路径,这是有成本的,但我想要第一条最佳路径,第二条最佳路径等等 如果我有3条可能的路径,我需要按成本将所有3条按顺序排列,如果我有100条可能的路径,我也需要限制结果(例如,前10条结果) 这在neo4j中是可能的吗 PS:在我的测试中,我使用了java astar路由示例: 感谢并为我糟糕的英语感到抱歉;) 基本上,您需要的是两个节点之间的所有路径,然后计算它们的权重,然后按成本对它们进行排序 后两位操作非常简单,现在只需找到所

我是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名