如何找到最佳路径GraphAlgoFactory(第一名,第二名等等......)

时间:2013-07-04 21:14:28

标签: neo4j

我是neo4j的首发,我想知道是否有可能找到使用neo4j的最佳路径,我有成本,但我想要第一个最好的路径,第二个最好的路径等等......

如果我有3条可能的路径,我需要按成本排序全部3条,如果我有100条可能的路径,我也需要限制结果(例如,前10条结果)。

这在neo4j中是可能的吗?

PS:在我的测试中,我使用了java-astar-routing样本:https://github.com/neo4j-examples/java-astar-routing

感谢和抱歉我的英语不好;),

2 个答案:

答案 0 :(得分:2)

基本上,你想要的是两个节点之间的所有路径,然后计算它们的权重,然后按成本对它们进行排序。

后两位非常容易,现在您只需找到所有路径:

http://api.neo4j.org/current/org/neo4j/graphalgo/GraphAlgoFactory.html#allPaths(org.neo4j.graphdb.RelationshipExpander,int)

答案 1 :(得分:0)

您还可以使用最佳排序策略编写自己的遍历器。类似的东西:

Traversal.traversal()
    .order( new MyOwnBestFirstOrdering() )
    ...
    .traverse( startNode );

class MyOwnBestFirstOrdering extends BestFirstSelectorFactory<Integer,Integer>
{
    @Override public Integer startData() {
        return 0;
    }

    ...
}