Class: FindBeads::BeadClumping::Graph
- Inherits:
-
Object
- Object
- FindBeads::BeadClumping::Graph
- Defined in:
- lib/find_beads/bead_clumps.rb
Instance Method Summary collapse
- #add_edge_between(l0, l1) ⇒ Object
- #add_vertex(v) ⇒ Object
- #build_connected_dfs(current, visited) ⇒ Object
- #connected?(l0, l1) ⇒ Boolean
- #direct_connected?(l0, l1) ⇒ Boolean
- #each(&b) ⇒ Object
- #get_connected_subgraph(l0) ⇒ Object
-
#initialize ⇒ Graph
constructor
A new instance of Graph.
- #new_vertex(l) ⇒ Object
- #vertex(label) ⇒ Object (also: #[])
Constructor Details
#initialize ⇒ Graph
Returns a new instance of Graph.
85 86 87 |
# File 'lib/find_beads/bead_clumps.rb', line 85 def initialize @vertices = {} end |
Instance Method Details
#add_edge_between(l0, l1) ⇒ Object
111 112 113 |
# File 'lib/find_beads/bead_clumps.rb', line 111 def add_edge_between(l0, l1) self[l0].connect(self[l1]) end |
#add_vertex(v) ⇒ Object
89 90 91 |
# File 'lib/find_beads/bead_clumps.rb', line 89 def add_vertex(v) @vertices[v.label]= v end |
#build_connected_dfs(current, visited) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/find_beads/bead_clumps.rb', line 120 def build_connected_dfs(current, visited) visited << current current.each do |e| [:v0, :v1].each do |vi| v = e.send(vi) if v.nil? puts e.inspect raise end unless visited.include?(v) then build_connected_dfs(v, visited) end end end visited end |
#connected?(l0, l1) ⇒ Boolean
115 116 117 118 |
# File 'lib/find_beads/bead_clumps.rb', line 115 def connected?(l0, l1) sg = get_connected_subgraph(l0) sg.include?(self[l1]) end |
#direct_connected?(l0, l1) ⇒ Boolean
107 108 109 |
# File 'lib/find_beads/bead_clumps.rb', line 107 def direct_connected?(l0, l1) self[l0].connected_to? self[l1] end |
#each(&b) ⇒ Object
101 102 103 |
# File 'lib/find_beads/bead_clumps.rb', line 101 def each(&b) @vertices.each &b end |
#get_connected_subgraph(l0) ⇒ Object
152 153 154 155 156 |
# File 'lib/find_beads/bead_clumps.rb', line 152 def get_connected_subgraph(l0) build_connected_dfs(self[l0], Set.new) end |
#new_vertex(l) ⇒ Object
93 94 95 |
# File 'lib/find_beads/bead_clumps.rb', line 93 def new_vertex(l) @vertices[l] = Vertex.new(l) end |
#vertex(label) ⇒ Object Also known as: []
97 98 99 |
# File 'lib/find_beads/bead_clumps.rb', line 97 def vertex(label) @vertices[label] end |