让我们假设在两个给定节点之间存在等距离的2条最短路径。我要按距离将所有节点分组。
示例图中有两条最短路径:
1)A - B - C - D - E
2)A - B - J - K - E
我期望的最终结果是:
B - 1
C,J - 2
D, K - 3
E - 4
一种方法是找到所有节点,然后循环查找长度,但这既不高效也不绝对正确。
请参考任何文档并参考您的答案,因为我找不到它。
答案 0 :(得分:2)
这是基于电影数据集的示例:
MATCH p=allshortestPaths( (bacon:Person {name:"Kevin Bacon"})-[*]-(meg:Person {name:"Meg Ryan"}))
WITH nodes(p) AS path
UNWIND range(0, size(path)-1, 1) AS index
WITH index, path[index] AS node
RETURN index, collect(DISTINCT node)
ORDER BY index ASC
找到路径后,我将对其进行遍历以创建index & node
的集合。然后,您只需根据索引(RETURN index, collect(DISTINCT node)
)进行汇总