Files
ortools-clone/docs/cpp_graph/classutil_1_1CompleteGraph.html
2019-06-29 18:18:08 +02:00

1120 lines
62 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 id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceutil.html">util</a></li><li class="navelem"><a class="el" href="classutil_1_1CompleteGraph.html">CompleteGraph</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classutil_1_1CompleteGraph-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">util::CompleteGraph&lt; NodeIndexType, ArcIndexType &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="classutil_1_1CompleteGraph.html" title="CompleteGraph implementation ---------------------------------------------— Nodes and arcs are implic...">CompleteGraph</a> implementation ---------------------------------------------&mdash; Nodes and arcs are implicit and not stored.
<a href="classutil_1_1CompleteGraph.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="graph_8h_source.html">graph.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for util::CompleteGraph&lt; NodeIndexType, ArcIndexType &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="classutil_1_1CompleteGraph__inherit__graph.png" border="0" usemap="#util_1_1CompleteGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_inherit__map" alt="Inheritance graph"/></div>
<map name="util_1_1CompleteGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_inherit__map" id="util_1_1CompleteGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_inherit__map">
<area shape="rect" title="CompleteGraph implementation &#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;— Nodes and arcs are implic..." alt="" coords="5,92,231,131"/>
<area shape="rect" href="classutil_1_1BaseGraph.html" title=" " alt="" coords="24,5,213,44"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for util::CompleteGraph&lt; NodeIndexType, ArcIndexType &gt;:</div>
<div class="dyncontent">
<div class="center"><img src="classutil_1_1CompleteGraph__coll__graph.png" border="0" usemap="#util_1_1CompleteGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_coll__map" alt="Collaboration graph"/></div>
<map name="util_1_1CompleteGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_coll__map" id="util_1_1CompleteGraph_3_01NodeIndexType_00_01ArcIndexType_01_4_coll__map">
<area shape="rect" title="CompleteGraph implementation &#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;— Nodes and arcs are implic..." alt="" coords="16,207,242,245"/>
<area shape="rect" href="classutil_1_1BaseGraph.html" title=" " alt="" coords="35,119,224,157"/>
<area shape="rect" title=" " alt="" coords="5,5,120,31"/>
<area shape="rect" title=" " alt="" coords="145,5,247,31"/>
</map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></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:adb271cf4bcf2de5b5bbe300d7054af29"><td class="memItemLeft" align="right" valign="top">typedef NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#adb271cf4bcf2de5b5bbe300d7054af29">NodeIndex</a></td></tr>
<tr class="memdesc:adb271cf4bcf2de5b5bbe300d7054af29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Typedef so you can use Graph::NodeIndex and Graph::ArcIndex to be generic but also to improve the readability of your code. <a href="#adb271cf4bcf2de5b5bbe300d7054af29">More...</a><br /></td></tr>
<tr class="separator:adb271cf4bcf2de5b5bbe300d7054af29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0eba6e5899924388644dfa2258ae8929"><td class="memItemLeft" align="right" valign="top">typedef ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a0eba6e5899924388644dfa2258ae8929">ArcIndex</a></td></tr>
<tr class="separator:a0eba6e5899924388644dfa2258ae8929"><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:ad3401c3d9df9b08cd9be279464029a32"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteGraph.html#ad3401c3d9df9b08cd9be279464029a32">CompleteGraph</a> (NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html#a0f551c921fa0b5aaa334a6e36f61db4a">num_nodes</a>)</td></tr>
<tr class="memdesc:ad3401c3d9df9b08cd9be279464029a32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Builds a complete graph with num_nodes nodes. <a href="#ad3401c3d9df9b08cd9be279464029a32">More...</a><br /></td></tr>
<tr class="separator:ad3401c3d9df9b08cd9be279464029a32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af32d9f7de8ae0ccb7a859794a8fa7329"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteGraph.html#af32d9f7de8ae0ccb7a859794a8fa7329">Head</a> (ArcIndexType arc) const</td></tr>
<tr class="separator:af32d9f7de8ae0ccb7a859794a8fa7329"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6dc77def1cc80ffd14cb931a3043e52"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteGraph.html#aa6dc77def1cc80ffd14cb931a3043e52">Tail</a> (ArcIndexType arc) const</td></tr>
<tr class="separator:aa6dc77def1cc80ffd14cb931a3043e52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a715345c684f1cbeb1896f09ebd989dd1"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteGraph.html#a715345c684f1cbeb1896f09ebd989dd1">OutDegree</a> (NodeIndexType node) const</td></tr>
<tr class="separator:a715345c684f1cbeb1896f09ebd989dd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5561d57ac19a632ed3086e7f96fdbe6"><td class="memItemLeft" align="right" valign="top">IntegerRange&lt; ArcIndexType &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteGraph.html#aa5561d57ac19a632ed3086e7f96fdbe6">OutgoingArcs</a> (NodeIndexType node) const</td></tr>
<tr class="separator:aa5561d57ac19a632ed3086e7f96fdbe6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77b6facc3e744aa4ff764c9b9725e2d8"><td class="memItemLeft" align="right" valign="top">IntegerRange&lt; ArcIndexType &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteGraph.html#a77b6facc3e744aa4ff764c9b9725e2d8">OutgoingArcsStartingFrom</a> (NodeIndexType node, ArcIndexType from) const</td></tr>
<tr class="separator:a77b6facc3e744aa4ff764c9b9725e2d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab12a266c0c091c00a150667619f491d4"><td class="memItemLeft" align="right" valign="top">IntegerRange&lt; NodeIndexType &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1CompleteGraph.html#ab12a266c0c091c00a150667619f491d4">operator[]</a> (NodeIndexType node) const</td></tr>
<tr class="separator:ab12a266c0c091c00a150667619f491d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f551c921fa0b5aaa334a6e36f61db4a"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a0f551c921fa0b5aaa334a6e36f61db4a">num_nodes</a> () const</td></tr>
<tr class="memdesc:a0f551c921fa0b5aaa334a6e36f61db4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of valid nodes in the graph. <a href="#a0f551c921fa0b5aaa334a6e36f61db4a">More...</a><br /></td></tr>
<tr class="separator:a0f551c921fa0b5aaa334a6e36f61db4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefb468e4d4a3128c91b3bad9f5b314c8"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#aefb468e4d4a3128c91b3bad9f5b314c8">num_arcs</a> () const</td></tr>
<tr class="memdesc:aefb468e4d4a3128c91b3bad9f5b314c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of valid arcs in the graph. <a href="#aefb468e4d4a3128c91b3bad9f5b314c8">More...</a><br /></td></tr>
<tr class="separator:aefb468e4d4a3128c91b3bad9f5b314c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32ba4a5ca9a4b89f750eb2dc56518b02"><td class="memItemLeft" align="right" valign="top">IntegerRange&lt; <a class="el" href="classutil_1_1BaseGraph.html#adb271cf4bcf2de5b5bbe300d7054af29">NodeIndex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a32ba4a5ca9a4b89f750eb2dc56518b02">AllNodes</a> () const</td></tr>
<tr class="memdesc:a32ba4a5ca9a4b89f750eb2dc56518b02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows nice range-based for loop: for (const NodeIndex node : graph.AllNodes()) { ... <a href="#a32ba4a5ca9a4b89f750eb2dc56518b02">More...</a><br /></td></tr>
<tr class="separator:a32ba4a5ca9a4b89f750eb2dc56518b02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcfd7c21143e5ed38573c0dd60826dd8"><td class="memItemLeft" align="right" valign="top">IntegerRange&lt; <a class="el" href="classutil_1_1BaseGraph.html#a0eba6e5899924388644dfa2258ae8929">ArcIndex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#abcfd7c21143e5ed38573c0dd60826dd8">AllForwardArcs</a> () const</td></tr>
<tr class="separator:abcfd7c21143e5ed38573c0dd60826dd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf853acea86e01356f53055f77661770"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#abf853acea86e01356f53055f77661770">IsNodeValid</a> (NodeIndexType node) const</td></tr>
<tr class="memdesc:abf853acea86e01356f53055f77661770"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the given node is a valid node of the graph. <a href="#abf853acea86e01356f53055f77661770">More...</a><br /></td></tr>
<tr class="separator:abf853acea86e01356f53055f77661770"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2097ccda3b1ad27e2c82166979018bda"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a2097ccda3b1ad27e2c82166979018bda">IsArcValid</a> (ArcIndexType arc) const</td></tr>
<tr class="memdesc:a2097ccda3b1ad27e2c82166979018bda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the given arc is a valid arc of the graph. <a href="#a2097ccda3b1ad27e2c82166979018bda">More...</a><br /></td></tr>
<tr class="separator:a2097ccda3b1ad27e2c82166979018bda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a463d57480c9563a7a707c5d0928c9946"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a463d57480c9563a7a707c5d0928c9946">node_capacity</a> () const</td></tr>
<tr class="memdesc:a463d57480c9563a7a707c5d0928c9946"><td class="mdescLeft">&#160;</td><td class="mdescRight">Capacity reserved for future nodes, always &gt;= num_nodes_. <a href="#a463d57480c9563a7a707c5d0928c9946">More...</a><br /></td></tr>
<tr class="separator:a463d57480c9563a7a707c5d0928c9946"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92ffd852b2ab2e5241f9832e71a2de71"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a92ffd852b2ab2e5241f9832e71a2de71">arc_capacity</a> () const</td></tr>
<tr class="memdesc:a92ffd852b2ab2e5241f9832e71a2de71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Capacity reserved for future arcs, always &gt;= num_arcs_. <a href="#a92ffd852b2ab2e5241f9832e71a2de71">More...</a><br /></td></tr>
<tr class="separator:a92ffd852b2ab2e5241f9832e71a2de71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69a71cbb575b13bde9899f5a6a217139"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a69a71cbb575b13bde9899f5a6a217139">ReserveNodes</a> (NodeIndexType bound)</td></tr>
<tr class="memdesc:a69a71cbb575b13bde9899f5a6a217139"><td class="mdescLeft">&#160;</td><td class="mdescRight">Changes the graph capacities. <a href="#a69a71cbb575b13bde9899f5a6a217139">More...</a><br /></td></tr>
<tr class="separator:a69a71cbb575b13bde9899f5a6a217139"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9563f7154a759843923dd9bb27b288e7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a9563f7154a759843923dd9bb27b288e7">ReserveArcs</a> (ArcIndexType bound)</td></tr>
<tr class="separator:a9563f7154a759843923dd9bb27b288e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab731ca5c638e7b1b0a2c459c94a90f55"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#ab731ca5c638e7b1b0a2c459c94a90f55">Reserve</a> (NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html#a463d57480c9563a7a707c5d0928c9946">node_capacity</a>, ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html#a92ffd852b2ab2e5241f9832e71a2de71">arc_capacity</a>)</td></tr>
<tr class="separator:ab731ca5c638e7b1b0a2c459c94a90f55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3bd051d1e141b09dda17aa9b5f24f69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#aa3bd051d1e141b09dda17aa9b5f24f69">FreezeCapacities</a> ()</td></tr>
<tr class="memdesc:aa3bd051d1e141b09dda17aa9b5f24f69"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classutil_1_1BaseGraph.html#aa3bd051d1e141b09dda17aa9b5f24f69" title="FreezeCapacities() makes any future attempt to change the graph capacities crash in DEBUG mode.">FreezeCapacities()</a> makes any future attempt to change the graph capacities crash in DEBUG mode. <a href="#aa3bd051d1e141b09dda17aa9b5f24f69">More...</a><br /></td></tr>
<tr class="separator:aa3bd051d1e141b09dda17aa9b5f24f69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07214b96597069d781e27b1dd17ef83e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a07214b96597069d781e27b1dd17ef83e">GroupForwardArcsByFunctor</a> (const A &amp;a, B *b)</td></tr>
<tr class="separator:a07214b96597069d781e27b1dd17ef83e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a346b8a5811f0e287e1ebce2de2c1ad28"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a346b8a5811f0e287e1ebce2de2c1ad28">max_end_arc_index</a> () const</td></tr>
<tr class="separator:a346b8a5811f0e287e1ebce2de2c1ad28"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:ab1292c82a3f43be3bd57b63a05fe0214"><td class="memItemLeft" align="right" valign="top">static const NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#ab1292c82a3f43be3bd57b63a05fe0214">kNilNode</a></td></tr>
<tr class="memdesc:ab1292c82a3f43be3bd57b63a05fe0214"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constants that will never be a valid node or arc. <a href="#ab1292c82a3f43be3bd57b63a05fe0214">More...</a><br /></td></tr>
<tr class="separator:ab1292c82a3f43be3bd57b63a05fe0214"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5b77846f77c2771e840820812ad5521"><td class="memItemLeft" align="right" valign="top">static const ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#ad5b77846f77c2771e840820812ad5521">kNilArc</a></td></tr>
<tr class="separator:ad5b77846f77c2771e840820812ad5521"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ac47030fcb75a3220f8cf9ed79697056e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#ac47030fcb75a3220f8cf9ed79697056e">ComputeCumulativeSum</a> (std::vector&lt; ArcIndexType &gt; *v)</td></tr>
<tr class="memdesc:ac47030fcb75a3220f8cf9ed79697056e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions commented when defined because they are implementation details. <a href="#ac47030fcb75a3220f8cf9ed79697056e">More...</a><br /></td></tr>
<tr class="separator:ac47030fcb75a3220f8cf9ed79697056e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63fd586eed6c345866317e2f0faf377e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a63fd586eed6c345866317e2f0faf377e">BuildStartAndForwardHead</a> (<a class="el" href="classutil_1_1SVector.html">SVector</a>&lt; NodeIndexType &gt; *head, std::vector&lt; ArcIndexType &gt; *start, std::vector&lt; ArcIndexType &gt; *permutation)</td></tr>
<tr class="memdesc:a63fd586eed6c345866317e2f0faf377e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Given the tail of arc #i in (*head)[i] and the head of arc #i in (*head)[~i]. <a href="#a63fd586eed6c345866317e2f0faf377e">More...</a><br /></td></tr>
<tr class="separator:a63fd586eed6c345866317e2f0faf377e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a473db46afec1eabf0762411830dee30f"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a473db46afec1eabf0762411830dee30f">num_nodes_</a></td></tr>
<tr class="separator:a473db46afec1eabf0762411830dee30f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a424bd34a9767e7edeaf3a60ecd3cb000"><td class="memItemLeft" align="right" valign="top">NodeIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a424bd34a9767e7edeaf3a60ecd3cb000">node_capacity_</a></td></tr>
<tr class="separator:a424bd34a9767e7edeaf3a60ecd3cb000"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af16f99d41856a7b22ae8a226ef09abff"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#af16f99d41856a7b22ae8a226ef09abff">num_arcs_</a></td></tr>
<tr class="separator:af16f99d41856a7b22ae8a226ef09abff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a895e891d1ad52ce3efcfeb7ba11194c7"><td class="memItemLeft" align="right" valign="top">ArcIndexType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#a895e891d1ad52ce3efcfeb7ba11194c7">arc_capacity_</a></td></tr>
<tr class="separator:a895e891d1ad52ce3efcfeb7ba11194c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa980e5526b9ded17a83928fc339c71e4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classutil_1_1BaseGraph.html#aa980e5526b9ded17a83928fc339c71e4">const_capacities_</a></td></tr>
<tr class="separator:aa980e5526b9ded17a83928fc339c71e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename NodeIndexType = int32, typename ArcIndexType = int32&gt;<br />
class util::CompleteGraph&lt; NodeIndexType, ArcIndexType &gt;</h3>
<p><a class="el" href="classutil_1_1CompleteGraph.html" title="CompleteGraph implementation ---------------------------------------------— Nodes and arcs are implic...">CompleteGraph</a> implementation ---------------------------------------------&mdash; Nodes and arcs are implicit and not stored. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l02174">2174</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a0eba6e5899924388644dfa2258ae8929"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0eba6e5899924388644dfa2258ae8929">&#9670;&nbsp;</a></span>ArcIndex</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::<a class="el" href="classutil_1_1BaseGraph.html#a0eba6e5899924388644dfa2258ae8929">ArcIndex</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00190">190</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="adb271cf4bcf2de5b5bbe300d7054af29"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb271cf4bcf2de5b5bbe300d7054af29">&#9670;&nbsp;</a></span>NodeIndex</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::<a class="el" href="classutil_1_1BaseGraph.html#adb271cf4bcf2de5b5bbe300d7054af29">NodeIndex</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Typedef so you can use <a class="el" href="classutil_1_1BaseGraph.html#adb271cf4bcf2de5b5bbe300d7054af29" title="Typedef so you can use Graph::NodeIndex and Graph::ArcIndex to be generic but also to improve the rea...">Graph::NodeIndex</a> and <a class="el" href="classutil_1_1BaseGraph.html#a0eba6e5899924388644dfa2258ae8929">Graph::ArcIndex</a> to be generic but also to improve the readability of your code. </p>
<p>We also recommend that you define a typedef ... Graph; for readability. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00189">189</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad3401c3d9df9b08cd9be279464029a32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3401c3d9df9b08cd9be279464029a32">&#9670;&nbsp;</a></span>CompleteGraph()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType = int32, typename ArcIndexType = int32&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classutil_1_1CompleteGraph.html">util::CompleteGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::<a class="el" href="classutil_1_1CompleteGraph.html">CompleteGraph</a> </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>num_nodes</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Builds a complete graph with num_nodes nodes. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l02184">2184</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="abcfd7c21143e5ed38573c0dd60826dd8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcfd7c21143e5ed38573c0dd60826dd8">&#9670;&nbsp;</a></span>AllForwardArcs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">IntegerRange&lt; ArcIndexType &gt; <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::AllForwardArcs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00935">935</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a32ba4a5ca9a4b89f750eb2dc56518b02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32ba4a5ca9a4b89f750eb2dc56518b02">&#9670;&nbsp;</a></span>AllNodes()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">IntegerRange&lt; NodeIndexType &gt; <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::AllNodes </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Allows nice range-based for loop: for (const NodeIndex node : graph.AllNodes()) { ... </p>
<p><a class="el" href="classutil_1_1BaseGraph.html" title="Base class of all Graphs implemented here.">BaseGraph</a> implementation -------------------------------------------------&mdash;.</p>
<p>} for (const ArcIndex arc : graph.AllForwardArcs()) { ... } </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00929">929</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a92ffd852b2ab2e5241f9832e71a2de71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92ffd852b2ab2e5241f9832e71a2de71">&#9670;&nbsp;</a></span>arc_capacity()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::arc_capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Capacity reserved for future arcs, always &gt;= num_arcs_. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000014">Todo:</a></b></dt><dd>(user): Same questions as the ones in <a class="el" href="classutil_1_1BaseGraph.html#a463d57480c9563a7a707c5d0928c9946" title="Capacity reserved for future nodes, always &gt;= num_nodes_.">node_capacity()</a>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00959">959</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a63fd586eed6c345866317e2f0faf377e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63fd586eed6c345866317e2f0faf377e">&#9670;&nbsp;</a></span>BuildStartAndForwardHead()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::BuildStartAndForwardHead </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classutil_1_1SVector.html">SVector</a>&lt; NodeIndexType &gt; *&#160;</td>
<td class="paramname"><em>head</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; ArcIndexType &gt; *&#160;</td>
<td class="paramname"><em>start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; ArcIndexType &gt; *&#160;</td>
<td class="paramname"><em>permutation</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">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Given the tail of arc #i in (*head)[i] and the head of arc #i in (*head)[~i]. </p>
<ul>
<li>Reorder the arc by increasing tail.</li>
<li>Put the head of the new arc #i in (*head)[i].</li>
<li>Put in start[i] the index of the first arc with tail &gt;= i.</li>
<li>Update "permutation" to reflect the change, unless it is NULL. </li>
</ul>
<p>Computes the outgoing degree of each nodes and check if we need to permute something or not. Note that the tails are currently stored in the positive range of the <a class="el" href="classutil_1_1SVector.html" title="Forward declaration.">SVector</a> head.</p>
<p>Abort early if we do not need the permutation: we only need to put the heads in the positive range.</p>
<p>Computes the forward arc permutation. </p><dl class="section note"><dt>Note</dt><dd>this temporarily alters the start vector.</dd></dl>
<p>Restore in (*start)[i] the index of the first arc with tail &gt;= i.</p>
<p>Permutes the head into their final position in head. We do not need the tails anymore at this point. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00995">995</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="ac47030fcb75a3220f8cf9ed79697056e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac47030fcb75a3220f8cf9ed79697056e">&#9670;&nbsp;</a></span>ComputeCumulativeSum()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::ComputeCumulativeSum </td>
<td>(</td>
<td class="paramtype">std::vector&lt; ArcIndexType &gt; *&#160;</td>
<td class="paramname"><em>v</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Functions commented when defined because they are implementation details. </p>
<p>Computes the cummulative sum of the entry in v.</p>
<p>We only use it with in/out degree distribution, hence the Check() at the end. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00978">978</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aa3bd051d1e141b09dda17aa9b5f24f69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3bd051d1e141b09dda17aa9b5f24f69">&#9670;&nbsp;</a></span>FreezeCapacities()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::FreezeCapacities </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classutil_1_1BaseGraph.html#aa3bd051d1e141b09dda17aa9b5f24f69" title="FreezeCapacities() makes any future attempt to change the graph capacities crash in DEBUG mode.">FreezeCapacities()</a> makes any future attempt to change the graph capacities crash in DEBUG mode. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000015">Todo:</a></b></dt><dd>(user): Only define this in debug mode at the cost of having a lot of ifndef NDEBUG all over the place? remove the function completely ? </dd></dl>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00966">966</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a07214b96597069d781e27b1dd17ef83e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07214b96597069d781e27b1dd17ef83e">&#9670;&nbsp;</a></span>GroupForwardArcsByFunctor()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::GroupForwardArcsByFunctor </td>
<td>(</td>
<td class="paramtype">const A &amp;&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">B *&#160;</td>
<td class="paramname"><em>b</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 class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000017">Todo:</a></b></dt><dd>(user): remove the public functions below.</dd></dl>
<p>They are just here during the transition from the old ebert_graph api to this new graph api. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00264">264</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="af32d9f7de8ae0ccb7a859794a8fa7329"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af32d9f7de8ae0ccb7a859794a8fa7329">&#9670;&nbsp;</a></span>Head()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1CompleteGraph.html">util::CompleteGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::Head </td>
<td>(</td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>arc</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l02201">2201</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a2097ccda3b1ad27e2c82166979018bda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2097ccda3b1ad27e2c82166979018bda">&#9670;&nbsp;</a></span>IsArcValid()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::IsArcValid </td>
<td>(</td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>arc</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the given arc is a valid arc of the graph. </p>
<dl class="section note"><dt>Note</dt><dd>the arc validity range changes for graph with reverse arcs. </dd></dl>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00219">219</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="abf853acea86e01356f53055f77661770"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf853acea86e01356f53055f77661770">&#9670;&nbsp;</a></span>IsNodeValid()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::IsNodeValid </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns true if the given node is a valid node of the graph. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00213">213</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a346b8a5811f0e287e1ebce2de2c1ad28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a346b8a5811f0e287e1ebce2de2c1ad28">&#9670;&nbsp;</a></span>max_end_arc_index()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::max_end_arc_index </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00267">267</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a463d57480c9563a7a707c5d0928c9946"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a463d57480c9563a7a707c5d0928c9946">&#9670;&nbsp;</a></span>node_capacity()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::node_capacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Capacity reserved for future nodes, always &gt;= num_nodes_. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000013">Todo:</a></b></dt><dd>(user): Is it needed? remove completely? return the real capacities at the cost of having a different implementation for each graphs? </dd></dl>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00951">951</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aefb468e4d4a3128c91b3bad9f5b314c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aefb468e4d4a3128c91b3bad9f5b314c8">&#9670;&nbsp;</a></span>num_arcs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::num_arcs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of valid arcs in the graph. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00204">204</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a0f551c921fa0b5aaa334a6e36f61db4a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f551c921fa0b5aaa334a6e36f61db4a">&#9670;&nbsp;</a></span>num_nodes()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::num_nodes </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the number of valid nodes in the graph. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00201">201</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="ab12a266c0c091c00a150667619f491d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab12a266c0c091c00a150667619f491d4">&#9670;&nbsp;</a></span>operator[]()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">IntegerRange&lt; NodeIndexType &gt; <a class="el" href="classutil_1_1CompleteGraph.html">util::CompleteGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::operator[] </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l02241">2241</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a715345c684f1cbeb1896f09ebd989dd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a715345c684f1cbeb1896f09ebd989dd1">&#9670;&nbsp;</a></span>OutDegree()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1CompleteGraph.html">util::CompleteGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::OutDegree </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l02215">2215</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aa5561d57ac19a632ed3086e7f96fdbe6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5561d57ac19a632ed3086e7f96fdbe6">&#9670;&nbsp;</a></span>OutgoingArcs()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">IntegerRange&lt; ArcIndexType &gt; <a class="el" href="classutil_1_1CompleteGraph.html">util::CompleteGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::OutgoingArcs </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l02222">2222</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a77b6facc3e744aa4ff764c9b9725e2d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77b6facc3e744aa4ff764c9b9725e2d8">&#9670;&nbsp;</a></span>OutgoingArcsStartingFrom()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">IntegerRange&lt; ArcIndexType &gt; <a class="el" href="classutil_1_1CompleteGraph.html">util::CompleteGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::OutgoingArcsStartingFrom </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>from</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l02232">2232</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="ab731ca5c638e7b1b0a2c459c94a90f55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab731ca5c638e7b1b0a2c459c94a90f55">&#9670;&nbsp;</a></span>Reserve()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::Reserve </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>node_capacity</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>arc_capacity</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 class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00247">247</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a9563f7154a759843923dd9bb27b288e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9563f7154a759843923dd9bb27b288e7">&#9670;&nbsp;</a></span>ReserveArcs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::ReserveArcs </td>
<td>(</td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>bound</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reimplemented in <a class="el" href="classutil_1_1StaticGraph.html#a98f11aaa1013df49976fcb5433538ff5">util::StaticGraph&lt; NodeIndexType, ArcIndexType &gt;</a>, and <a class="el" href="classutil_1_1ListGraph.html#af637e16c3c7604f0354a6fa317358a15">util::ListGraph&lt; NodeIndexType, ArcIndexType &gt;</a>.</p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00241">241</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a69a71cbb575b13bde9899f5a6a217139"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69a71cbb575b13bde9899f5a6a217139">&#9670;&nbsp;</a></span>ReserveNodes()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::ReserveNodes </td>
<td>(</td>
<td class="paramtype">NodeIndexType&#160;</td>
<td class="paramname"><em>bound</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Changes the graph capacities. </p>
<p>The functions will fail in debug mode if:</p><ul>
<li>const_capacities_ is true.</li>
<li>A valid node does not fall into the new node range.</li>
<li>A valid arc does not fall into the new arc range. In non-debug mode, const_capacities_ is ignored and nothing will happen if the new capacity value for the arcs or the nodes is too small. </li>
</ul>
<p>Reimplemented in <a class="el" href="classutil_1_1StaticGraph.html#a9b1c856f35140cb8902b94374a43d368">util::StaticGraph&lt; NodeIndexType, ArcIndexType &gt;</a>, and <a class="el" href="classutil_1_1ListGraph.html#aefd885a0eba3ec33568137533190ba5b">util::ListGraph&lt; NodeIndexType, ArcIndexType &gt;</a>.</p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00235">235</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aa6dc77def1cc80ffd14cb931a3043e52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6dc77def1cc80ffd14cb931a3043e52">&#9670;&nbsp;</a></span>Tail()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename NodeIndexType , typename ArcIndexType &gt; </div>
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1CompleteGraph.html">util::CompleteGraph</a>&lt; NodeIndexType, ArcIndexType &gt;::Tail </td>
<td>(</td>
<td class="paramtype">ArcIndexType&#160;</td>
<td class="paramname"><em>arc</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l02208">2208</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a895e891d1ad52ce3efcfeb7ba11194c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a895e891d1ad52ce3efcfeb7ba11194c7">&#9670;&nbsp;</a></span>arc_capacity_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::arc_capacity_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00279">279</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="aa980e5526b9ded17a83928fc339c71e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa980e5526b9ded17a83928fc339c71e4">&#9670;&nbsp;</a></span>const_capacities_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::const_capacities_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00280">280</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="ad5b77846f77c2771e840820812ad5521"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad5b77846f77c2771e840820812ad5521">&#9670;&nbsp;</a></span>kNilArc</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::kNilArc</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00259">259</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="ab1292c82a3f43be3bd57b63a05fe0214"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1292c82a3f43be3bd57b63a05fe0214">&#9670;&nbsp;</a></span>kNilNode</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::kNilNode</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constants that will never be a valid node or arc. </p>
<p>They are the maximum possible node and arc capacity. </p>
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00258">258</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a424bd34a9767e7edeaf3a60ecd3cb000"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a424bd34a9767e7edeaf3a60ecd3cb000">&#9670;&nbsp;</a></span>node_capacity_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::node_capacity_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00277">277</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="af16f99d41856a7b22ae8a226ef09abff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af16f99d41856a7b22ae8a226ef09abff">&#9670;&nbsp;</a></span>num_arcs_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">ArcIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::num_arcs_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00278">278</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<a id="a473db46afec1eabf0762411830dee30f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a473db46afec1eabf0762411830dee30f">&#9670;&nbsp;</a></span>num_nodes_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">NodeIndexType <a class="el" href="classutil_1_1BaseGraph.html">util::BaseGraph</a>&lt; NodeIndexType, ArcIndexType, HasReverseArcs &gt;::num_nodes_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="graph_8h_source.html#l00276">276</a> of file <a class="el" href="graph_8h_source.html">graph.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="graph_8h_source.html">graph.h</a></li>
</ul>
</div><!-- contents -->
</div>
<div id="footer-container">
<div id="footer">
</div>
</div>
</body>
</html>