Class: Djikstra::Node

Inherits:
Object
  • Object
show all
Defined in:
lib/djikstra/node.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Node

Returns a new instance of Node.



5
6
7
8
9
10
# File 'lib/djikstra/node.rb', line 5

def initialize(name)
  @name      = name
  @neighbors = []
  @weights   = {}
  reset
end

Instance Attribute Details

#distanceObject

Returns the value of attribute distance.



3
4
5
# File 'lib/djikstra/node.rb', line 3

def distance
  @distance
end

#nameObject

Returns the value of attribute name.



3
4
5
# File 'lib/djikstra/node.rb', line 3

def name
  @name
end

#neighborsObject

Returns the value of attribute neighbors.



3
4
5
# File 'lib/djikstra/node.rb', line 3

def neighbors
  @neighbors
end

#previous_nodeObject

Returns the value of attribute previous_node.



3
4
5
# File 'lib/djikstra/node.rb', line 3

def previous_node
  @previous_node
end

Instance Method Details

#>(number) ⇒ Object



30
31
32
33
34
35
# File 'lib/djikstra/node.rb', line 30

def >(number)
  return true if infinite?
  return false if number == :infinity
  
  distance > number
end

#distance_to(node) ⇒ Object



22
23
24
# File 'lib/djikstra/node.rb', line 22

def distance_to(node)
  @weights[node.name]
end

#infinite?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/djikstra/node.rb', line 26

def infinite?
  @distance == :infinity
end

#inspectObject Also known as: to_s



37
38
39
# File 'lib/djikstra/node.rb', line 37

def inspect
  %Q(#<Djikstra::Node name="#{name}" distance=#{distance}>)
end

#neighbor_of(node, weight) ⇒ Object



17
18
19
20
# File 'lib/djikstra/node.rb', line 17

def neighbor_of(node, weight)
  @neighbors.push node
  @weights[node.name] = weight
end

#resetObject



12
13
14
15
# File 'lib/djikstra/node.rb', line 12

def reset
  @distance      = :infinity
  @previous_node = nil
end