<ahref="hamiltonian__path_8h.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aname="l00001"></a><spanclass="lineno"> 1</span> <spanclass="comment">// Copyright 2010-2018 Google LLC</span></div><divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><divclass="line"><aname="l00003"></a><spanclass="lineno"> 3</span> <spanclass="comment">// you may not use this file except in compliance with the License.</span></div><divclass="line"><aname="l00004"></a><spanclass="lineno"> 4</span> <spanclass="comment">// You may obtain a copy of the License at</span></div><divclass="line"><aname="l00005"></a><spanclass="lineno"> 5</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00006"></a><spanclass="lineno"> 6</span> <spanclass="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><divclass="line"><aname="l00007"></a><spanclass="lineno"> 7</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00008"></a><spanclass="lineno"> 8</span> <spanclass="comment">// Unless required by applicable law or agreed to in writing, software</span></div><divclass="line"><aname="l00009"></a><spanclass="lineno"> 9</span> <spanclass="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><divclass="line"><aname="l00010"></a><spanclass="lineno"> 10</span> <spanclass="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><divclass="line"><aname="l00011"></a><spanclass="lineno"> 11</span> <spanclass="comment">// See the License for the specific language governing permissions and</span></div><divclass="line"><aname="l00012"></a><spanclass="lineno"> 12</span> <spanclass="comment">// limitations under the License.</span></div><divclass="line"><aname="l00013"></a><spanclass="lineno"> 13</span> </div><divclass="line"><aname="l00014"></a><spanclass="lineno"> 14</span> <spanclass="preprocessor">#ifndef OR_TOOLS_GRAPH_HAMILTONIAN_PATH_H_</span></div><divclass="line"><aname="l00015"></a><spanclass="lineno"> 15</span> <spanclass="preprocessor">#define OR_TOOLS_GRAPH_HAMILTONIAN_PATH_H_</span></div><divclass="line"><aname="l00016"></a><spanclass="lineno"> 16</span> </div><divclass="line"><aname="l00017"></a><spanclass="lineno"> 17</span> <spanclass="comment">// Solves the Shortest Hamiltonian Path Problem using a complete algorithm.</span></div><divclass="line"><aname="l00018"></a><spanclass="lineno"> 18</span> <spanclass="comment">// The algorithm was first described in</span></div><divclass="line"><aname="l00019"></a><spanclass="lineno"> 19</span> <spanclass="comment">// M. Held, R.M. Karp, A dynamic programming approach to sequencing problems,</span></div><divclass="line"><aname="l00020"></a><spanclass="lineno"> 20</span> <spanclass="comment">// J. SIAM 10 (1962) 196-210</span></div><divclass="line"><aname="l00021"></a><spanclass="lineno"> 21</span> <spanclass="comment">//</span></div><divclass="line"><aname="l00022"></a><spanclass="lineno"> 22</span> <spanclass="comment">// The Shortest Hamiltonian Path Problem (SHPP) is similar to the Traveling</span></div><divclass="line"><aname="l00023"></a><spanclass="lineno"> 23</span> <spanclass="comment">// Salesperson Problem (TSP).</span></div><divclass="line"><aname="l00024"></a><spanclass="lineno"> 24</span> <spanclass="comment">// You have to visit all the cities, starting from a given one and you</span></div><divclass="line"><aname="l00025"></a><spanclass="lineno"> 25</span> <spanclass="comment">// do not need to return to your starting point. With the TSP, you can start</span></div><divclass="line"><aname="l00026"></a><spanclass="lineno"> 26</
<divclass="ttc"id="classoperations__research_1_1Set_html_a141358673ffd6a239cff71146df9b133"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a141358673ffd6a239cff71146df9b133">operations_research::Set::FullSet</a></div><divclass="ttdeci">static Set FullSet(Integer card)</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00146">hamiltonian_path.h:146</a></div></div>
<divclass="ttc"id="classoperations__research_1_1ElementIterator_html_a9028f0663e576b3eb972983df3967b6f"><divclass="ttname"><ahref="classoperations__research_1_1ElementIterator.html#a9028f0663e576b3eb972983df3967b6f">operations_research::ElementIterator::operator *</a></div><divclass="ttdeci">int operator *() const</div><divclass="ttdoc">Returns the smallest element in the current_set_.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00112">hamiltonian_path.h:112</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a1f635310ba40e9118f83662f4839e104"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a1f635310ba40e9118f83662f4839e104">operations_research::Set::RemoveSmallestElement</a></div><divclass="ttdeci">Set RemoveSmallestElement() const</div><divclass="ttdoc">Returns a set equal to the calling object, with its smallest element removed.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00179">hamiltonian_path.h:179</a></div></div>
<divclass="ttc"id="classoperations__research_1_1LatticeMemoryManager_html_ad91d511dbe7e638fd8a46171f906f7e6"><divclass="ttname"><ahref="classoperations__research_1_1LatticeMemoryManager.html#ad91d511dbe7e638fd8a46171f906f7e6">operations_research::LatticeMemoryManager::ValueAtOffset</a></div><divclass="ttdeci">CostType ValueAtOffset(uint64 offset) const</div><divclass="ttdoc">Returns the memorized value at 'offset'.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00333">hamiltonian_path.h:333</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a5af831720988b31639b578e73d727f4e"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a5af831720988b31639b578e73d727f4e">operations_research::Set::ElementRank</a></div><divclass="ttdeci">int ElementRank(int n) const</div><divclass="ttdoc">Returns the rank of an element in a set.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00183">hamiltonian_path.h:183</a></div></div>
<divclass="ttc"id="classoperations__research_1_1SetRangeWithCardinality_html_a361a8278313aa9ba0c4628b0da6590b1"><divclass="ttname"><ahref="classoperations__research_1_1SetRangeWithCardinality.html#a361a8278313aa9ba0c4628b0da6590b1">operations_research::SetRangeWithCardinality::SetRangeWithCardinality</a></div><divclass="ttdeci">SetRangeWithCardinality(int card, int max_card)</div><divclass="ttdoc">The end_ set is the first set with cardinality card, that does not fit in max_card bits.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00263">hamiltonian_path.h:263</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_aa0c538f9b81cb0081a115b5ea51b9d6e"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#aa0c538f9b81cb0081a115b5ea51b9d6e">operations_research::Set::AddElement</a></div><divclass="ttdeci">Set AddElement(int n) const</div><divclass="ttdoc">Returns a set equal to the calling object, with element n added.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00155">hamiltonian_path.h:155</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_aafdb1b510571bc337d0dee99f4ef7dea"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#aafdb1b510571bc337d0dee99f4ef7dea">operations_research::Set::SmallestSingleton</a></div><divclass="ttdeci">Set SmallestSingleton() const</div><divclass="ttdoc">Returns the set consisting of the smallest element of the calling object.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00189">hamiltonian_path.h:189</a></div></div>
<divclass="ttc"id="namespaceoperations__research_html_a715b0dbb9f0903ab629b8c6da1b35b45"><divclass="ttname"><ahref="namespaceoperations__research.html#a715b0dbb9f0903ab629b8c6da1b35b45">operations_research::MakeHamiltonianPathSolver</a></div><divclass="ttdeci">HamiltonianPathSolver< CostType, CostFunction > MakeHamiltonianPathSolver(int num_nodes, CostFunction cost)</div><divclass="ttdoc">Utility function to simplify building a HamiltonianPathSolver from a functor.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00599">hamiltonian_path.h:599</a></div></div>
<divclass="ttc"id="classoperations__research_1_1LatticeMemoryManager_html_ac5d506873d40f552209caa36e734990d"><divclass="ttname"><ahref="classoperations__research_1_1LatticeMemoryManager.html#ac5d506873d40f552209caa36e734990d">operations_research::LatticeMemoryManager::Offset</a></div><divclass="ttdeci">uint64 Offset(Set s, int node) const</div><divclass="ttdoc">Returns the offset in memory for f(s, node), with node contained in s.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00431">hamiltonian_path.h:431</a></div></div>
<divclass="ttc"id="classoperations__research_1_1HamiltonianPathSolver_html_a488b92cff7785ca75270e3480f6b3ac2"><divclass="ttname"><ahref="classoperations__research_1_1HamiltonianPathSolver.html#a488b92cff7785ca75270e3480f6b3ac2">operations_research::HamiltonianPathSolver::TravelingSalesmanCost</a></div><divclass="ttdeci">CostType TravelingSalesmanCost()</div><divclass="ttdoc">Returns the cost of the TSP tour.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00857">hamiltonian_path.h:857</a></div></div>
<divclass="ttc"id="classoperations__research_1_1HamiltonianPathSolver_html_ae52acd5c3aa779486356b63d3c264f8b"><divclass="ttname"><ahref="classoperations__research_1_1HamiltonianPathSolver.html#ae52acd5c3aa779486356b63d3c264f8b">operations_research::HamiltonianPathSolver::TravelingSalesmanPath</a></div><divclass="ttdeci">std::vector< int > TravelingSalesmanPath()</div><divclass="ttdoc">Returns the TSP tour in the vector pointed to by the argument.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00864">hamiltonian_path.h:864</a></div></div>
<divclass="ttc"id="classoperations__research_1_1LatticeMemoryManager_html_a143a5937788ddcaa33e732f98cd26b3f"><divclass="ttname"><ahref="classoperations__research_1_1LatticeMemoryManager.html#a143a5937788ddcaa33e732f98cd26b3f">operations_research::LatticeMemoryManager::OffsetDelta</a></div><divclass="ttdeci">uint64 OffsetDelta(int card, int added_node, int removed_node, int rank) const</div><divclass="ttdoc">Returns the offset delta for a set of cardinality 'card', to which node 'removed_node' is replaced by...</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00310">hamiltonian_path.h:310</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a4a7e7acabfbd596162ed619fcca5746f"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a4a7e7acabfbd596162ed619fcca5746f">operations_research::Set::Singleton</a></div><divclass="ttdeci">static Set Singleton(Integer n)</div><divclass="ttdoc">Returns the singleton set with 'n' as its only element.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00151">hamiltonian_path.h:151</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a24144feea74d47a81c7c1476b24e8e62"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a24144feea74d47a81c7c1476b24e8e62">operations_research::Set::Cardinality</a></div><divclass="ttdeci">int Cardinality() const</div><divclass="ttdoc">Returns the number of elements in the set.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00171">hamiltonian_path.h:171</a></div></div>
<divclass="ttc"id="classoperations__research_1_1LatticeMemoryManager_html_a59f3668d8fc5dfe2b60d96892c080229"><divclass="ttname"><ahref="classoperations__research_1_1LatticeMemoryManager.html#a59f3668d8fc5dfe2b60d96892c080229">operations_research::LatticeMemoryManager::SetValue</a></div><divclass="ttdeci">void SetValue(Set s, int node, CostType value)</div><divclass="ttdoc">Memorizes the value = f(s, node) at the correct offset.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00443">hamiltonian_path.h:443</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_ad84aaa6dd878e39e09b522f9dd7653eb"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#ad84aaa6dd878e39e09b522f9dd7653eb">operations_research::Set::value</a></div><divclass="ttdeci">Integer value() const</div><divclass="ttdoc">Returns the integer corresponding to the set.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00144">hamiltonian_path.h:144</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_aa6d7b94f2dfe466cfe4fa7846b040721"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#aa6d7b94f2dfe466cfe4fa7846b040721">operations_research::Set::RemoveElement</a></div><divclass="ttdeci">Set RemoveElement(int n) const</div><divclass="ttdoc">Returns a set equal to the calling object, with element n removed.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00159">hamiltonian_path.h:159</a></div></div>
<divclass="ttc"id="classoperations__research_1_1SetRangeIterator_html"><divclass="ttname"><ahref="classoperations__research_1_1SetRangeIterator.html">operations_research::SetRangeIterator</a></div><divclass="ttdoc">An iterator for sets of increasing corresponding values that have the same cardinality.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00223">hamiltonian_path.h:223</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a16460bdbc6388e9895591c5c3d396869"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a16460bdbc6388e9895591c5c3d396869">operations_research::Set::Includes</a></div><divclass="ttdeci">bool Includes(Set other) const</div><divclass="ttdoc">Returns true if 'other' is included in the calling set.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00165">hamiltonian_path.h:165</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a0bdd9a18dc27c98ab0e7599fa35a039a"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a0bdd9a18dc27c98ab0e7599fa35a039a">operations_research::Set::operator!=</a></div><divclass="ttdeci">bool operator!=(const Set &other) const</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00202">hamiltonian_path.h:202</a></div></div>
<divclass="ttc"id="classoperations__research_1_1HamiltonianPathSolver_html_a2278e850be8943c1bf2ec68e5a81d5ed"><divclass="ttname"><ahref="classoperations__research_1_1HamiltonianPathSolver.html#a2278e850be8943c1bf2ec68e5a81d5ed">operations_research::HamiltonianPathSolver::IsRobust</a></div><divclass="ttdeci">bool IsRobust()</div><divclass="ttdoc">Returns true if there won't be precision issues.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00784">hamiltonian_path.h:784</a></div></div>
<divclass="ttc"id="namespaceutil_html_aadd7603ae6e78cc2490ca9710fbaf180"><divclass="ttname"><ahref="namespaceutil.html#aadd7603ae6e78cc2490ca9710fbaf180">util::false</a></div><divclass="ttdeci">false</div><divclass="ttdoc">This is useful for wrapping iterators of a class that support many different iterations.</div><divclass="ttdef"><b>Definition:</b><ahref="iterators_8h_source.html#l00030">iterators.h:30</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a7a026ad4d35f459e5ca13e30cea9ad21"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a7a026ad4d35f459e5ca13e30cea9ad21">operations_research::Set::SmallestElement</a></div><divclass="ttdeci">int SmallestElement() const</div><divclass="ttdoc">Returns the index of the smallest element in the set.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00175">hamiltonian_path.h:175</a></div></div>
<divclass="ttc"id="classoperations__research_1_1LatticeMemoryManager_html_a5369cd69622c4264ffcf11a2d5006ecd"><divclass="ttname"><ahref="classoperations__research_1_1LatticeMemoryManager.html#a5369cd69622c4264ffcf11a2d5006ecd">operations_research::LatticeMemoryManager::BaseOffset</a></div><divclass="ttdeci">uint64 BaseOffset(int card, Set s) const</div><divclass="ttdoc">Returns the base offset in memory for f(s, node), with node contained in s.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00407">hamiltonian_path.h:407</a></div></div>
<divclass="ttc"id="classoperations__research_1_1HamiltonianPathSolver_html_a6415d912bcce7f3d61e502d9c0047957"><divclass="ttname"><ahref="classoperations__research_1_1HamiltonianPathSolver.html#a6415d912bcce7f3d61e502d9c0047957">operations_research::HamiltonianPathSolver::HamiltonianCost</a></div><divclass="ttdeci">CostType HamiltonianCost(int end_node)</div><divclass="ttdoc">Returns the cost of the Hamiltonian path from 0 to end_node.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00836">hamiltonian_path.h:836</a></div></div>
<divclass="ttc"id="classoperations__research_1_1HamiltonianPathSolver_html_ac6c5e2c56d2c4c7cbf18d8d6cd26f1ff"><divclass="ttname"><ahref="classoperations__research_1_1HamiltonianPathSolver.html#ac6c5e2c56d2c4c7cbf18d8d6cd26f1ff">operations_research::HamiltonianPathSolver::HamiltonianPath</a></div><divclass="ttdeci">std::vector< int > HamiltonianPath(int end_node)</div><divclass="ttdoc">Returns the shortest Hamiltonian path from 0 to end_node.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00843">hamiltonian_path.h:843</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_acf527d4f2a9de5310586b357f76ef408"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#acf527d4f2a9de5310586b357f76ef408">operations_research::Set::MaxCardinality</a></div><divclass="ttdeci">static const int MaxCardinality</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00135">hamiltonian_path.h:135</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a1af4b8873ead26e8375650d7cbd80ff9"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a1af4b8873ead26e8375650d7cbd80ff9">operations_research::Set::Set</a></div><divclass="ttdeci">Set(Integer n)</div><divclass="ttdoc">Construct a set from an Integer.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00138">hamiltonian_path.h:138</a></div></div>
<divclass="ttc"id="classoperations__research_1_1SetRangeIterator_html_a2b617b0eee1cb874ce18d0fbfbcb0857"><divclass="ttname"><ahref="classoperations__research_1_1SetRangeIterator.html#a2b617b0eee1cb874ce18d0fbfbcb0857">operations_research::SetRangeIterator::operator++</a></div><divclass="ttdeci">const SetRangeIterator & operator++()</div><divclass="ttdoc">Computes the next set with the same cardinality using Gosper's hack.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00240">hamiltonian_path.h:240</a></div></div>
<divclass="ttc"id="classoperations__research_1_1LatticeMemoryManager_html_a084e48121cdd1ab05c9d60f8f45114e5"><divclass="ttname"><ahref="classoperations__research_1_1LatticeMemoryManager.html#a084e48121cdd1ab05c9d60f8f45114e5">operations_research::LatticeMemoryManager::Value</a></div><divclass="ttdeci">CostType Value(Set s, int node) const</div><divclass="ttdoc">Returns the memorized value f(s, node) with node in s.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00437">hamiltonian_path.h:437</a></div></div>
<divclass="ttc"id="classoperations__research_1_1ElementIterator_html_aac756fa71bfc5938f266bf1abeb76ffe"><divclass="ttname"><ahref="classoperations__research_1_1ElementIterator.html#aac756fa71bfc5938f266bf1abeb76ffe">operations_research::ElementIterator::operator++</a></div><divclass="ttdeci">const ElementIterator & operator++()</div><divclass="ttdoc">Advances the iterator by removing its smallest element.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00115">hamiltonian_path.h:115</a></div></div>
<divclass="ttc"id="namespaceoperations__research_html"><divclass="ttname"><ahref="namespaceoperations__research.html">operations_research</a></div><divclass="ttdoc">Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in c...</div><divclass="ttdef"><b>Definition:</b><ahref="christofides_8h_source.html#l00033">christofides.h:33</a></div></div>
<divclass="ttc"id="classoperations__research_1_1HamiltonianPathSolver_html_a553d0693bed2f847684666077241647e"><divclass="ttname"><ahref="classoperations__research_1_1HamiltonianPathSolver.html#a553d0693bed2f847684666077241647e">operations_research::HamiltonianPathSolver::ChangeCostMatrix</a></div><divclass="ttdeci">void ChangeCostMatrix(CostFunction cost)</div><divclass="ttdoc">Replaces the cost matrix while avoiding re-allocating memory.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00627">hamiltonian_path.h:627</a></div></div>
<divclass="ttc"id="classoperations__research_1_1PruningHamiltonianSolver_html_a2857abdd40d541b03ad21bd053b0ac54"><divclass="ttname"><ahref="classoperations__research_1_1PruningHamiltonianSolver.html#a2857abdd40d541b03ad21bd053b0ac54">operations_research::PruningHamiltonianSolver::Integer</a></div><divclass="ttdeci">uint32 Integer</div><divclass="ttdoc">PruningHamiltonianSolver computes a minimum Hamiltonian path from node 0 over a graph defined by a co...</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00892">hamiltonian_path.h:892</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_ab6cacc30b3640c31b723e42570c73bd4"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#ab6cacc30b3640c31b723e42570c73bd4">operations_research::Set::begin</a></div><divclass="ttdeci">ElementIterator< Set > begin() const</div><divclass="ttdoc">STL iterator-related member functions.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00198">hamiltonian_path.h:198</a></div></div>
<divclass="ttc"id="classoperations__research_1_1LatticeMemoryManager_html_ab5f0b45dfc80e6bddba92ea7dc8c018e"><divclass="ttname"><ahref="classoperations__research_1_1LatticeMemoryManager.html#ab5f0b45dfc80e6bddba92ea7dc8c018e">operations_research::LatticeMemoryManager::Init</a></div><divclass="ttdeci">void Init(int max_card)</div><divclass="ttdoc">Reserves memory and fills in the data necessary to access memory.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00357">hamiltonian_path.h:357</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a1cfc40ac6c93cea1957a96ea082010ce"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a1cfc40ac6c93cea1957a96ea082010ce">operations_research::Set::end</a></div><divclass="ttdeci">ElementIterator< Set > end() const</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00201">hamiltonian_path.h:201</a></div></div>
<divclass="ttc"id="classoperations__research_1_1PruningHamiltonianSolver_html_aba4aa231b4ea3f9bf71055372a847df7"><divclass="ttname"><ahref="classoperations__research_1_1PruningHamiltonianSolver.html#aba4aa231b4ea3f9bf71055372a847df7">operations_research::PruningHamiltonianSolver::HamiltonianCost</a></div><divclass="ttdeci">CostType HamiltonianCost(int end_node)</div><divclass="ttdoc">Returns the cost of the Hamiltonian path from 0 to end_node.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l01005">hamiltonian_path.h:1005</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_aa3639cb771e8dd36bb9092c869cae7c3"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#aa3639cb771e8dd36bb9092c869cae7c3">operations_research::Set::SingletonRank</a></div><divclass="ttdeci">int SingletonRank(Set singleton) const</div><divclass="ttdoc">Returns the rank of the singleton's element in the calling Set.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00192">hamiltonian_path.h:192</a></div></div>
<divclass="ttc"id="classoperations__research_1_1HamiltonianPathSolver_html_a6d4e7053b1ca9bb72ca86712ba83ed56"><divclass="ttname"><ahref="classoperations__research_1_1HamiltonianPathSolver.html#a6d4e7053b1ca9bb72ca86712ba83ed56">operations_research::HamiltonianPathSolver::BestHamiltonianPathEndNode</a></div><divclass="ttdeci">int BestHamiltonianPathEndNode()</div><divclass="ttdoc">Returns the end-node that yields the shortest Hamiltonian path of all shortest Hamiltonian path from ...</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00830">hamiltonian_path.h:830</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a2eb0206e8f324178feddb08668851373"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a2eb0206e8f324178feddb08668851373">operations_research::Set::IntegerType</a></div><divclass="ttdeci">Integer IntegerType</div><divclass="ttdoc">Make this visible to classes using this class.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00130">hamiltonian_path.h:130</a></div></div>
<divclass="ttc"id="classoperations__research_1_1SetRangeIterator_html_ac33a8fa2bd3858cb38ac4aa7027b14f3"><divclass="ttname"><ahref="classoperations__research_1_1SetRangeIterator.html#ac33a8fa2bd3858cb38ac4aa7027b14f3">operations_research::SetRangeIterator::SetType</a></div><divclass="ttdeci">SetRange::SetType SetType</div><divclass="ttdoc">Make the parameter types visible to SetRangeWithCardinality.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00226">hamiltonian_path.h:226</a></div></div>
<divclass="ttc"id="classoperations__research_1_1LatticeMemoryManager_html_a7c8e0f6e664b391264f519adfeb7eae2"><divclass="ttname"><ahref="classoperations__research_1_1LatticeMemoryManager.html#a7c8e0f6e664b391264f519adfeb7eae2">operations_research::LatticeMemoryManager::SetValueAtOffset</a></div><divclass="ttdeci">void SetValueAtOffset(uint64 offset, CostType value)</div><divclass="ttdoc">Memorizes 'value' at 'offset'.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00323">hamiltonian_path.h:323</a></div></div>
<divclass="ttc"id="classoperations__research_1_1Set_html_a25fd2252df71c9531341ea392d639b06"><divclass="ttname"><ahref="classoperations__research_1_1Set.html#a25fd2252df71c9531341ea392d639b06">operations_research::Set::Contains</a></div><divclass="ttdeci">bool Contains(int n) const</div><divclass="ttdoc">Returns true if the calling set contains element n.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00162">hamiltonian_path.h:162</a></div></div>
<divclass="ttc"id="classoperations__research_1_1LatticeMemoryManager_html"><divclass="ttname"><ahref="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a></div><divclass="ttdoc">The Dynamic Programming (DP) algorithm memorizes the values f(set, node) for node in set,...</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00291">hamiltonian_path.h:291</a></div></div>
<divclass="ttc"id="classoperations__research_1_1HamiltonianPathSolver_html_af71c1510258301efccfc6e948ea06a82"><divclass="ttname"><ahref="classoperations__research_1_1HamiltonianPathSolver.html#af71c1510258301efccfc6e948ea06a82">operations_research::HamiltonianPathSolver::VerifiesTriangleInequality</a></div><divclass="ttdeci">bool VerifiesTriangleInequality()</div><divclass="ttdoc">Returns true if the cost matrix verifies the triangle inequality.</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00809">hamiltonian_path.h:809</a></div></div>
<divclass="ttc"id="classoperations__research_1_1HamiltonianPathSolver_html_aa5992cec63596c5d6c2ed51fc4f7c9c6"><divclass="ttname"><ahref="classoperations__research_1_1HamiltonianPathSolver.html#aa5992cec63596c5d6c2ed51fc4f7c9c6">operations_research::HamiltonianPathSolver::Integer</a></div><divclass="ttdeci">uint32 Integer</div><divclass="ttdoc">HamiltonianPathSolver computes a minimum Hamiltonian path starting at node 0 over a graph defined by ...</div><divclass="ttdef"><b>Definition:</b><ahref="hamiltonian__path_8h_source.html#l00475">hamiltonian_path.h:475</a></div></div>