【问题标题】:Tinkerpop/Gremlin Breadth first traversalTinkerpop/Gremlin 广度优先遍历
【发布时间】:2017-09-21 17:28:41
【问题描述】:

我正在尝试遍历图表以跟踪特定节点的沿袭。我希望我的查询以广度优先模式产生该节点的先行词。注意,每个节点可以有多个父节点。图表可以有很多层,我想查看给定节点的所有级别的结果。我正在尝试遵循this 配方,但遇到了异常没有这样的属性:收集。我正在 gremlin 控制台版本 3.3 上尝试此操作

【问题讨论】:

    标签: graph gremlin tinkerpop graph-traversal


    【解决方案1】:

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

    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 post 中对 BFS 进行了另一个很好的描述。

    首先,让我们假设一个没有优化的 Gremlin 语言 - 做:

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

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

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

    这基本上会在进行下一步之前强制排水之前的步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      • 2011-07-12
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多