class MGraph::VertexEdgeTable
Public Class Methods
new()
click to toggle source
# File lib/mgraph/vertex_edge_table.rb, line 3 def initialize @vertex_edges = {} end
Public Instance Methods
<<(edge)
click to toggle source
# File lib/mgraph/vertex_edge_table.rb, line 7 def << edge add_edge(edge) self end
add_edge(edge)
click to toggle source
# File lib/mgraph/vertex_edge_table.rb, line 12 def add_edge edge edge.vertices.each do |vertex| (@vertex_edges[vertex] ||= Set.new) << edge end end
edges()
click to toggle source
# File lib/mgraph/vertex_edge_table.rb, line 18 def edges @vertex_edges.each_value.reduce(Set.new, :+).freeze end
incident_edges(vertex)
click to toggle source
# File lib/mgraph/vertex_edge_table.rb, line 22 def incident_edges vertex @vertex_edges.fetch(vertex, Set.new) end
neighbors(vertex)
click to toggle source
# File lib/mgraph/vertex_edge_table.rb, line 26 def neighbors vertex adjacencies = incident_edges(vertex).map(&:vertices).reduce(:+) || Set.new adjacencies - [vertex] end
vertices()
click to toggle source
# File lib/mgraph/vertex_edge_table.rb, line 31 def vertices @vertex_edges.keys.to_set end