Tinkerpop/Gremlin广度优先遍历

3
我正在尝试遍历一个图形以追踪特定节点的谱系。我希望我的查询以广度优先模式产生该节点的前身。请注意,每个节点可以有多个父节点。这个图可以有很多层深度,我想看到给定节点所有级别的结果。我正在尝试遵循方法,但遇到了异常“没有这样的属性:gather”。我在gremlin控制台版本3.3上尝试这个。
1个回答

3

使用barrier()步骤(Apache TinkerPop 3.3文档)。例如:

gremlin> g.V().sideEffect{println "first: ${it}"}.barrier().sideEffect{println "second: ${it}"}.iterate()
first: v[1]
first: v[2]
first: v[3]
first: v[4]
first: v[5]
first: v[6]
second: v[1]
second: v[2]
second: v[3]
second: v[4]
second: v[5]
second: v[6]

Stephen在这篇gremlin-users帖子中提供了BFS的另一个好描述。

首先,让我们假设Gremlin语言没有优化 - 执行以下操作:

g.V().out().out()

会导致深度优先搜索。您可以通过barrier()强制使用BFS:

g.V().out().barrier().out()

这将在继续下一步之前强制执行drain步骤。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接