gpt4 book ai didi

java - Gremlin 中的广度优先枚举

转载 作者:行者123 更新时间:2023-11-29 03:31:42 24 4
gpt4 key购买 nike

我正在尝试使用 Gremlin 进行广度优先枚举,但我无法找到一种方法来输出枚举期间观察到的所有步骤。我只能打印出最后一次迭代的结果。

我的问题是,给定一个这样的起始节点,我如何使用 Gremlin 跟踪所有路径(不知道整体深度)并打印出我沿途找到的所有内容?

study=g.v('myId')

我已经尝试过分散方法、循环方法(尽管如果我理解正确的话,这两种方法似乎都需要事先了解路径的实际长度)

非常感谢!

最佳答案

您没有提供任何重要的代码来说明您是如何使用循环的,但我认为通过正确的参数您可以让它执行您想要的操作:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.v(1).as('x').out.gather.scatter.loop('x'){true}{true}
==>v[2]
==>v[4]
==>v[3]
==>v[5]
==>v[3]

我假设您通过聚集/分散和指向回 x 的循环的第一部分理解了代码。因此,考虑到这个假设,我将重点关注传递给循环的两个闭包。

传递给循环的第一个闭包告诉 Gremlin 何时跳出循环。简单地返回 true,就是说要耗尽循环。根据图表的结构,这可能是不可取的,因为您可能要等待很长时间才能返回结果。至少您应该考虑将其设置为不可能高的值,这样如果您确实遇到了图中的某个循环,您的遍历就会中断。

第二个闭包被称为“emit 闭包”。您可以阅读更多相关信息 here ,但基本上它确定是否应返回管道中的中间对象(不仅仅是循环末尾的中间对象)。在这种情况下,您可以看到我只是将该值设置为 true,这样它就会在循环的所有步骤中发出所有对象。

关于java - Gremlin 中的广度优先枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com