lib/inventory_refresh/graph.rb
def build_feedback_edge_set(edges, fixed_edges)
      edges             = edges.dup
      acyclic_edges     = fixed_edges.dup
      feedback_edge_set = []

      while edges.present?
        edge = edges.shift
        if detect_cycle(edge, acyclic_edges)
          feedback_edge_set << edge
        else
          acyclic_edges << edge
        end
      end

      feedback_edge_set
    end
def build_feedback_edge_set(edges, fixed_edges)
      edges             = edges.dup
      acyclic_edges     = fixed_edges.dup
      feedback_edge_set = []

      while edges.present?
        edge = edges.shift
        if detect_cycle(edge, acyclic_edges)
          feedback_edge_set << edge
        else
          acyclic_edges << edge
        end
      end

      feedback_edge_set
    end
def build_feedback_edge_set ( edges , fixed_edges ) edges = edges . dup acyclic_edges = fixed_edges . dup feedback_edge_set = [ ] while edges . present? edge = edges . shift if detect_cycle ( edge , acyclic_edges ) feedback_edge_set << edge else acyclic_edges << edge end end feedback_edge_set end
Builds a feedback edge set, which is a set of edges creating a cycle

 @param edges [Array<Array>] List of edges, where edge is defined as [InventoryCollection, InventoryCollection],
        these are all edges except fixed_edges
 @param fixed_edges [Array<Array>] List of edges, where edge is defined as [InventoryCollection, InventoryCollection],
        fixed edges are those that can't be moved
Builds a feedback edge set which is a set of edges creating a cycle