现在我正在测试 dijkstra (org.neo4j.graphalgo.impl.shortestpath.*)。您可以在下面看到代码:
Dijkstra<Double> dijkstra = new Dijkstra<>(0.0,
startNode,
endNode,
CommonEvaluators.doubleCostEvaluator("weight"),
new DoubleAdder(),
new DoubleComparator(),
Direction.BOTH,
RelationshipTypes.rel);
如何定义路径中必须包含的节点?有什么想法吗?
最佳答案
您将不得不暴力破解所有可能的路径。只要您不需要包含太多节点,就可以使用这种方法。这基本上是旅行推销员的问题。 你可以做什么:
- 查找节点的所有排列(以便以所有可能的方式对节点进行排序)
- 为从第一个节点到第二个节点的每个排列启动最短路径,依此类推
- 比较所有路径的权重并选择最短的一条
请记住,节点数量应尽可能少,因为 TSP 是一个 NP 难题。因此,不要包含接近 10 个节点。
我已经在 github 上请求了这个功能以及一些代码。 Here is my request.
关于java - Neo4j。迪克斯特拉。查找包含一组节点的路径 (graphalgo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49030257/