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