计算从给定顶点到具有定义属性的顶点的最短距离

时间:2019-07-11 20:14:41

标签: graph graph-algorithm gremlin gremlin-server

图论中一个众所周知的问题是计算两个顶点之间的最短距离。

我想做的是找到给定顶点与具有特定属性值的最近顶点之间的最短距离(确切的顶点是未知的)。

例如,找到从V(1)到最近的顶点V(?),其中V(?).property(color)==red的最短距离。

我以前为此使用的一种方法是从焦点顶点迭代地向外走,询问沿途每个看不见的邻居是否有那个color=red

为了提高效率,我还限制了向外步骤的数量,即将搜索范围限制为 k个步骤社区

  1. 是否有更好的方法来解决此问题?
  2. 如何使用 Gremlin 对此进行编码? (我主要使用Python编写代码,不确定如何在整个算法之间进行迁移)

1 个答案:

答案 0 :(得分:1)

正如您所说,这是图论中的一个众所周知的问题,有很多算法可以解决此问题,例如Dijkstra的算法。您可以here来了解他们。

您还可以找到许多gremlin食谱here,包括简单的最短路径算法。

通过更改循环停止条件,我相信它将为您提供所需的结果:

g.V(1).repeat(out().simplePath()).until(has('color', 'red')).path().limit(1)