gpt4 book ai didi

Neo4j (3.5.14) 互连节点的 BFS/DFS 故障

转载 作者:行者123 更新时间:2023-12-04 21:28:27 25 4
gpt4 key购买 nike

我有一个问题要解决:找到所有可达的节点路径,这些路径将在一定的权重下。
从编程语言的角度已经解决了问题,但现在我想
通过调用neo4j以正确的方式做到这一点。
考虑以下节点连接:

 1-(2)--3
| \ |
(3)(9) (1)
| \ |
2-(9)--4-(1)-5

如果格式不清楚:
1->2 distance:3
1->3 distance:2
1->4 distance:9
3->4 distance:1
2->4 distance:9
4->5 distance:1

假设是,对于起点 1 和整体权重 = 5,我们可以到达每个节点:
1->2 (3)
1->3->4->5 (4)

我知道也可以通过在 db 中搜索到每个节点的最短路径并找到所有权重小于 5 的“手动”完成,但是,我认为 bfs/dfs 更适合于此,因为对于大型数据集手动解决方案任何查询都会很慢。
所以我对于 bfs/dfs 我找到了以下解决方案:
Match(n:Place {name:"one"})
call algo.bfs.stream("Place", "Connection", "BOTH", id(n),
{maxCost:5, weightProperty:'distance'})
yield nodeIds
unwind nodeIds as nodeId
return algo.asNode(nodeId)

然而,结果只有节点 1、2 和 3(可直接访问),我不太明白,为什么会这样。如果我删除连接 1->4 和 2->4,结果如预期。为什么 algo.bfs/dfs 不适用于这种情况?如果我使用 maxCost 11 进行搜索,结果如预期 - 所有节点。

最佳答案

我和 Neo4j 在一起,我们有一些来自分析团队的人来看看。我们已经确认这是一个影响 dfs 和 bfs 实现的错误,我们将在下一个 algos 补丁版本中修复。

关于Neo4j (3.5.14) 互连节点的 BFS/DFS 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com