Module: Plexus::Labels
- Included in:
- GraphBuilder
- Defined in:
- lib/plexus/labels.rb
Overview
This module add support for labels.
The graph labeling process consist in assigning labels, traditionally represented by integers, to the edges or vertices, or both, of a graph. Plexus recommands you abide by this rule and do use integers as labels.
Some algorithms can make use of labeling (sea Search for instance).
Instance Method Summary collapse
-
#[](u) ⇒ Object
Return a label for an edge or vertex.
-
#[]=(u, value) ⇒ Object
Set a label for an edge or vertex.
-
#clear_all_labels ⇒ Object
Delete all graph labels.
-
#delete_label(u) ⇒ Object
Delete a label entirely.
-
#edge_label(u, v = nil, n = nil) ⇒ Object
Get the label for an edge.
-
#edge_label_delete(u, v = nil, n = nil) ⇒ Object
Delete an edge label.
-
#edge_label_set(u, v = nil, l = nil, n = nil) ⇒ Object
Set the label for an edge.
-
#vertex_label(v) ⇒ Object
Get the label for an edge.
-
#vertex_label_delete(v) ⇒ Object
Delete a vertex label.
-
#vertex_label_set(v, l) ⇒ Object
Set the label for an edge.
Instance Method Details
#[](u) ⇒ Object
Return a label for an edge or vertex.
12 13 14 |
# File 'lib/plexus/labels.rb', line 12 def [](u) (u.is_a? Plexus::Arc) ? edge_label(u) : vertex_label(u) end |
#[]=(u, value) ⇒ Object
Set a label for an edge or vertex.
17 18 19 |
# File 'lib/plexus/labels.rb', line 17 def []=(u, value) (u.is_a? Plexus::Arc) ? edge_label_set(u, value) : vertex_label_set(u, value) end |
#clear_all_labels ⇒ Object
Delete all graph labels.
51 52 53 54 |
# File 'lib/plexus/labels.rb', line 51 def clear_all_labels @vertex_labels = {} @edge_labels = {} end |
#delete_label(u) ⇒ Object
Delete a label entirely.
22 23 24 |
# File 'lib/plexus/labels.rb', line 22 def delete_label(u) (u.is_a? Plexus::Arc) ? edge_label_delete(u) : vertex_label_delete(u) end |
#edge_label(u, v = nil, n = nil) ⇒ Object
Get the label for an edge.
38 39 40 41 |
# File 'lib/plexus/labels.rb', line 38 def edge_label(u, v = nil, n = nil) u = edge_convert(u,v,n) edge_label_dict[u] end |
#edge_label_delete(u, v = nil, n = nil) ⇒ Object
Delete an edge label.
57 58 59 60 |
# File 'lib/plexus/labels.rb', line 57 def edge_label_delete(u, v = nil, n = nil) u = edge_convert(u, v, n) edge_label_dict.delete(u) end |
#edge_label_set(u, v = nil, l = nil, n = nil) ⇒ Object
Set the label for an edge.
44 45 46 47 48 |
# File 'lib/plexus/labels.rb', line 44 def edge_label_set(u, v = nil, l = nil, n = nil) u.is_a?(Plexus::Arc) ? l = v : u = edge_convert(u, v, n) edge_label_dict[u] = l self end |
#vertex_label(v) ⇒ Object
Get the label for an edge.
27 28 29 |
# File 'lib/plexus/labels.rb', line 27 def vertex_label(v) vertex_label_dict[v] end |
#vertex_label_delete(v) ⇒ Object
Delete a vertex label.
63 64 65 |
# File 'lib/plexus/labels.rb', line 63 def vertex_label_delete(v) vertex_label_dict.delete(v) end |
#vertex_label_set(v, l) ⇒ Object
Set the label for an edge.
32 33 34 35 |
# File 'lib/plexus/labels.rb', line 32 def vertex_label_set(v, l) vertex_label_dict[v] = l self end |