gpt4 book ai didi

graph - 如何在 Neo4j 中找到最少跳数的最短路径?

转载 作者:行者123 更新时间:2023-12-04 16:43:03 24 4
gpt4 key购买 nike

我建模了一个图,其中节点是位置,边表示您可以从一个地方转到另一个地方。

这是为了拥有你可以从一个地方到另一个地方的所有路线,
你可以通过不同的路线从一个地方到另一个地方,所以我想要一个查询,返回最短路径变化最小的路径。

例如,我想从 A 到 D,我有两种可能的路径:

(place {name: "A"})-[:FOLLOWS{route:""R1}]->(place{name: "B" })-[:FOLLOWS{route:""R4}]->(place{name:"C"})-[:FOLLOWS{route:""R2}]->(place{name:"D"})

(place {name: "A"})-[:FOLLOWS{route:""R1}]->(place{name: "B" })-[:FOLLOWS{route:""R1}]->(place{name:"F"})-[:FOLLOWS{route:""R2}]->(place{name:"D"})

在前两条路径中,两条路径的大小相同,但我想得到第二条路径,也就是路径变化最少的一条。

谢谢你。

最佳答案

@DevBennett 的答案以最少的路线更改次数获得最短路径。

要获得具有最少不同路线数量的最短路径,这就是问题字面上要求的(但可能不是提问者实际想要的),您可以使用以下查询:

MATCH p=ALLSHORTESTPATHS((a:Place {name: "A"})-[:FOLLOWS*]->(d:Place{name:"D"}))
UNWIND RELATIONSHIPS(p) AS rel
WITH p, COUNT(DISTINCT rel.route) AS nRoutes
RETURN p, nRoutes
ORDER BY nRoutes
LIMIT 1;

关于graph - 如何在 Neo4j 中找到最少跳数的最短路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583941/

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