【发布时间】:2019-05-31 16:08:33
【问题描述】:
我们的应用需要检查两个顶点是否通过任意路径连接。
应用不关心路径中的分段或最短路径。
应用只需要知道两个顶点是否共享一个公共子图。
我的问题:给定两个分别具有 id(s) A 和 B 的顶点,什么 gremlin 查询可以很好地回答“A 和 B 是否以某种方式连接?”的问题。
【问题讨论】:
标签: gremlin
我们的应用需要检查两个顶点是否通过任意路径连接。
应用不关心路径中的分段或最短路径。
应用只需要知道两个顶点是否共享一个公共子图。
我的问题:给定两个分别具有 id(s) A 和 B 的顶点,什么 gremlin 查询可以很好地回答“A 和 B 是否以某种方式连接?”的问题。
【问题讨论】:
标签: gremlin
这个应该可以解决问题:
g.V(A).
repeat(both().dedup()).
until(hasId(B)).
hasNext()
从A开始,然后开始访问邻居,不要访问任何顶点两次,如果到达B就停止。显然,如果您正在处理巨大的子图,这可能会遇到超时(或内存问题)。
【讨论】:
until(hasId(B).or().loops().is(20)),但是结果当然是false,但是这两个顶点仍然可以是同一个子图的一部分,只是相距很远。