我在neo4j中应用dijkstra算法进行遍历,因为我想要从源到目的地的成本最低的路径。是否有可能获得从源到目的地最便宜的路径,其边数最多为'n'? 我目前的代码是:
public static PathFinder<WeightedPath> dijkstraTraverser = GraphAlgoFactory.dijkstra(expander, "cost");
在正常遍历中,我可以在路径长度上设置一个上限,如下所示:
public static final TraversalDescription allTraverser = baseTraverser.evaluator( Evaluators.toDepth( 3 ) );
使用dijkstra算法遍历图时是否有任何方法可以应用相同的上限?
我正在使用neo4j v2.0
答案 0 :(得分:0)
听起来你需要一个单独的对象来跟踪某个状态,即给定路径的总成本;即在评估者中,您需要计算Path的成本,然后返回正确的评估。
创建一个存储最便宜路径的评估器;以不切实际的高价值开始;每次遇到路径时,请更新您看到的最便宜的费用,如果路径比您看到的最便宜,则返回Evaluation.INCLUDE_AND_CONTINUE;否则返回Evalution.EXCLUDE_AND_PRUNE
如果您有一些额外的上限,您希望执行,这只是评估者的一个小额外条件;如果总路径费用是> =您的限制,则排除并修剪。