[edit] 要約 tsort はトポロジカルソートと強連結成分に関するモジュールを提供します。 Example require 'tsort' class Hash include TSort alias tsort_each_node each_key def tsort_each_child(node, &block) fetch(node).each(&block) end end {1=>[2, 3], 2=>[3], 3=>[], 4=>[]}.tsort #=> [3, 2, 1, 4] {1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}.strongly_connected_components #=> [[4], [2, 3], [1]] より現実的な例 非常に単純な `make' に似たツールは以下のように実装できます。 require 'tsort'