class GraphFilter

Public Class Methods

new(graph) click to toggle source
# File lib/graph_filter.rb, line 5
def initialize(graph)
  @graph = graph
end

Public Instance Methods

filter(source, destination) click to toggle source
# File lib/graph_filter.rb, line 9
def filter(source, destination)
  return @graph if source.nil? && destination.nil?
  if !source.nil? && destination.nil?
    return reduce(@graph, source)
  end
  if !destination.nil? && source.nil?
    return reduce(@graph.reverse, destination).reverse
  end
  search(@graph, source, destination)
end

Private Instance Methods

reduce(graph, source) click to toggle source
# File lib/graph_filter.rb, line 21
def reduce(graph, source)
  tree = graph.bfs_search_tree_from(source)
  graph.vertices_filtered_by { |v| tree.has_vertex? v }
end