a00005.html 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
  5. <title>GTL - Graph Template Library: bid_dijkstra Class Reference</title>
  6. <link href="doxygen.css" rel="stylesheet" type="text/css">
  7. </head>
  8. <body>
  9. <p class="links">
  10. <a href="../index.html">Home</a> |
  11. Documentation |
  12. <a href="../register.html">Download</a> |
  13. <a href="../platforms.html">Platforms</a> |
  14. <a href="../refer.html">Projects</a> |
  15. <a href="../lists.html">Mailing Lists</a> |
  16. <a href="../history.html">Version History</a>
  17. </p>
  18. <!-- Generated by Doxygen 1.5.3 -->
  19. <div class="tabs">
  20. <ul>
  21. <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
  22. <li class="current"><a href="classes.html"><span>Classes</span></a></li>
  23. <li><a href="files.html"><span>Files</span></a></li>
  24. <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  25. </ul>
  26. </div>
  27. <div class="tabs">
  28. <ul>
  29. <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
  30. <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
  31. <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
  32. <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  33. </ul>
  34. </div>
  35. <h1>bid_dijkstra Class Reference</h1><!-- doxytag: class="bid_dijkstra" --><!-- doxytag: inherits="algorithm" -->Dijkstra's Algorithm for computing a shortest path from a single source to a single target.
  36. <a href="#_details">More...</a>
  37. <p>
  38. <div class="dynheader">
  39. Inheritance diagram for bid_dijkstra:</div>
  40. <div class="dynsection">
  41. <p><center><img src="a00120.gif" border="0" usemap="#a00121" alt="Inheritance graph"></center>
  42. <map name="a00121">
  43. <area shape="rect" href="a00001.html" title="Abstract baseclass for all algoritm&#45;classes." alt="" coords="12,7,89,31"></map>
  44. <center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
  45. <div class="dynheader">
  46. Collaboration diagram for bid_dijkstra:</div>
  47. <div class="dynsection">
  48. <p><center><img src="a00122.gif" border="0" usemap="#a00123" alt="Collaboration graph"></center>
  49. <map name="a00123">
  50. <area shape="rect" href="a00001.html" title="Abstract baseclass for all algoritm&#45;classes." alt="" coords="428,5,505,29"><area shape="rect" href="a00020.html" title="A node in a graph." alt="" coords="441,92,492,116"><area shape="rect" title="s\nt" alt="" coords="489,101,497,109"><area shape="rect" title="s\nt" alt="" coords="695,172,703,180"><area shape="rect" title="int_node" alt="" coords="437,91,445,99"><area shape="rect" title="int_node" alt="" coords="489,89,497,97"><area shape="rect" href="a00021.html" title="node_map\&lt; int \&gt;" alt="" coords="405,145,528,169"><area shape="rect" title="source_mark\ntarget_mark" alt="" coords="524,161,532,169"><area shape="rect" title="source_mark\ntarget_mark" alt="" coords="663,179,671,187"><area shape="rect" href="a00019.html" title="ne_map\&lt; node, int, graph, allocator\&lt; int \&gt; \&gt;" alt="" coords="32,145,315,169"><area shape="rect" href="a00021.html" title="node_map\&lt; edge \&gt;" alt="" coords="397,204,536,228"><area shape="rect" title="pred\nsucc" alt="" coords="532,219,540,227"><area shape="rect" title="pred\nsucc" alt="" coords="683,197,691,205"><area shape="rect" href="a00019.html" title="ne_map\&lt; node, edge, graph, allocator\&lt; edge \&gt; \&gt;" alt="" coords="16,204,331,228"><area shape="rect" href="a00011.html" title="edge_map\&lt; double \&gt;" alt="" coords="392,252,541,276"><area shape="rect" title="weight" alt="" coords="537,261,545,269"><area shape="rect" title="weight" alt="" coords="696,197,704,205"><area shape="rect" href="a00019.html" title="ne_map\&lt; edge, double, graph, allocator\&lt; double \&gt; \&gt;" alt="" coords="7,252,340,276"><area shape="rect" href="a00021.html" title="node_map\&lt; double \&gt;" alt="" coords="392,311,541,335"><area shape="rect" title="source_dist\ntarget_dist" alt="" coords="537,323,545,331"><area shape="rect" title="source_dist\ntarget_dist" alt="" coords="704,197,712,205"><area shape="rect" href="a00019.html" title="ne_map\&lt; node, double, graph, allocator\&lt; double \&gt; \&gt;" alt="" coords="7,311,340,335"></map>
  51. <center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>
  52. <p>
  53. <a href="a00124.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
  54. <tr><td></td></tr>
  55. <tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
  56. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="da2e642d9f0582d30fe1dd51c4aa1899"></a><!-- doxytag: member="bid_dijkstra::shortest_path_node_iterator" ref="da2e642d9f0582d30fe1dd51c4aa1899" args="" -->
  57. typedef list&lt; <a class="el" href="a00020.html">node</a> &gt;<br>
  58. ::const_iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#da2e642d9f0582d30fe1dd51c4aa1899">shortest_path_node_iterator</a></td></tr>
  59. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Iterator type for traversing nodes on one shortest path. <br></td></tr>
  60. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="703d0faf9568bc25a9305faa61412fe1"></a><!-- doxytag: member="bid_dijkstra::shortest_path_edge_iterator" ref="703d0faf9568bc25a9305faa61412fe1" args="" -->
  61. typedef list&lt; <a class="el" href="a00010.html">edge</a> &gt;<br>
  62. ::const_iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#703d0faf9568bc25a9305faa61412fe1">shortest_path_edge_iterator</a></td></tr>
  63. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Iterator type for traversing edges on one shortest path. <br></td></tr>
  64. <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
  65. <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#1f9ddd95b88b24f45afe0966c2ae181b">bid_dijkstra</a> ()</td></tr>
  66. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor. <a href="#1f9ddd95b88b24f45afe0966c2ae181b"></a><br></td></tr>
  67. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#a3151b5cc93e97be55a843d9a0641dbb">~bid_dijkstra</a> ()</td></tr>
  68. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor. <a href="#a3151b5cc93e97be55a843d9a0641dbb"></a><br></td></tr>
  69. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#25dfbd432043e2e642e4dc71f4cb3208">source_target</a> (const <a class="el" href="a00020.html">node</a> &amp;s, const <a class="el" href="a00020.html">node</a> &amp;t)</td></tr>
  70. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets source and target node. <a href="#25dfbd432043e2e642e4dc71f4cb3208"></a><br></td></tr>
  71. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#33dd3a1cc5eb156b56a72235c9140e7d">weights</a> (const <a class="el" href="a00011.html">edge_map</a>&lt; double &gt; &amp;weight)</td></tr>
  72. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets weights of the edges. <a href="#33dd3a1cc5eb156b56a72235c9140e7d"></a><br></td></tr>
  73. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#0032d9b44c8b3f6f5733ff3ef94cf169">store_path</a> (bool set)</td></tr>
  74. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables or disables the storing of the shortest path. <a href="#0032d9b44c8b3f6f5733ff3ef94cf169"></a><br></td></tr>
  75. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#92c6790f5ea4a7417b593342c58a953b">check</a> (<a class="el" href="a00014.html">graph</a> &amp;G)</td></tr>
  76. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks whether the preconditions for bidirectional Dijkstra are satisfied. <a href="#92c6790f5ea4a7417b593342c58a953b"></a><br></td></tr>
  77. <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#1d2f36d3977ef90285442a269a03b919">run</a> (<a class="el" href="a00014.html">graph</a> &amp;G)</td></tr>
  78. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Runs shortest path <a class="el" href="a00001.html" title="Abstract baseclass for all algoritm-classes.">algorithm</a> on <code>G</code>. <a href="#1d2f36d3977ef90285442a269a03b919"></a><br></td></tr>
  79. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00020.html">node</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#0f86fdeb9adcd9677f96249cbd998dd2">source</a> () const </td></tr>
  80. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns source node. <a href="#0f86fdeb9adcd9677f96249cbd998dd2"></a><br></td></tr>
  81. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00020.html">node</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#d5331c84cfdb357d9c42937b4b234c81">target</a> () const </td></tr>
  82. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns target node if set, <code><a class="el" href="a00020.html#82669b7358b50bd8d7888d7df4ff8dfa">node::node()</a></code> else. <a href="#d5331c84cfdb357d9c42937b4b234c81"></a><br></td></tr>
  83. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#b5f65b4d4797b0d7d4e55b4b4513a709">store_path</a> () const </td></tr>
  84. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns whether the storing of the shortest path is enabled. <a href="#b5f65b4d4797b0d7d4e55b4b4513a709"></a><br></td></tr>
  85. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#d25a1377f1f6ffa4e9d272ad6550a1e0">reached</a> () const </td></tr>
  86. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns whether target is reachable from source. <a href="#d25a1377f1f6ffa4e9d272ad6550a1e0"></a><br></td></tr>
  87. <tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#583f79201cec68e2d52e592a885faef5">distance</a> () const </td></tr>
  88. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the distance from source node to target node. <a href="#583f79201cec68e2d52e592a885faef5"></a><br></td></tr>
  89. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00005.html#da2e642d9f0582d30fe1dd51c4aa1899">shortest_path_node_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#180d078fdae8023096c98bb91f00b902">shortest_path_nodes_begin</a> ()</td></tr>
  90. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns an iterator to the beginning (to the source node) of the shortest node path to target node. <a href="#180d078fdae8023096c98bb91f00b902"></a><br></td></tr>
  91. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00005.html#da2e642d9f0582d30fe1dd51c4aa1899">shortest_path_node_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#ac4fa2382cb641f2db3b0137377e7bbb">shortest_path_nodes_end</a> ()</td></tr>
  92. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns an iterator one after the end (one after target node) of the shortest node path to target node. <a href="#ac4fa2382cb641f2db3b0137377e7bbb"></a><br></td></tr>
  93. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00005.html#703d0faf9568bc25a9305faa61412fe1">shortest_path_edge_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#f5790a35a5833e83453d5f54463e86db">shortest_path_edges_begin</a> ()</td></tr>
  94. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns an iterator to the beginning edge of the shortest edge path to target node. <a href="#f5790a35a5833e83453d5f54463e86db"></a><br></td></tr>
  95. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="a00005.html#703d0faf9568bc25a9305faa61412fe1">shortest_path_edge_iterator</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#dc1265143044f8270c02ed34ab46da7c">shortest_path_edges_end</a> ()</td></tr>
  96. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns an iterator one after the end of a shortest edge path to target node. <a href="#dc1265143044f8270c02ed34ab46da7c"></a><br></td></tr>
  97. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00005.html#6ed0e7e34862ca44ae4f83eb3081ae3a">reset</a> ()</td></tr>
  98. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resets Dijkstra's bidirectional <a class="el" href="a00001.html" title="Abstract baseclass for all algoritm-classes.">algorithm</a>. <a href="#6ed0e7e34862ca44ae4f83eb3081ae3a"></a><br></td></tr>
  99. </table>
  100. <hr><a name="_details"></a><h2>Detailed Description</h2>
  101. Dijkstra's Algorithm for computing a shortest path from a single source to a single target.
  102. <p>
  103. <dl class="rcs" compact><dt><b>Date</b></dt><dd></dd></dl>
  104. <dl class="rcs" compact><dt><b>Revision</b></dt><dd></dd></dl>
  105. <p>
  106. This class implements Dijkstra's <a class="el" href="a00001.html" title="Abstract baseclass for all algoritm-classes.">algorithm</a> in a bidirectional manner for computing a shortest path from a single source to a single target in <img class="formulaInl" alt="$\mathcal{O}((|V| + |E|) log |V|)$" src="form_0.png"> worst case.<p>
  107. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00009.html" title="Dijkstra&#39;s Algorithm for computing single source shortest path.">dijkstra</a> <p>
  108. <a class="el" href="a00002.html" title="Bellman Ford algorithm.">bellman_ford</a></dd></dl>
  109. <dl class="author" compact><dt><b>Author:</b></dt><dd>Christian Bachmaier <a href="mailto:chris@infosun.fmi.uni-passau.de">chris@infosun.fmi.uni-passau.de</a> </dd></dl>
  110. <hr><h2>Constructor &amp; Destructor Documentation</h2>
  111. <a class="anchor" name="1f9ddd95b88b24f45afe0966c2ae181b"></a><!-- doxytag: member="bid_dijkstra::bid_dijkstra" ref="1f9ddd95b88b24f45afe0966c2ae181b" args="()" -->
  112. <div class="memitem">
  113. <div class="memproto">
  114. <table class="memname">
  115. <tr>
  116. <td class="memname">bid_dijkstra::bid_dijkstra </td>
  117. <td>(</td>
  118. <td class="paramname"> </td>
  119. <td>&nbsp;)&nbsp;</td>
  120. <td width="100%"></td>
  121. </tr>
  122. </table>
  123. </div>
  124. <div class="memdoc">
  125. <p>
  126. Default constructor.
  127. <p>
  128. Enables only the calculation of shortest paths.<p>
  129. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00001.html#b79e1ddec2f2afdf4b36b10724db8b15" title="Creates an algorithm object.">algorithm::algorithm</a> </dd></dl>
  130. </div>
  131. </div><p>
  132. <a class="anchor" name="a3151b5cc93e97be55a843d9a0641dbb"></a><!-- doxytag: member="bid_dijkstra::~bid_dijkstra" ref="a3151b5cc93e97be55a843d9a0641dbb" args="()" -->
  133. <div class="memitem">
  134. <div class="memproto">
  135. <table class="memname">
  136. <tr>
  137. <td class="memname">virtual bid_dijkstra::~bid_dijkstra </td>
  138. <td>(</td>
  139. <td class="paramname"> </td>
  140. <td>&nbsp;)&nbsp;</td>
  141. <td width="100%"><code> [virtual]</code></td>
  142. </tr>
  143. </table>
  144. </div>
  145. <div class="memdoc">
  146. <p>
  147. Destructor.
  148. <p>
  149. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00001.html#dca9b1e7fa3afd914519a9dbb44e9fd5" title="Destroys the algorithm object.">algorithm::~algorithm</a> </dd></dl>
  150. </div>
  151. </div><p>
  152. <hr><h2>Member Function Documentation</h2>
  153. <a class="anchor" name="25dfbd432043e2e642e4dc71f4cb3208"></a><!-- doxytag: member="bid_dijkstra::source_target" ref="25dfbd432043e2e642e4dc71f4cb3208" args="(const node &amp;s, const node &amp;t)" -->
  154. <div class="memitem">
  155. <div class="memproto">
  156. <table class="memname">
  157. <tr>
  158. <td class="memname">void bid_dijkstra::source_target </td>
  159. <td>(</td>
  160. <td class="paramtype">const <a class="el" href="a00020.html">node</a> &amp;&nbsp;</td>
  161. <td class="paramname"> <em>s</em>, </td>
  162. </tr>
  163. <tr>
  164. <td class="paramkey"></td>
  165. <td></td>
  166. <td class="paramtype">const <a class="el" href="a00020.html">node</a> &amp;&nbsp;</td>
  167. <td class="paramname"> <em>t</em></td><td>&nbsp;</td>
  168. </tr>
  169. <tr>
  170. <td></td>
  171. <td>)</td>
  172. <td></td><td></td><td width="100%"></td>
  173. </tr>
  174. </table>
  175. </div>
  176. <div class="memdoc">
  177. <p>
  178. Sets source and target node.
  179. <p>
  180. Must be executed every time before check and run of this algorithm.<p>
  181. <dl compact><dt><b>Parameters:</b></dt><dd>
  182. <table border="0" cellspacing="2" cellpadding="0">
  183. <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>source node </td></tr>
  184. <tr><td valign="top"></td><td valign="top"><em>t</em>&nbsp;</td><td>target node </td></tr>
  185. </table>
  186. </dl>
  187. </div>
  188. </div><p>
  189. <a class="anchor" name="33dd3a1cc5eb156b56a72235c9140e7d"></a><!-- doxytag: member="bid_dijkstra::weights" ref="33dd3a1cc5eb156b56a72235c9140e7d" args="(const edge_map&lt; double &gt; &amp;weight)" -->
  190. <div class="memitem">
  191. <div class="memproto">
  192. <table class="memname">
  193. <tr>
  194. <td class="memname">void bid_dijkstra::weights </td>
  195. <td>(</td>
  196. <td class="paramtype">const <a class="el" href="a00011.html">edge_map</a>&lt; double &gt; &amp;&nbsp;</td>
  197. <td class="paramname"> <em>weight</em> </td>
  198. <td>&nbsp;)&nbsp;</td>
  199. <td width="100%"></td>
  200. </tr>
  201. </table>
  202. </div>
  203. <div class="memdoc">
  204. <p>
  205. Sets weights of the edges.
  206. <p>
  207. This method <b>must</b> be called before check and run.<p>
  208. <dl compact><dt><b>Parameters:</b></dt><dd>
  209. <table border="0" cellspacing="2" cellpadding="0">
  210. <tr><td valign="top"></td><td valign="top"><em>weight</em>&nbsp;</td><td>weights of the edges </td></tr>
  211. </table>
  212. </dl>
  213. </div>
  214. </div><p>
  215. <a class="anchor" name="0032d9b44c8b3f6f5733ff3ef94cf169"></a><!-- doxytag: member="bid_dijkstra::store_path" ref="0032d9b44c8b3f6f5733ff3ef94cf169" args="(bool set)" -->
  216. <div class="memitem">
  217. <div class="memproto">
  218. <table class="memname">
  219. <tr>
  220. <td class="memname">void bid_dijkstra::store_path </td>
  221. <td>(</td>
  222. <td class="paramtype">bool&nbsp;</td>
  223. <td class="paramname"> <em>set</em> </td>
  224. <td>&nbsp;)&nbsp;</td>
  225. <td width="100%"></td>
  226. </tr>
  227. </table>
  228. </div>
  229. <div class="memdoc">
  230. <p>
  231. Enables or disables the storing of the shortest path.
  232. <p>
  233. If enabled for every node and <a class="el" href="a00010.html" title="An edge in a graph.">edge</a> on the shortest path from source to target will be stored.<p>
  234. <dl compact><dt><b>Parameters:</b></dt><dd>
  235. <table border="0" cellspacing="2" cellpadding="0">
  236. <tr><td valign="top"></td><td valign="top"><em>set</em>&nbsp;</td><td>true if path should be stored</td></tr>
  237. </table>
  238. </dl>
  239. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00009.html#4885d97269ef954ea17047ebf8a697ab" title="Predecessor node of node n on the shortest path from the source node.">dijkstra::predecessor_node</a> <p>
  240. <a class="el" href="a00009.html#f33f8c44fbe24f40e79c725b782b97dc" title="Predecessor edge of node n on the shortest path from the source node.">dijkstra::predecessor_edge</a> </dd></dl>
  241. </div>
  242. </div><p>
  243. <a class="anchor" name="92c6790f5ea4a7417b593342c58a953b"></a><!-- doxytag: member="bid_dijkstra::check" ref="92c6790f5ea4a7417b593342c58a953b" args="(graph &amp;G)" -->
  244. <div class="memitem">
  245. <div class="memproto">
  246. <table class="memname">
  247. <tr>
  248. <td class="memname">virtual int bid_dijkstra::check </td>
  249. <td>(</td>
  250. <td class="paramtype"><a class="el" href="a00014.html">graph</a> &amp;&nbsp;</td>
  251. <td class="paramname"> <em>G</em> </td>
  252. <td>&nbsp;)&nbsp;</td>
  253. <td width="100%"><code> [virtual]</code></td>
  254. </tr>
  255. </table>
  256. </div>
  257. <div class="memdoc">
  258. <p>
  259. Checks whether the preconditions for bidirectional Dijkstra are satisfied.
  260. <p>
  261. The Precondition are that the weights of the edges have been set and that the <a class="el" href="a00014.html" title="A directed or undirected graph.">graph</a> has at least one node. Additionally all edge weights must be <img class="formulaInl" alt="$\ge 0$" src="form_1.png"> and and source and target nodes must be found in <code>G</code>.<p>
  262. <dl compact><dt><b>Parameters:</b></dt><dd>
  263. <table border="0" cellspacing="2" cellpadding="0">
  264. <tr><td valign="top"></td><td valign="top"><em>G</em>&nbsp;</td><td><a class="el" href="a00014.html" title="A directed or undirected graph.">graph</a></td></tr>
  265. </table>
  266. </dl>
  267. <dl compact><dt><b>Return values:</b></dt><dd>
  268. <table border="0" cellspacing="2" cellpadding="0">
  269. <tr><td valign="top"></td><td valign="top"><em><a class="el" href="a00001.html#f1a0078e153aa99c24f9bdf0d97f67105114c20e4a96a76b5de9f28bf15e282b">algorithm::GTL_OK</a></em>&nbsp;</td><td>if algorithm can be applied </td></tr>
  270. <tr><td valign="top"></td><td valign="top"><em><a class="el" href="a00001.html#f1a0078e153aa99c24f9bdf0d97f67106fcf574690bbd6cf710837a169510dd7">algorithm::GTL_ERROR</a></em>&nbsp;</td><td>otherwise</td></tr>
  271. </table>
  272. </dl>
  273. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00009.html#9689f2628f76ddb3747ea18c91bd7041" title="Sets source node.">dijkstra::source</a> <p>
  274. dijkstra::weigths <p>
  275. <a class="el" href="a00001.html#76361fb03ad1cf643affc51821e43bed" title="Checks whether all preconditions are satisfied.">algorithm::check</a> </dd></dl>
  276. <p>Implements <a class="el" href="a00001.html#76361fb03ad1cf643affc51821e43bed">algorithm</a>.</p>
  277. </div>
  278. </div><p>
  279. <a class="anchor" name="1d2f36d3977ef90285442a269a03b919"></a><!-- doxytag: member="bid_dijkstra::run" ref="1d2f36d3977ef90285442a269a03b919" args="(graph &amp;G)" -->
  280. <div class="memitem">
  281. <div class="memproto">
  282. <table class="memname">
  283. <tr>
  284. <td class="memname">int bid_dijkstra::run </td>
  285. <td>(</td>
  286. <td class="paramtype"><a class="el" href="a00014.html">graph</a> &amp;&nbsp;</td>
  287. <td class="paramname"> <em>G</em> </td>
  288. <td>&nbsp;)&nbsp;</td>
  289. <td width="100%"><code> [virtual]</code></td>
  290. </tr>
  291. </table>
  292. </div>
  293. <div class="memdoc">
  294. <p>
  295. Runs shortest path <a class="el" href="a00001.html" title="Abstract baseclass for all algoritm-classes.">algorithm</a> on <code>G</code>.
  296. <p>
  297. This should return always <a class="el" href="a00001.html#f1a0078e153aa99c24f9bdf0d97f67105114c20e4a96a76b5de9f28bf15e282b">algorithm::GTL_OK</a>. The return value only tracks errors that might occur. Afterwards the result of the test can be accessed via access methods.<p>
  298. <dl compact><dt><b>Parameters:</b></dt><dd>
  299. <table border="0" cellspacing="2" cellpadding="0">
  300. <tr><td valign="top"></td><td valign="top"><em>G</em>&nbsp;</td><td><a class="el" href="a00014.html" title="A directed or undirected graph.">graph</a></td></tr>
  301. </table>
  302. </dl>
  303. <dl compact><dt><b>Return values:</b></dt><dd>
  304. <table border="0" cellspacing="2" cellpadding="0">
  305. <tr><td valign="top"></td><td valign="top"><em><a class="el" href="a00001.html#f1a0078e153aa99c24f9bdf0d97f67105114c20e4a96a76b5de9f28bf15e282b">algorithm::GTL_OK</a></em>&nbsp;</td><td>on success </td></tr>
  306. <tr><td valign="top"></td><td valign="top"><em><a class="el" href="a00001.html#f1a0078e153aa99c24f9bdf0d97f67106fcf574690bbd6cf710837a169510dd7">algorithm::GTL_ERROR</a></em>&nbsp;</td><td>otherwise</td></tr>
  307. </table>
  308. </dl>
  309. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00001.html#734b189509a8d6b56b65f8ff772d43ca" title="Applies algorithm to graph g.">algorithm::run</a> </dd></dl>
  310. <p>Implements <a class="el" href="a00001.html#734b189509a8d6b56b65f8ff772d43ca">algorithm</a>.</p>
  311. </div>
  312. </div><p>
  313. <a class="anchor" name="0f86fdeb9adcd9677f96249cbd998dd2"></a><!-- doxytag: member="bid_dijkstra::source" ref="0f86fdeb9adcd9677f96249cbd998dd2" args="() const " -->
  314. <div class="memitem">
  315. <div class="memproto">
  316. <table class="memname">
  317. <tr>
  318. <td class="memname"><a class="el" href="a00020.html">node</a> bid_dijkstra::source </td>
  319. <td>(</td>
  320. <td class="paramname"> </td>
  321. <td>&nbsp;)&nbsp;</td>
  322. <td width="100%"> const</td>
  323. </tr>
  324. </table>
  325. </div>
  326. <div class="memdoc">
  327. <p>
  328. Returns source node.
  329. <p>
  330. <dl class="return" compact><dt><b>Returns:</b></dt><dd>source node </dd></dl>
  331. </div>
  332. </div><p>
  333. <a class="anchor" name="d5331c84cfdb357d9c42937b4b234c81"></a><!-- doxytag: member="bid_dijkstra::target" ref="d5331c84cfdb357d9c42937b4b234c81" args="() const " -->
  334. <div class="memitem">
  335. <div class="memproto">
  336. <table class="memname">
  337. <tr>
  338. <td class="memname"><a class="el" href="a00020.html">node</a> bid_dijkstra::target </td>
  339. <td>(</td>
  340. <td class="paramname"> </td>
  341. <td>&nbsp;)&nbsp;</td>
  342. <td width="100%"> const</td>
  343. </tr>
  344. </table>
  345. </div>
  346. <div class="memdoc">
  347. <p>
  348. Returns target node if set, <code><a class="el" href="a00020.html#82669b7358b50bd8d7888d7df4ff8dfa">node::node()</a></code> else.
  349. <p>
  350. <dl class="return" compact><dt><b>Returns:</b></dt><dd>target node </dd></dl>
  351. </div>
  352. </div><p>
  353. <a class="anchor" name="b5f65b4d4797b0d7d4e55b4b4513a709"></a><!-- doxytag: member="bid_dijkstra::store_path" ref="b5f65b4d4797b0d7d4e55b4b4513a709" args="() const " -->
  354. <div class="memitem">
  355. <div class="memproto">
  356. <table class="memname">
  357. <tr>
  358. <td class="memname">bool bid_dijkstra::store_path </td>
  359. <td>(</td>
  360. <td class="paramname"> </td>
  361. <td>&nbsp;)&nbsp;</td>
  362. <td width="100%"> const</td>
  363. </tr>
  364. </table>
  365. </div>
  366. <div class="memdoc">
  367. <p>
  368. Returns whether the storing of the shortest path is enabled.
  369. <p>
  370. <dl class="return" compact><dt><b>Returns:</b></dt><dd><code>true</code> iff the storing of path is enabled.</dd></dl>
  371. <dl class="see" compact><dt><b>See also:</b></dt><dd>dijkstra::predecessor </dd></dl>
  372. </div>
  373. </div><p>
  374. <a class="anchor" name="d25a1377f1f6ffa4e9d272ad6550a1e0"></a><!-- doxytag: member="bid_dijkstra::reached" ref="d25a1377f1f6ffa4e9d272ad6550a1e0" args="() const " -->
  375. <div class="memitem">
  376. <div class="memproto">
  377. <table class="memname">
  378. <tr>
  379. <td class="memname">bool bid_dijkstra::reached </td>
  380. <td>(</td>
  381. <td class="paramname"> </td>
  382. <td>&nbsp;)&nbsp;</td>
  383. <td width="100%"> const</td>
  384. </tr>
  385. </table>
  386. </div>
  387. <div class="memdoc">
  388. <p>
  389. Returns whether target is reachable from source.
  390. <p>
  391. <dl class="return" compact><dt><b>Returns:</b></dt><dd><code>true</code> iff target was reached from source </dd></dl>
  392. </div>
  393. </div><p>
  394. <a class="anchor" name="583f79201cec68e2d52e592a885faef5"></a><!-- doxytag: member="bid_dijkstra::distance" ref="583f79201cec68e2d52e592a885faef5" args="() const " -->
  395. <div class="memitem">
  396. <div class="memproto">
  397. <table class="memname">
  398. <tr>
  399. <td class="memname">double bid_dijkstra::distance </td>
  400. <td>(</td>
  401. <td class="paramname"> </td>
  402. <td>&nbsp;)&nbsp;</td>
  403. <td width="100%"> const</td>
  404. </tr>
  405. </table>
  406. </div>
  407. <div class="memdoc">
  408. <p>
  409. Returns the distance from source node to target node.
  410. <p>
  411. <dl class="return" compact><dt><b>Returns:</b></dt><dd>distance if target is <a class="el" href="a00005.html#d25a1377f1f6ffa4e9d272ad6550a1e0" title="Returns whether target is reachable from source.">bid_dijkstra::reached</a>, <code>-1.0</code> else </dd></dl>
  412. </div>
  413. </div><p>
  414. <a class="anchor" name="180d078fdae8023096c98bb91f00b902"></a><!-- doxytag: member="bid_dijkstra::shortest_path_nodes_begin" ref="180d078fdae8023096c98bb91f00b902" args="()" -->
  415. <div class="memitem">
  416. <div class="memproto">
  417. <table class="memname">
  418. <tr>
  419. <td class="memname"><a class="el" href="a00005.html#da2e642d9f0582d30fe1dd51c4aa1899">shortest_path_node_iterator</a> bid_dijkstra::shortest_path_nodes_begin </td>
  420. <td>(</td>
  421. <td class="paramname"> </td>
  422. <td>&nbsp;)&nbsp;</td>
  423. <td width="100%"></td>
  424. </tr>
  425. </table>
  426. </div>
  427. <div class="memdoc">
  428. <p>
  429. Returns an iterator to the beginning (to the source node) of the shortest node path to target node.
  430. <p>
  431. <dl class="return" compact><dt><b>Returns:</b></dt><dd>beginning node iterator of the shortest path</dd></dl>
  432. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00005.html#0032d9b44c8b3f6f5733ff3ef94cf169" title="Enables or disables the storing of the shortest path.">bid_dijkstra::store_path</a></dd></dl>
  433. <dl class="note" compact><dt><b>Note:</b></dt><dd>The method requires that path calculation option was enabled during last run. </dd></dl>
  434. </div>
  435. </div><p>
  436. <a class="anchor" name="ac4fa2382cb641f2db3b0137377e7bbb"></a><!-- doxytag: member="bid_dijkstra::shortest_path_nodes_end" ref="ac4fa2382cb641f2db3b0137377e7bbb" args="()" -->
  437. <div class="memitem">
  438. <div class="memproto">
  439. <table class="memname">
  440. <tr>
  441. <td class="memname"><a class="el" href="a00005.html#da2e642d9f0582d30fe1dd51c4aa1899">shortest_path_node_iterator</a> bid_dijkstra::shortest_path_nodes_end </td>
  442. <td>(</td>
  443. <td class="paramname"> </td>
  444. <td>&nbsp;)&nbsp;</td>
  445. <td width="100%"></td>
  446. </tr>
  447. </table>
  448. </div>
  449. <div class="memdoc">
  450. <p>
  451. Returns an iterator one after the end (one after target node) of the shortest node path to target node.
  452. <p>
  453. <dl class="return" compact><dt><b>Returns:</b></dt><dd>shortest path end node iterator</dd></dl>
  454. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00005.html#0032d9b44c8b3f6f5733ff3ef94cf169" title="Enables or disables the storing of the shortest path.">bid_dijkstra::store_path</a></dd></dl>
  455. <dl class="note" compact><dt><b>Note:</b></dt><dd>The method requires that path calculation option was enabled during last run. </dd></dl>
  456. </div>
  457. </div><p>
  458. <a class="anchor" name="f5790a35a5833e83453d5f54463e86db"></a><!-- doxytag: member="bid_dijkstra::shortest_path_edges_begin" ref="f5790a35a5833e83453d5f54463e86db" args="()" -->
  459. <div class="memitem">
  460. <div class="memproto">
  461. <table class="memname">
  462. <tr>
  463. <td class="memname"><a class="el" href="a00005.html#703d0faf9568bc25a9305faa61412fe1">shortest_path_edge_iterator</a> bid_dijkstra::shortest_path_edges_begin </td>
  464. <td>(</td>
  465. <td class="paramname"> </td>
  466. <td>&nbsp;)&nbsp;</td>
  467. <td width="100%"></td>
  468. </tr>
  469. </table>
  470. </div>
  471. <div class="memdoc">
  472. <p>
  473. Returns an iterator to the beginning edge of the shortest edge path to target node.
  474. <p>
  475. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00005.html#0032d9b44c8b3f6f5733ff3ef94cf169" title="Enables or disables the storing of the shortest path.">bid_dijkstra::store_path</a></dd></dl>
  476. <dl class="return" compact><dt><b>Returns:</b></dt><dd>beginning edge iterator of the shortest path</dd></dl>
  477. <dl class="note" compact><dt><b>Note:</b></dt><dd>The method requires that path calculation option was enabled during last run. </dd></dl>
  478. </div>
  479. </div><p>
  480. <a class="anchor" name="dc1265143044f8270c02ed34ab46da7c"></a><!-- doxytag: member="bid_dijkstra::shortest_path_edges_end" ref="dc1265143044f8270c02ed34ab46da7c" args="()" -->
  481. <div class="memitem">
  482. <div class="memproto">
  483. <table class="memname">
  484. <tr>
  485. <td class="memname"><a class="el" href="a00005.html#703d0faf9568bc25a9305faa61412fe1">shortest_path_edge_iterator</a> bid_dijkstra::shortest_path_edges_end </td>
  486. <td>(</td>
  487. <td class="paramname"> </td>
  488. <td>&nbsp;)&nbsp;</td>
  489. <td width="100%"></td>
  490. </tr>
  491. </table>
  492. </div>
  493. <div class="memdoc">
  494. <p>
  495. Returns an iterator one after the end of a shortest edge path to target node.
  496. <p>
  497. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00005.html#0032d9b44c8b3f6f5733ff3ef94cf169" title="Enables or disables the storing of the shortest path.">bid_dijkstra::store_path</a></dd></dl>
  498. <dl class="return" compact><dt><b>Returns:</b></dt><dd>shortest path end edge iterator</dd></dl>
  499. <dl class="note" compact><dt><b>Note:</b></dt><dd>The method requires that predecessor calculation option was enabled during last run. </dd></dl>
  500. </div>
  501. </div><p>
  502. <a class="anchor" name="6ed0e7e34862ca44ae4f83eb3081ae3a"></a><!-- doxytag: member="bid_dijkstra::reset" ref="6ed0e7e34862ca44ae4f83eb3081ae3a" args="()" -->
  503. <div class="memitem">
  504. <div class="memproto">
  505. <table class="memname">
  506. <tr>
  507. <td class="memname">virtual void bid_dijkstra::reset </td>
  508. <td>(</td>
  509. <td class="paramname"> </td>
  510. <td>&nbsp;)&nbsp;</td>
  511. <td width="100%"><code> [virtual]</code></td>
  512. </tr>
  513. </table>
  514. </div>
  515. <div class="memdoc">
  516. <p>
  517. Resets Dijkstra's bidirectional <a class="el" href="a00001.html" title="Abstract baseclass for all algoritm-classes.">algorithm</a>.
  518. <p>
  519. It prepares the <a class="el" href="a00001.html" title="Abstract baseclass for all algoritm-classes.">algorithm</a> to be applied again, possibly to another <a class="el" href="a00014.html" title="A directed or undirected graph.">graph</a>.<p>
  520. <dl class="note" compact><dt><b>Note:</b></dt><dd>The weights are not reset. You can apply this algorithms</dd></dl>
  521. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="a00001.html#21aba63d066ae7897de6ca7d8425c408" title="Resets algorithm.">algorithm::reset</a> </dd></dl>
  522. <p>Implements <a class="el" href="a00001.html#21aba63d066ae7897de6ca7d8425c408">algorithm</a>.</p>
  523. </div>
  524. </div><p>
  525. <p class="links">
  526. <a href="http://www.uni-passau.de/">University of Passau</a>
  527. &nbsp;-&nbsp;
  528. <a href="http://www.fmi.uni-passau.de/">FMI</a>
  529. &nbsp;-&nbsp;
  530. <a href="http://www.fmi.uni-passau.de/fmi/lehrstuehle/brandenburg/">Theoretical
  531. Computer Science</a>
  532. </p>
  533. <div class="copyright">
  534. Design &copy; 2002, 2003 <a href="mailto:raitner@fmi.uni-passau.de">Marcus Raitner</a>, University of Passau
  535. </div>
  536. </body>
  537. </html>