class Silicium::Graphs::TopologicalSortClass

Attributes

post_order[RW]

Public Class Methods

new(graph) click to toggle source
# File lib/topological_sort.rb, line 34
def initialize(graph)
  @post_order = []
  @visited = []

  graph.nodes.each { |node| dfs(node) unless @visited.include?(node)}
end

Private Instance Methods

dfs(node) click to toggle source
# File lib/topological_sort.rb, line 42
def dfs(node)
  @visited << node
  node.adjacents.each { |adj_node| dfs(adj_node) unless @visited.include?(adj_node)}

  @post_order << node
end