Files
ortools-clone/docs/cpp_graph/classoperations__research_1_1LatticeMemoryManager.html
Laurent Perron 0ac3fa17eb more linear doc
2019-07-15 17:42:24 -07:00

448 lines
25 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>
<li><a href="files.html"><span>Files</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_1LatticeMemoryManager.html','');});
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classoperations__research_1_1LatticeMemoryManager-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">operations_research::LatticeMemoryManager&lt; Set, CostType &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 Set, typename CostType&gt;<br />
class operations_research::LatticeMemoryManager&lt; Set, CostType &gt;</h3>
<p>The Dynamic Programming (DP) algorithm memorizes the values f(set, node) for node in set, for all the subsets of cardinality &lt;= max_card_. </p>
<p><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html" title="The Dynamic Programming (DP) algorithm memorizes the values f(set, node) for node in set,...">LatticeMemoryManager</a> manages the storage of f(set, node) so that the DP iteration access memory in increasing addresses. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00291">291</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-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a4f81eab503a836cab0e35f7cffdf9331"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#a4f81eab503a836cab0e35f7cffdf9331">LatticeMemoryManager</a> ()</td></tr>
<tr class="separator:a4f81eab503a836cab0e35f7cffdf9331"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5f0b45dfc80e6bddba92ea7dc8c018e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#ab5f0b45dfc80e6bddba92ea7dc8c018e">Init</a> (int max_card)</td></tr>
<tr class="memdesc:ab5f0b45dfc80e6bddba92ea7dc8c018e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserves memory and fills in the data necessary to access memory. <a href="#ab5f0b45dfc80e6bddba92ea7dc8c018e">More...</a><br /></td></tr>
<tr class="separator:ab5f0b45dfc80e6bddba92ea7dc8c018e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5d506873d40f552209caa36e734990d"><td class="memItemLeft" align="right" valign="top">uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#ac5d506873d40f552209caa36e734990d">Offset</a> (<a class="el" href="classoperations__research_1_1Set.html">Set</a> s, int node) const</td></tr>
<tr class="memdesc:ac5d506873d40f552209caa36e734990d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the offset in memory for f(s, node), with node contained in s. <a href="#ac5d506873d40f552209caa36e734990d">More...</a><br /></td></tr>
<tr class="separator:ac5d506873d40f552209caa36e734990d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5369cd69622c4264ffcf11a2d5006ecd"><td class="memItemLeft" align="right" valign="top">uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#a5369cd69622c4264ffcf11a2d5006ecd">BaseOffset</a> (int card, <a class="el" href="classoperations__research_1_1Set.html">Set</a> s) const</td></tr>
<tr class="memdesc:a5369cd69622c4264ffcf11a2d5006ecd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the base offset in memory for f(s, node), with node contained in s. <a href="#a5369cd69622c4264ffcf11a2d5006ecd">More...</a><br /></td></tr>
<tr class="separator:a5369cd69622c4264ffcf11a2d5006ecd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a143a5937788ddcaa33e732f98cd26b3f"><td class="memItemLeft" align="right" valign="top">uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#a143a5937788ddcaa33e732f98cd26b3f">OffsetDelta</a> (int card, int added_node, int removed_node, int rank) const</td></tr>
<tr class="memdesc:a143a5937788ddcaa33e732f98cd26b3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the offset delta for a set of cardinality 'card', to which node 'removed_node' is replaced by 'added_node' at 'rank'. <a href="#a143a5937788ddcaa33e732f98cd26b3f">More...</a><br /></td></tr>
<tr class="separator:a143a5937788ddcaa33e732f98cd26b3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59f3668d8fc5dfe2b60d96892c080229"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#a59f3668d8fc5dfe2b60d96892c080229">SetValue</a> (<a class="el" href="classoperations__research_1_1Set.html">Set</a> s, int node, CostType value)</td></tr>
<tr class="memdesc:a59f3668d8fc5dfe2b60d96892c080229"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memorizes the value = f(s, node) at the correct offset. <a href="#a59f3668d8fc5dfe2b60d96892c080229">More...</a><br /></td></tr>
<tr class="separator:a59f3668d8fc5dfe2b60d96892c080229"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c8e0f6e664b391264f519adfeb7eae2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#a7c8e0f6e664b391264f519adfeb7eae2">SetValueAtOffset</a> (uint64 offset, CostType value)</td></tr>
<tr class="memdesc:a7c8e0f6e664b391264f519adfeb7eae2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Memorizes 'value' at 'offset'. <a href="#a7c8e0f6e664b391264f519adfeb7eae2">More...</a><br /></td></tr>
<tr class="separator:a7c8e0f6e664b391264f519adfeb7eae2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a084e48121cdd1ab05c9d60f8f45114e5"><td class="memItemLeft" align="right" valign="top">CostType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#a084e48121cdd1ab05c9d60f8f45114e5">Value</a> (<a class="el" href="classoperations__research_1_1Set.html">Set</a> s, int node) const</td></tr>
<tr class="memdesc:a084e48121cdd1ab05c9d60f8f45114e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the memorized value f(s, node) with node in s. <a href="#a084e48121cdd1ab05c9d60f8f45114e5">More...</a><br /></td></tr>
<tr class="separator:a084e48121cdd1ab05c9d60f8f45114e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad91d511dbe7e638fd8a46171f906f7e6"><td class="memItemLeft" align="right" valign="top">CostType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#ad91d511dbe7e638fd8a46171f906f7e6">ValueAtOffset</a> (uint64 offset) const</td></tr>
<tr class="memdesc:ad91d511dbe7e638fd8a46171f906f7e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the memorized value at 'offset'. <a href="#ad91d511dbe7e638fd8a46171f906f7e6">More...</a><br /></td></tr>
<tr class="separator:ad91d511dbe7e638fd8a46171f906f7e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a4f81eab503a836cab0e35f7cffdf9331"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f81eab503a836cab0e35f7cffdf9331">&#9670;&nbsp;</a></span>LatticeMemoryManager()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Set, typename CostType&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a>&lt; <a class="el" href="classoperations__research_1_1Set.html">Set</a>, CostType &gt;::<a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">LatticeMemoryManager</a> </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00293">293</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="a5369cd69622c4264ffcf11a2d5006ecd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5369cd69622c4264ffcf11a2d5006ecd">&#9670;&nbsp;</a></span>BaseOffset()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Set, typename CostType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint64 <a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a>&lt; <a class="el" href="classoperations__research_1_1Set.html">Set</a>, CostType &gt;::BaseOffset </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classoperations__research_1_1Set.html">Set</a>&#160;</td>
<td class="paramname"><em>s</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the base offset in memory for f(s, node), with node contained in s. </p>
<p>This is useful in the Dynamic Programming iterations. Note(user): inlining this function gains about 5%. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000032">Todo:</a></b></dt><dd>(user): Investigate how to compute BaseOffset(card - 1, s \ { n }) from BaseOffset(card, n) to speed up the DP iteration. </dd></dl>
<p>There are binomial_coefficients_[node][node_rank + 1] sets which have node at node_rank.</p>
<p>Note(user): It is possible to get rid of base_offset_[card] by using a 2-D array. It would also make it possible to free all the memory but the layer being constructed and the preceding one, if another lattice of paths is constructed. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000027">Todo:</a></b></dt><dd>(user): Evaluate the interest of the above. There are 'card' f(set, j) to store. That is why we need to multiply local_offset by card before adding it to the corresponding base_offset_. </dd></dl>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00407">407</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="ab5f0b45dfc80e6bddba92ea7dc8c018e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5f0b45dfc80e6bddba92ea7dc8c018e">&#9670;&nbsp;</a></span>Init()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Set , typename CostType &gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a>&lt; <a class="el" href="classoperations__research_1_1Set.html">Set</a>, CostType &gt;::Init </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>max_card</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reserves memory and fills in the data necessary to access memory. </p>
<p>Initialize binomial_coefficients_ using Pascal's triangle recursion.</p>
<p>Extend to (n, n + 1) to minimize branchings in <a class="el" href="classoperations__research_1_1LatticeMemoryManager.html#a4f81eab503a836cab0e35f7cffdf9331">LatticeMemoryManager()</a>. This also makes the recurrence above work for k = n.</p>
<p>There are k * binomial_coefficients_[max_card_][k] f(S,j) values to store for each group of f(S,j), with card(S) = k. Update base_offset[k] accordingly. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00357">357</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="ac5d506873d40f552209caa36e734990d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5d506873d40f552209caa36e734990d">&#9670;&nbsp;</a></span>Offset()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Set, typename CostType &gt; </div>
<table class="memname">
<tr>
<td class="memname">uint64 <a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a>&lt; <a class="el" href="classoperations__research_1_1Set.html">Set</a>, CostType &gt;::Offset </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classoperations__research_1_1Set.html">Set</a>&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the offset in memory for f(s, node), with node contained in s. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00431">431</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a143a5937788ddcaa33e732f98cd26b3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a143a5937788ddcaa33e732f98cd26b3f">&#9670;&nbsp;</a></span>OffsetDelta()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Set, typename CostType&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint64 <a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a>&lt; <a class="el" href="classoperations__research_1_1Set.html">Set</a>, CostType &gt;::OffsetDelta </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>card</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>added_node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>removed_node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>rank</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the offset delta for a set of cardinality 'card', to which node 'removed_node' is replaced by 'added_node' at 'rank'. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00310">310</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a59f3668d8fc5dfe2b60d96892c080229"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a59f3668d8fc5dfe2b60d96892c080229">&#9670;&nbsp;</a></span>SetValue()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Set, typename CostType&gt; </div>
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a>&lt; <a class="el" href="classoperations__research_1_1Set.html">Set</a>, CostType &gt;::SetValue </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classoperations__research_1_1Set.html">Set</a>&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CostType&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Memorizes the value = f(s, node) at the correct offset. </p>
<p>This is favored in all other uses than the Dynamic Programming iterations. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00443">443</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a7c8e0f6e664b391264f519adfeb7eae2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c8e0f6e664b391264f519adfeb7eae2">&#9670;&nbsp;</a></span>SetValueAtOffset()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Set, typename CostType&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a>&lt; <a class="el" href="classoperations__research_1_1Set.html">Set</a>, CostType &gt;::SetValueAtOffset </td>
<td>(</td>
<td class="paramtype">uint64&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">CostType&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Memorizes 'value' at 'offset'. </p>
<p>This is useful in the Dynamic Programming iterations where we want to avoid compute the offset of a pair (set, node). </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00323">323</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="a084e48121cdd1ab05c9d60f8f45114e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a084e48121cdd1ab05c9d60f8f45114e5">&#9670;&nbsp;</a></span>Value()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Set, typename CostType &gt; </div>
<table class="memname">
<tr>
<td class="memname">CostType <a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a>&lt; <a class="el" href="classoperations__research_1_1Set.html">Set</a>, CostType &gt;::Value </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classoperations__research_1_1Set.html">Set</a>&#160;</td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the memorized value f(s, node) with node in s. </p>
<p>This is favored in all other uses than the Dynamic Programming iterations. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00437">437</a> of file <a class="el" href="hamiltonian__path_8h_source.html">hamiltonian_path.h</a>.</p>
</div>
</div>
<a id="ad91d511dbe7e638fd8a46171f906f7e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad91d511dbe7e638fd8a46171f906f7e6">&#9670;&nbsp;</a></span>ValueAtOffset()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Set, typename CostType&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">CostType <a class="el" href="classoperations__research_1_1LatticeMemoryManager.html">operations_research::LatticeMemoryManager</a>&lt; <a class="el" href="classoperations__research_1_1Set.html">Set</a>, CostType &gt;::ValueAtOffset </td>
<td>(</td>
<td class="paramtype">uint64&#160;</td>
<td class="paramname"><em>offset</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the memorized value at 'offset'. </p>
<p>This is useful in the Dynamic Programming iterations. </p>
<p class="definition">Definition at line <a class="el" href="hamiltonian__path_8h_source.html#l00333">333</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>