【问题标题】:Dijkstra's algorithm with Direction in Neo4jNeo4j 中带方向的 Dijkstra 算法
【发布时间】:2014-03-10 20:54:19
【问题描述】:

我已经添加了我所有的节点和关系。但一个问题是,在使用 Dijikstra 时,我并没有将其理解为单一方向:

(0)--[PROGRESSED_TO,3812]-->(1)<--[PROGRESSED_TO,3965]--(26)--[PROGRESSED_TO,4932]-->(63) weight:0.07873392808600001

如我们所见,我们有A -&gt; B &lt;- C -&gt; D

为什么我的路不顺?

我的算法由以下人员创建:

PathFinder dijkstra = dijkstra(Traversal.expanderForAllTypes(), CommonEvaluators.doubleCostEvaluator("length"));

我由此遍历路径: Iterator&lt;WeightedPath&gt; paths = dijkstra.findAllPaths(node_a, node_b ).iterator();

【问题讨论】:

  • 您能否修改您的答案以包含有关您的设置以及您遇到问题的场景的更多详细信息?例如,您使用的是哪个版本的 Neo4j?

标签: neo4j dijkstra


【解决方案1】:

你必须告诉扩展器只向一个特定的方向前进:

Traversal.expanderForAllTypes(Direction.OUTGOING);

顺便说一句,如果您使用的是 Neo4j 2.0 或更高版本,您应该着眼于使用 org.neo4j.graphdb.traversal 中的遍历组件,而不是 org.neo4j.kernel 中的那些。内核是内部代码,可能会改变。像这样的:

PathExpanders.forDirection(Direction.OUTGOING);

【讨论】:

    猜你喜欢
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2014-01-20
    相关资源
    最近更新 更多