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

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



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

Returns:

  • (Boolean)


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

def valid?
  super and directed?
end