title: Dijkstra’s shortest path algorithm
body: <p>The following is algorithm summary given to us by our professor.  </p>
  
  <p><em>What is the parent of a node in a graph as referred to in step 3?</em>  I'm a little confused as I though that the nodes only had neighbors and doesn't have a parent?</p>
  
  <p>My second question is about step 3, "pick up the index’th record in stack."  Since a stack only allows you to view the top, I'm not sure <em>what it means by picking up the index'th record?</em>  </p>
  
  <p>Dijkstra’s shortest path:</p>
  
  <pre><code>Step 0: if s == d, stop.
  Step 1: current node c= s, c.length = 0, stack.push (c, its length, and parent). 
          If u is the source s then no need for parent.
  Step 2: min = 0, hop = infinite, index = 1
  Step 3: pick up the index’th record in stack, say node u, its length u.length, 
          and its parent w.
  Step 4: find a neighbor of u in the table of neighbors, say v, such that v is 
          not found in any item in stack and &lt;u,v&gt; +u.length&lt; hop. 
  Step 5: if such a neighbor is found, hop=min=u.length + &lt;u,v&gt; and record_node = v
  Step 6: go to step 4 until all the neighbors of u have been tried (all can be 
          found in stack).
  Step 7: index ++, go to step 3 until all the nodes have been tried (found in 
          stack).
  Step 8: c = record_node, c.length = min, stack_push(c, c.length, u). If c == d 
          stop the entire process and goes to step 9 for data collection, 
          otherwise go to step 2.
  Step 9: (t, d.length, and t.parent) = (d, d.length, and d.parent) in stack, 
          keep searching on (t.parent, t.parent.length, t.parent.parent), 
          until t.parent = s.
  </code></pre>