有效地查找有向图中2个节点之间的所有路径 - RGL Gem

时间:2017-12-26 13:05:23

标签: ruby-on-rails ruby algorithm graph ruby-rgl

我正在努力找到一个有效的算法,它将为我提供有向图中2个节点之间的所有可能路径。

我发现RGL gem,到目前为止在计算方面最快。我可以使用gem中的Dijkstras Shortest Path Algorithm找到最短路径。

我用谷歌搜索,尽管得到了许多解决方案(ruby / non-ruby),要么无法转换代码,要么代码需要永远计算(效率低下)。

我主要是因为有人可以建议使用/调整来自RGL gem本身的各种算法(如果可能)或其他一些有效的方法来查找所有路径。

有向图的输入可以是数组数组..

[[1,2], [2,3], ..]

P.S。 :为了避免反对投票/评论,不幸的是我没有显示效率低下的代码片段,因为我在几天前丢弃它并且没有将其保存在任何地方以备记录或在此处重现。

1 个答案:

答案 0 :(得分:0)

主要问题是两个节点之间的路径数量在整个节点数量上呈指数增长。因此,找到两个节点之间的所有路径的任何算法在较大的图上将非常慢。

示例:

作为一个例子,想象一个n×n个节点的网格,每个节点连接到它们的4个邻居。现在,您要查找从左下方节点到右上方节点的所有路径。即使你只允许向右移动(r)并向上移动(u),你得到的路径也可以用长度为2n且字符数相等(r)和(u)的字符串来描述。这将为您提供“2n选择n”个可能的路径(忽略其他移动和循环)