class Knapsacker::Node

Attributes

item_index[R]
negative_child[RW]
positive_child[RW]
upper_bound[R]

Public Class Methods

new(item_index, item, upper_bound, parent) click to toggle source
# File lib/knapsacker/node.rb, line 8
def initialize(item_index, item, upper_bound, parent)
  @item_index  = item_index
  @item        = item
  @upper_bound = upper_bound
  @parent      = parent
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/knapsacker/node.rb, line 15
def <=>(other)
  if other.upper_bound == upper_bound
    other.item_index <=> item_index
  else
    other.upper_bound <=> upper_bound
  end
end
cap_negative_child!() click to toggle source
# File lib/knapsacker/node.rb, line 23
def cap_negative_child!
  @negative_child = :cap
end
cap_positive_child!() click to toggle source
# File lib/knapsacker/node.rb, line 27
def cap_positive_child!
  @positive_child = :cap
end
cost() click to toggle source
# File lib/knapsacker/node.rb, line 31
def cost
  if @parent
    @parent.cost + (@item ? @item.cost : 0)
  else
    0
  end
end
items() click to toggle source
# File lib/knapsacker/node.rb, line 39
def items
  if @parent
    if @item
      @parent.items << @item
    else
      @parent.items
    end
  else
    []
  end
end
leaf?() click to toggle source
# File lib/knapsacker/node.rb, line 51
def leaf?
  @negative_child == :cap && @positive_child == :cap
end
negative_child_growable?() click to toggle source
# File lib/knapsacker/node.rb, line 55
def negative_child_growable?
  @negative_child.nil?
end
positive_child_growable?() click to toggle source
# File lib/knapsacker/node.rb, line 59
def positive_child_growable?
  @positive_child.nil?
end
value() click to toggle source
# File lib/knapsacker/node.rb, line 63
def value
  if @parent
    @parent.value + (@item ? @item.value : 0)
  else
    0
  end
end