密码allShortestPaths仅返回一条路径吗?

时间:2019-05-07 16:07:23

标签: graph neo4j cypher py2neo

背景说明:

  • 我有一个像下面这样的图: enter image description here

  • 我想找到Node A和Node F之间的所有路径(就像我可以从A到达F的方式一样),然后我的Cypher像下面这样:

MATCH (start:kg:test), (end:kg:test),  p = allShortestPaths((start)-[*..8]-(end))
    where start.value = 'A' and end.value = 'F'
    RETURN start, end, p
  • 如我所料,此查询将返回整个图形,但仅返回A-> F(使用shortestPath函数返回相同的内容),如下所示: enter image description here

问题

  • 为什么该查询不会返回图中的所有不同路径?
  • 我是否滥用allShortestPaths函数?
  • 如何获取从节点A到节点F的所有路径?

谢谢

1 个答案:

答案 0 :(得分:1)

shortestPath()返回节点之间的最短路径(如果存在多个相同大小的路径,则仅返回找到的第一个路径)。

如果shortestPath()可能返回了多个路径(它们都具有相同的大小),那么allShortesPaths()将返回它们。

如果您只想查找两个节点之间的所有可能路径(路径的长度无关紧要,并且根本不关心最短的路径),则无需使用其中任何一个功能。

MATCH p=(start:kg:test)-[*..8]-(end:kg:test)
    where start.value = 'A' and end.value = 'F'
    RETURN start, end, p