【问题标题】:Shortest path between a source and multiple destinations源和多个目的地之间的最短路径
【发布时间】:2021-02-26 13:55:50
【问题描述】:

我有一个 Neo4j 图表,看起来像这样

它具有使用 CHILD_OF 关系的关系层次结构。
所有绿色节点(见)都是书籍的权利。
父母可以看到的所有书籍也对孩子可见,但反之则不行。
此外,孩子可以直接看书,而无需父母参与。

这里的问题是找到从孩子到书本的最短路径。
在这种情况下,C1 有 2 条路径(通过权利)到 Book1,但只有 1 条到 Book2。 Book3 没有。

Neo4j Cypher 查询应该只返回从 C1 到所有书籍的最短路径。

我尝试使用 Neo4j shortestPath 函数,但它不起作用。

MATCH (c:Child {name:'C1'} ),
  (b:Book),
  p = shortestPath((c)-[*]-(b))
RETURN p

这个查询的输出返回这个:

所需的最终图形应如下所示:

【问题讨论】:

  • 你把预期的结果,一个示例图和详细的问题;干得好,阿米特

标签: graph neo4j cypher


【解决方案1】:

您需要使关系从 Child 到 Book 是定向的。这是因为当您输入 * 时,它将包含从 book3 到您不需要的库的路径。

MATCH (c:Child {name:'C1'} ),
  (b:Book),
  p = shortestPath((c)-[*]->(b))
RETURN p

【讨论】:

  • 我实际上从你的画中得到了暗示! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
相关资源
最近更新 更多