class Graph

Attributes

nodes[RW]

Public Class Methods

new() click to toggle source
# File lib/honey_mushroom/graph.rb, line 11
def initialize
  @nodes = {}
end

Public Instance Methods

add_edge(node_id, edge) click to toggle source
# File lib/honey_mushroom/graph.rb, line 33
def add_edge(node_id, edge)
  @nodes[node_id].edges << edge
end
add_node(value, edges=[]) click to toggle source
# File lib/honey_mushroom/graph.rb, line 15
def add_node(value, edges=[])
  node = Node.new({value: value, edges: edges})
  @nodes[node.id] = node
  self
end
adjacent?(node_id, edge) click to toggle source
# File lib/honey_mushroom/graph.rb, line 41
def adjacent?(node_id, edge)
  @nodes[node_id].edges.include?(edge)
end
delete_edge(node_id, edge_id) click to toggle source
# File lib/honey_mushroom/graph.rb, line 37
def delete_edge(node_id, edge_id)
  @nodes[node_id].edges.delete(edge_id)
end
delete_node(node_id) click to toggle source
# File lib/honey_mushroom/graph.rb, line 21
def delete_node(node_id)
  @nodes.delete(node_id)
end
get_id_from_value(value) click to toggle source
# File lib/honey_mushroom/graph.rb, line 58
def get_id_from_value(value)
  #TODO
  #find a fast way to get id from value
  #returns an array of all node ids with a given value
end
get_node_value(node_id) click to toggle source
# File lib/honey_mushroom/graph.rb, line 25
def get_node_value(node_id)
  @node[node_id].value
end
neighbors(node_id) click to toggle source
# File lib/honey_mushroom/graph.rb, line 45
def neighbors(node_id)
  @nodes[node_id].edges
end
set_node_value(node_id, value) click to toggle source
# File lib/honey_mushroom/graph.rb, line 29
def set_node_value(node_id, value)
  @nodes[node_id].value = value
end
to_s() click to toggle source

FIXIT: to_s broken for undirected graph

# File lib/honey_mushroom/graph.rb, line 50
def to_s
  s = ""
  @nodes.each do |node_id, node|
    s += "#{node_id} (#{node.value}) => #{node.edges} \n"
  end
  return s
end