You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gremlin中仅返回终点未被其他路径使用过的路径?

从起点出发的单终点唯一路径高效生成方案

给定有向图结构如下:

A->B, B->D
A->C, C->D
A->E

需要生成从A出发的所有路径,但每个终点仅保留一条路径(例如终点D只需保留A->B->D或A->C->D其中一条),同时要求在大图场景下无需先收集所有路径,直接高效剪枝。

  • 核心逻辑:边遍历边标记,实时剪枝重复终点路径
    不用先把所有路径都找出来再去重,而是在遍历过程中就掐掉那些会指向已找到过终点的分支。

  • 具体操作步骤(以深度优先搜索为例)

    1. 搞个集合存已经找到过路径的终点,比如叫已覆盖终点,一开始是空的;
    2. 从A开始走DFS,每走一步就记下来当前的路径;
    3. 走到某个节点时:
      • 如果这个节点没后续节点(比如E、D),就看看它在不在已覆盖终点里:
        • 不在的话,就把当前路径存下来,再把这个节点加到集合里;
        • 已经在里面的话,直接往回走,这条分支不用再探了;
      • 如果这个节点还有下一个节点,就挨个走邻接节点,但只要后续走到终点发现已经被覆盖,就立刻终止这条分支。
  • 进阶优化:提前掐掉无效分支
    比如当D已经被标记为已覆盖后,再走到B或者C的时候,直接跳过它们的后续路径——反正最终都是到D,已经有一条路径了,没必要再走一遍。

  • 实际走一遍的例子

    1. 从A出发走A->B->D:到D了,D不在集合里,存下这条路径,把D加进集合;
    2. 回到A,再走A->C:C的下一个是D,D已经在集合里了,直接跳过这个分支;
    3. 接着走A->E:E不在集合里,存下这条路径,把E加进集合;
    4. 所有分支都走完,得到两条符合要求的路径。

内容的提问来源于stack exchange,提问作者Avner Levy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:10:55