Files
ortools-clone/docs/cpp_graph/classoperations__research_1_1HamiltonianPathSolver.html
Laurent Perron 6230c8e7a4 polish cpp doc
2019-07-12 13:25:23 -07:00

493 lines
31 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>OR-Tools</title>
<meta http-equiv="Content-Type" content="text/html;"/>
<meta charset="utf-8"/>
<!--<link rel='stylesheet' type='text/css' href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>-->
<link rel="stylesheet" type="text/css" href="ortools.css" title="default" media="screen,print" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
</head>
<body>
<div id="banner-container">
<div id="banner">
<span id="sfml">OR-Tools 7.2</span>
</div>
</div>
<link rel="icon" href="https://developers.google.com/optimization/images/orLogo.png">
<div id="content">
<!-- Generated by Doxygen 1.8.15 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classoperations__research_1_1HamiltonianPathSolver.html','');});
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classoperations__research_1_1HamiltonianPathSolver-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">operations_research::HamiltonianPathSolver&lt; CostType, CostFunction &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename CostType, typename CostFunction&gt;<br />
class operations_research::HamiltonianPathSolver&lt; CostType, CostFunction &gt;</h3>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00453">453</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aa5992cec63596c5d6c2ed51fc4f7c9c6"><td class="memItemLeft" align="right" valign="top">typedef uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#aa5992cec63596c5d6c2ed51fc4f7c9c6">Integer</a></td></tr>
<tr class="memdesc:aa5992cec63596c5d6c2ed51fc4f7c9c6"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">HamiltonianPathSolver</a> computes a minimum Hamiltonian path starting at node 0 over a graph defined by a cost matrix. <a href="#aa5992cec63596c5d6c2ed51fc4f7c9c6">More...</a><br /></td></tr>
<tr class="separator:aa5992cec63596c5d6c2ed51fc4f7c9c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe5925b90aecb674fffc3910b93cc925"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classoperations__research_1_1Set.html">Set</a>&lt; <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#aa5992cec63596c5d6c2ed51fc4f7c9c6">Integer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#afe5925b90aecb674fffc3910b93cc925">NodeSet</a></td></tr>
<tr class="separator:afe5925b90aecb674fffc3910b93cc925"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a1e754bd18247e695674bbb1a3d1187f3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#a1e754bd18247e695674bbb1a3d1187f3">HamiltonianPathSolver</a> (CostFunction cost)</td></tr>
<tr class="separator:a1e754bd18247e695674bbb1a3d1187f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcd88e0846cbbfc84ecd93ab3cd5cb77"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#adcd88e0846cbbfc84ecd93ab3cd5cb77">HamiltonianPathSolver</a> (int num_nodes, CostFunction cost)</td></tr>
<tr class="separator:adcd88e0846cbbfc84ecd93ab3cd5cb77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a553d0693bed2f847684666077241647e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#a553d0693bed2f847684666077241647e">ChangeCostMatrix</a> (CostFunction cost)</td></tr>
<tr class="memdesc:a553d0693bed2f847684666077241647e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Replaces the cost matrix while avoiding re-allocating memory. <a href="#a553d0693bed2f847684666077241647e">More...</a><br /></td></tr>
<tr class="separator:a553d0693bed2f847684666077241647e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89195d0a67dda5156b3559e82beb5d08"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#a89195d0a67dda5156b3559e82beb5d08">ChangeCostMatrix</a> (int num_nodes, CostFunction cost)</td></tr>
<tr class="separator:a89195d0a67dda5156b3559e82beb5d08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6415d912bcce7f3d61e502d9c0047957"><td class="memItemLeft" align="right" valign="top">CostType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#a6415d912bcce7f3d61e502d9c0047957">HamiltonianCost</a> (int end_node)</td></tr>
<tr class="memdesc:a6415d912bcce7f3d61e502d9c0047957"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the cost of the Hamiltonian path from 0 to end_node. <a href="#a6415d912bcce7f3d61e502d9c0047957">More...</a><br /></td></tr>
<tr class="separator:a6415d912bcce7f3d61e502d9c0047957"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6c5e2c56d2c4c7cbf18d8d6cd26f1ff"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#ac6c5e2c56d2c4c7cbf18d8d6cd26f1ff">HamiltonianPath</a> (int end_node)</td></tr>
<tr class="memdesc:ac6c5e2c56d2c4c7cbf18d8d6cd26f1ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the shortest Hamiltonian path from 0 to end_node. <a href="#ac6c5e2c56d2c4c7cbf18d8d6cd26f1ff">More...</a><br /></td></tr>
<tr class="separator:ac6c5e2c56d2c4c7cbf18d8d6cd26f1ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d4e7053b1ca9bb72ca86712ba83ed56"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#a6d4e7053b1ca9bb72ca86712ba83ed56">BestHamiltonianPathEndNode</a> ()</td></tr>
<tr class="memdesc:a6d4e7053b1ca9bb72ca86712ba83ed56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the end-node that yields the shortest Hamiltonian path of all shortest Hamiltonian path from 0 to end-node (end-node != 0). <a href="#a6d4e7053b1ca9bb72ca86712ba83ed56">More...</a><br /></td></tr>
<tr class="separator:a6d4e7053b1ca9bb72ca86712ba83ed56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac40b37d8f310c7de3d3d8ba76f9132b8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#ac40b37d8f310c7de3d3d8ba76f9132b8">HamiltonianPath</a> (std::vector&lt; <a class="el" href="namespaceoperations__research.html#a09767b3634289e432c3ce1d7c649666a">PathNodeIndex</a> &gt; *path)</td></tr>
<tr class="separator:ac40b37d8f310c7de3d3d8ba76f9132b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a488b92cff7785ca75270e3480f6b3ac2"><td class="memItemLeft" align="right" valign="top">CostType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#a488b92cff7785ca75270e3480f6b3ac2">TravelingSalesmanCost</a> ()</td></tr>
<tr class="memdesc:a488b92cff7785ca75270e3480f6b3ac2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the cost of the TSP tour. <a href="#a488b92cff7785ca75270e3480f6b3ac2">More...</a><br /></td></tr>
<tr class="separator:a488b92cff7785ca75270e3480f6b3ac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae52acd5c3aa779486356b63d3c264f8b"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#ae52acd5c3aa779486356b63d3c264f8b">TravelingSalesmanPath</a> ()</td></tr>
<tr class="memdesc:ae52acd5c3aa779486356b63d3c264f8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the TSP tour in the vector pointed to by the argument. <a href="#ae52acd5c3aa779486356b63d3c264f8b">More...</a><br /></td></tr>
<tr class="separator:ae52acd5c3aa779486356b63d3c264f8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ddabfe4e8fcf0c746ad855af62e96b7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#a2ddabfe4e8fcf0c746ad855af62e96b7">TravelingSalesmanPath</a> (std::vector&lt; <a class="el" href="namespaceoperations__research.html#a09767b3634289e432c3ce1d7c649666a">PathNodeIndex</a> &gt; *path)</td></tr>
<tr class="separator:a2ddabfe4e8fcf0c746ad855af62e96b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2278e850be8943c1bf2ec68e5a81d5ed"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#a2278e850be8943c1bf2ec68e5a81d5ed">IsRobust</a> ()</td></tr>
<tr class="memdesc:a2278e850be8943c1bf2ec68e5a81d5ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if there won't be precision issues. <a href="#a2278e850be8943c1bf2ec68e5a81d5ed">More...</a><br /></td></tr>
<tr class="separator:a2278e850be8943c1bf2ec68e5a81d5ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af71c1510258301efccfc6e948ea06a82"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#af71c1510258301efccfc6e948ea06a82">VerifiesTriangleInequality</a> ()</td></tr>
<tr class="memdesc:af71c1510258301efccfc6e948ea06a82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the cost matrix verifies the triangle inequality. <a href="#af71c1510258301efccfc6e948ea06a82">More...</a><br /></td></tr>
<tr class="separator:af71c1510258301efccfc6e948ea06a82"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Typedef Documentation</h2>
<a id="aa5992cec63596c5d6c2ed51fc4f7c9c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5992cec63596c5d6c2ed51fc4f7c9c6">&#9670;&nbsp;</a></span>Integer</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">typedef uint32 <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::<a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#aa5992cec63596c5d6c2ed51fc4f7c9c6">Integer</a></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">HamiltonianPathSolver</a> computes a minimum Hamiltonian path starting at node 0 over a graph defined by a cost matrix. </p>
<p>The cost function need not be symmetric. When the Hamiltonian path is closed, it's a Hamiltonian cycle, i.e. the algorithm solves the Traveling Salesman Problem. Example: std::vector&lt;std::vector&lt;int&gt;&gt; cost_mat; ... fill in cost matrix <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">HamiltonianPathSolver</a>&lt;int, std::vector&lt;std::vector&lt;int&gt;&gt;&gt; mhp(cost_mat); ///&lt; no computation done printf("%d\n", mhp.TravelingSalesmanCost()); ///&lt; computation done and stored In 2010, 26 was the maximum solvable with 24 Gigs of RAM, and it took several minutes. With this 2014 version of the code, one may go a little higher, but considering the complexity of the algorithm (n*2^n), and that there are very good ways to solve TSP with more than 32 cities, we limit ourselves to 32 cites. This is why we define the type NodeSet to be 32-bit wide. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000033">Todo:</a></b></dt><dd>(user): remove this limitation by using pruning techniques. </dd></dl>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00475">475</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="afe5925b90aecb674fffc3910b93cc925"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afe5925b90aecb674fffc3910b93cc925">&#9670;&nbsp;</a></span>NodeSet</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classoperations__research_1_1Set.html">Set</a>&lt;<a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#aa5992cec63596c5d6c2ed51fc4f7c9c6">Integer</a>&gt; <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::<a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html#afe5925b90aecb674fffc3910b93cc925">NodeSet</a></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00476">476</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a1e754bd18247e695674bbb1a3d1187f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e754bd18247e695674bbb1a3d1187f3">&#9670;&nbsp;</a></span>HamiltonianPathSolver() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::<a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">HamiltonianPathSolver</a> </td>
<td>(</td>
<td class="paramtype">CostFunction&#160;</td>
<td class="paramname"><em>cost</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00606">606</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="adcd88e0846cbbfc84ecd93ab3cd5cb77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adcd88e0846cbbfc84ecd93ab3cd5cb77">&#9670;&nbsp;</a></span>HamiltonianPathSolver() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::<a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">HamiltonianPathSolver</a> </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_nodes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CostFunction&#160;</td>
<td class="paramname"><em>cost</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00611">611</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a6d4e7053b1ca9bb72ca86712ba83ed56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d4e7053b1ca9bb72ca86712ba83ed56">&#9670;&nbsp;</a></span>BestHamiltonianPathEndNode()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::BestHamiltonianPathEndNode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the end-node that yields the shortest Hamiltonian path of all shortest Hamiltonian path from 0 to end-node (end-node != 0). </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00830">830</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a553d0693bed2f847684666077241647e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a553d0693bed2f847684666077241647e">&#9670;&nbsp;</a></span>ChangeCostMatrix() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::ChangeCostMatrix </td>
<td>(</td>
<td class="paramtype">CostFunction&#160;</td>
<td class="paramname"><em>cost</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Replaces the cost matrix while avoiding re-allocating memory. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00627">627</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a89195d0a67dda5156b3559e82beb5d08"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89195d0a67dda5156b3559e82beb5d08">&#9670;&nbsp;</a></span>ChangeCostMatrix() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::ChangeCostMatrix </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_nodes</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CostFunction&#160;</td>
<td class="paramname"><em>cost</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00633">633</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a6415d912bcce7f3d61e502d9c0047957"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6415d912bcce7f3d61e502d9c0047957">&#9670;&nbsp;</a></span>HamiltonianCost()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">CostType <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::HamiltonianCost </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>end_node</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the cost of the Hamiltonian path from 0 to end_node. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00836">836</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="ac6c5e2c56d2c4c7cbf18d8d6cd26f1ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6c5e2c56d2c4c7cbf18d8d6cd26f1ff">&#9670;&nbsp;</a></span>HamiltonianPath() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">std::vector&lt; int &gt; <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::HamiltonianPath </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>end_node</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the shortest Hamiltonian path from 0 to end_node. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00843">843</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="ac40b37d8f310c7de3d3d8ba76f9132b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac40b37d8f310c7de3d3d8ba76f9132b8">&#9670;&nbsp;</a></span>HamiltonianPath() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::HamiltonianPath </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="namespaceoperations__research.html#a09767b3634289e432c3ce1d7c649666a">PathNodeIndex</a> &gt; *&#160;</td>
<td class="paramname"><em>path</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000005">Deprecated:</a></b></dt><dd>API.</dd></dl>
<p>Stores HamiltonianPath(BestHamiltonianPathEndNode()) into *path. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00850">850</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a2278e850be8943c1bf2ec68e5a81d5ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2278e850be8943c1bf2ec68e5a81d5ed">&#9670;&nbsp;</a></span>IsRobust()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::IsRobust </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if there won't be precision issues. </p>
<p>This is always true for integers, but not for floating-point types. </p>
<p>We compute the min and max for the cost matrix.</p>
<p>We determine if the range of the cost matrix is going to make the algorithm not robust because of precision issues. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00784">784</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a488b92cff7785ca75270e3480f6b3ac2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a488b92cff7785ca75270e3480f6b3ac2">&#9670;&nbsp;</a></span>TravelingSalesmanCost()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">CostType <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::TravelingSalesmanCost </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the cost of the TSP tour. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00857">857</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="ae52acd5c3aa779486356b63d3c264f8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae52acd5c3aa779486356b63d3c264f8b">&#9670;&nbsp;</a></span>TravelingSalesmanPath() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">std::vector&lt; int &gt; <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::TravelingSalesmanPath </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the TSP tour in the vector pointed to by the argument. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00864">864</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a2ddabfe4e8fcf0c746ad855af62e96b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ddabfe4e8fcf0c746ad855af62e96b7">&#9670;&nbsp;</a></span>TravelingSalesmanPath() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::TravelingSalesmanPath </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="namespaceoperations__research.html#a09767b3634289e432c3ce1d7c649666a">PathNodeIndex</a> &gt; *&#160;</td>
<td class="paramname"><em>path</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000006">Deprecated:</a></b></dt><dd>API. </dd></dl>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00870">870</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="af71c1510258301efccfc6e948ea06a82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af71c1510258301efccfc6e948ea06a82">&#9670;&nbsp;</a></span>VerifiesTriangleInequality()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename CostType , typename CostFunction &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classoperations__research_1_1HamiltonianPathSolver.html">operations_research::HamiltonianPathSolver</a>&lt; CostType, CostFunction &gt;::VerifiesTriangleInequality </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the cost matrix verifies the triangle inequality. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00809">809</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
</div>
<div id="footer-container">
<div id="footer">
</div>
</div>
</body>
</html>