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.
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 Method Summary collapse
-
#initialize(*params) ⇒ Object
This method is called by the specialized implementations upon tree creation.
-
#valid? ⇒ Boolean
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)
23 24 25 26 27 28 |
# File 'lib/jumoku/builders/raw_directed_tree.rb', line 23 def initialize(*params) super(*params) # Delegates to Plexus. class << self; self; end.module_eval do alias has_branch? has_arc? end end |
#valid? ⇒ Boolean
Checks whether the tree is really a valid tree, that is if the following conditions are fulfilled:
-
directed
-
acyclic
-
connected
38 39 40 |
# File 'lib/jumoku/builders/raw_directed_tree.rb', line 38 def valid? super and directed? end |