我正在建模一个图表,其中节点是位置,边缘表示您可以从一个地方到达另一个地方。
这是拥有从一个地方到另一个地方可以采取的所有路线,
并且您可以通过不同的路线从一个地方到达另一个地方,因此我想要一个查询,该查询可以返回路线变化最少的最短路径。
比如我想从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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)