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

#_options

Instance Method Summary collapse

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)

Parameters:

  • *params (Hash)

    the initialization parameters

Returns:

  • enhanced Plexus::DirectedGraph



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

Returns:

  • (true, false)


39
40
41
# File 'lib/jumoku/builders/raw_directed_tree.rb', line 39

def valid?
  super and directed?
end