Module: Jumoku::RawDirectedTreeBuilder
- Includes:
- Shared, Plexus::DirectedGraphBuilder
- Included in:
- ArborescenceBuilder, RawDirectedTree
- Defined in:
- lib/jumoku/builders/raw_directed_tree.rb
Overview
A RawDirectedTree relax the undirected constraint of trees as defined in Graph Theory. They remain connected and acyclic though.
It thus uses ‘Plexus::DirectedGraphBuilder` as its backend.
It offers limited functionalities, therefore the main tree structure you’ll likely to use is its extended version, Arborescence.
Instance Attribute Summary
Attributes included from Shared
Instance Method Summary collapse
-
#initialize(*params) ⇒ Object
This method is called by the specialized implementations upon tree creation.
-
#valid? ⇒ true, false
Checks whether the tree is really a valid tree, that is if the following conditions are fulfilled:.
Methods included from Shared
#add_branch!, #add_node!, #branches, #empty?, included, #nodes, #remove_branch!, #remove_node!, #terminal?, #terminal_nodes
Instance Method Details
#initialize(*params) ⇒ Object
This method is called by the specialized implementations upon tree creation.
Initialization parameters can include:
-
an array of branches to add
-
one or several trees to copy (will be merged if multiple)
24 25 26 27 28 |
# File 'lib/jumoku/builders/raw_directed_tree.rb', line 24 def initialize(*params) super(*params) # Delegates to Plexus. @_options = (params.pop if params.last.is_a? Hash) || {} _delay { alias has_branch? has_arc? } end |
#valid? ⇒ true, false
Checks whether the tree is really a valid tree, that is if the following conditions are fulfilled:
-
directed
-
acyclic
-
connected
39 40 41 |
# File 'lib/jumoku/builders/raw_directed_tree.rb', line 39 def valid? super and directed? end |