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