查找图表的连接组件的最简单方法是什么? 没有强连接的组件,可以在TSort
模块中找到。
有一个库RGL
,它在模块RGL::Graph::each_connected_component
中有一个方法,但是如何构建图并为此图调用此方法?
我创建了像
这样的示例图表g = RGL::DirectedAdjacencyGraph[1,2, 2,3, 4,5]
并希望找到它的连接组件,[[1,2,3],[4,5]],但each_connected_component
g
class RGL::DirectedAdjacencyGraph
include RGL::Graph
end
没有帮助。
答案 0 :(得分:2)
可能有所帮助的两件事(警告:我不太了解这个宝石,可能有更好的方法)
您需要添加要求才能使该方法可用:require 'rgl/connected_components'
each_connected_component
采用无向图,但您可以根据需要将有向图转换为无向图
以下代码似乎可以满足您的需求:
require 'rgl/base'
require 'rgl/adjacency'
require 'rgl/connected_components'
g = RGL::DirectedAdjacencyGraph[1,2, 2,3, 4,5]
components = []
g.to_undirected.each_connected_component { |c| components << c }
p components
# => [[3, 2, 1], [5, 4]]