class Graph

Public Class Methods

new() click to toggle source
# File lib/data_structures/graph.rb, line 4
def initialize
  @adjacency_list = Hash.new { |h, k| h[k] = Set.new }
end

Public Instance Methods

[](id) click to toggle source
# File lib/data_structures/graph.rb, line 8
def [](id)
  @adjacency_list[id]
end
add_vertex(id) click to toggle source
# File lib/data_structures/graph.rb, line 12
def add_vertex(id)
  raise RuntimeError.new("#{id} is already a Vertex") if @adjacency_list.include?(id)
  @adjacency_list[id]
end
adjacent?(id1, id2) click to toggle source
# File lib/data_structures/graph.rb, line 36
def adjacent?(id1, id2)
  raise RuntimeError.new("#{id1} is not a Vertex") unless @adjacency_list.include?(id1)
  raise RuntimeError.new("#{id2} is not a Vertex") unless @adjacency_list.include?(id2)
  @adjacency_list[id1].include?(id2)
end
adjacent_vertices(id) click to toggle source
# File lib/data_structures/graph.rb, line 42
def adjacent_vertices(id)
  raise RuntimeError.new("#{id} is not a Vertex") unless @adjacency_list.include?(id)
  @adjacency_list[id]
end
create_edge(id1, id2) click to toggle source
# File lib/data_structures/graph.rb, line 22
def create_edge(id1, id2)
  raise RuntimeError.new("#{id1} is not a Vertex") unless @adjacency_list.include?(id1)
  raise RuntimeError.new("#{id2} is not a Vertex") unless @adjacency_list.include?(id2)
  @adjacency_list[id1].add(id2)
  @adjacency_list[id2].add(id1)
end
delete_edge(id1, id2) click to toggle source
# File lib/data_structures/graph.rb, line 29
def delete_edge(id1, id2)
  raise RuntimeError.new("#{id1} is not a Vertex") unless @adjacency_list.include?(id1)
  raise RuntimeError.new("#{id1} is not connected to #{id2}") unless @adjacency_list[id1].include?(id2)
  @adjacency_list[id1].delete(id2)
  @adjacency_list[id2].delete(id1)
end
delete_vertex(id) click to toggle source
# File lib/data_structures/graph.rb, line 17
def delete_vertex(id)
  raise RuntimeError.new("#{id} is not a Vertex") unless @adjacency_list.include?(id)
  @adjacency_list.delete(id)
end