源和多个目的地之间的最短路径
Shortest path between a source and multiple destinations
我有一个 Neo4j 图表,看起来像这样
它具有使用 CHILD_OF 关系的关系层次结构。
所有绿色节点(参见)都是 Books 上的权利。
parent 可以看到的所有书籍对 child 也可以看到,但反过来不可以。
此外,child 有可能直接查看书籍而无需涉及 parent。
这里的问题是找到从Child到书本的最短路径。
在这种情况下,C1 有 2 条路径(通过权利)到 Book1,但只有 1 条路径到 Book2。 none 到 Book3.
Neo4j Cypher 查询应该return只有从 C1 到所有书籍的最短路径。
我尝试使用 Neo4j 最短路径函数,但它不起作用。
MATCH (c:Child {name:'C1'} ),
(b:Book),
p = shortestPath((c)-[*]-(b))
RETURN p
此查询的输出 returns this:
所需的最终图表应如下所示:
您需要使关系具有从 Child 到 Book 的方向性。这是因为当你输入 * 时,它会包含一个你不需要的从 book3 到 library 的路径。
MATCH (c:Child {name:'C1'} ),
(b:Book),
p = shortestPath((c)-[*]->(b))
RETURN p
我有一个 Neo4j 图表,看起来像这样
它具有使用 CHILD_OF 关系的关系层次结构。
所有绿色节点(参见)都是 Books 上的权利。
parent 可以看到的所有书籍对 child 也可以看到,但反过来不可以。
此外,child 有可能直接查看书籍而无需涉及 parent。
这里的问题是找到从Child到书本的最短路径。
在这种情况下,C1 有 2 条路径(通过权利)到 Book1,但只有 1 条路径到 Book2。 none 到 Book3.
Neo4j Cypher 查询应该return只有从 C1 到所有书籍的最短路径。
我尝试使用 Neo4j 最短路径函数,但它不起作用。
MATCH (c:Child {name:'C1'} ),
(b:Book),
p = shortestPath((c)-[*]-(b))
RETURN p
此查询的输出 returns this:
所需的最终图表应如下所示:
您需要使关系具有从 Child 到 Book 的方向性。这是因为当你输入 * 时,它会包含一个你不需要的从 book3 到 library 的路径。
MATCH (c:Child {name:'C1'} ),
(b:Book),
p = shortestPath((c)-[*]->(b))
RETURN p