Files
ortools-clone/docs/cpp_graph/classDenseConnectedComponentsFinder.html
2019-06-20 23:08:48 +02:00

369 lines
19 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.1@</span>
</div>
</div>
<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><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classDenseConnectedComponentsFinder-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">DenseConnectedComponentsFinder Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>NOTE(user): The rest of the functions below should also be in namespace util, but for historical reasons it hasn't been done yet.
<a href="classDenseConnectedComponentsFinder.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="connected__components_8h_source.html">connected_components.h</a>&gt;</code></p>
<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:a33639c91528c2a525e1591df24ff2cc9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#a33639c91528c2a525e1591df24ff2cc9">DenseConnectedComponentsFinder</a> ()</td></tr>
<tr class="separator:a33639c91528c2a525e1591df24ff2cc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0026050f607ccbad98a3ec2b7dcae3c8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#a0026050f607ccbad98a3ec2b7dcae3c8">DenseConnectedComponentsFinder</a> (const <a class="el" href="classDenseConnectedComponentsFinder.html">DenseConnectedComponentsFinder</a> &amp;)=delete</td></tr>
<tr class="separator:a0026050f607ccbad98a3ec2b7dcae3c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20f2a5d6bb7631a0dcdd678387a1b61a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classDenseConnectedComponentsFinder.html">DenseConnectedComponentsFinder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#a20f2a5d6bb7631a0dcdd678387a1b61a">operator=</a> (const <a class="el" href="classDenseConnectedComponentsFinder.html">DenseConnectedComponentsFinder</a> &amp;)=delete</td></tr>
<tr class="separator:a20f2a5d6bb7631a0dcdd678387a1b61a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba450cf3f16d9386d043c4354a19a4aa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#aba450cf3f16d9386d043c4354a19a4aa">AddEdge</a> (int node1, int node2)</td></tr>
<tr class="memdesc:aba450cf3f16d9386d043c4354a19a4aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">The main API is the same as <a class="el" href="classConnectedComponentsFinder.html" title="Usage: ConnectedComponentsFinder&lt;MyNodeType&gt; cc; cc.AddNode(node1); cc.AddNode(node2); cc....">ConnectedComponentsFinder</a> (below): see the homonymous functions there. <a href="#aba450cf3f16d9386d043c4354a19a4aa">More...</a><br /></td></tr>
<tr class="separator:aba450cf3f16d9386d043c4354a19a4aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a071f52956431e211e14ed7f3894c1d0b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#a071f52956431e211e14ed7f3894c1d0b">Connected</a> (int node1, int node2)</td></tr>
<tr class="separator:a071f52956431e211e14ed7f3894c1d0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a639b64de57bc14f04f0f238e0092d1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#a0a639b64de57bc14f04f0f238e0092d1">GetSize</a> (int node)</td></tr>
<tr class="separator:a0a639b64de57bc14f04f0f238e0092d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5090a0bdc205d23778d2b8a742f5c5fd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#a5090a0bdc205d23778d2b8a742f5c5fd">GetNumberOfComponents</a> () const</td></tr>
<tr class="separator:a5090a0bdc205d23778d2b8a742f5c5fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a317fb43e59ef01ebe3d0d492b4ab33dd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#a317fb43e59ef01ebe3d0d492b4ab33dd">GetNumberOfNodes</a> () const</td></tr>
<tr class="separator:a317fb43e59ef01ebe3d0d492b4ab33dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46780e194c525fa9853fa899d69b4340"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#a46780e194c525fa9853fa899d69b4340">SetNumberOfNodes</a> (int num_nodes)</td></tr>
<tr class="memdesc:a46780e194c525fa9853fa899d69b4340"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of nodes in the graph. <a href="#a46780e194c525fa9853fa899d69b4340">More...</a><br /></td></tr>
<tr class="separator:a46780e194c525fa9853fa899d69b4340"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdcff89dd2374ce33c05934d328e64ec"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#afdcff89dd2374ce33c05934d328e64ec">FindRoot</a> (int node)</td></tr>
<tr class="memdesc:afdcff89dd2374ce33c05934d328e64ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the root of the set for the given node. <a href="#afdcff89dd2374ce33c05934d328e64ec">More...</a><br /></td></tr>
<tr class="separator:afdcff89dd2374ce33c05934d328e64ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee7f0057f42256a520b5ef32bae58b36"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDenseConnectedComponentsFinder.html#aee7f0057f42256a520b5ef32bae58b36">GetComponentIds</a> ()</td></tr>
<tr class="memdesc:aee7f0057f42256a520b5ef32bae58b36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the same as <a class="el" href="namespaceutil.html#a13f0e8f7e15873600cf8e395958c71e1" title="Finds the connected components of the graph, using BFS internally.">GetConnectedComponents()</a>. <a href="#aee7f0057f42256a520b5ef32bae58b36">More...</a><br /></td></tr>
<tr class="separator:aee7f0057f42256a520b5ef32bae58b36"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>NOTE(user): The rest of the functions below should also be in namespace util, but for historical reasons it hasn't been done yet. </p>
<p>A connected components finder that only works on dense ints. </p>
<p class="definition">Definition at line <a class="el" href="connected__components_8h_source.html#l00081">81</a> of file <a class="el" href="connected__components_8h_source.html">connected_components.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a33639c91528c2a525e1591df24ff2cc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33639c91528c2a525e1591df24ff2cc9">&#9670;&nbsp;</a></span>DenseConnectedComponentsFinder() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">DenseConnectedComponentsFinder::DenseConnectedComponentsFinder </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="connected__components_8h_source.html#l00083">83</a> of file <a class="el" href="connected__components_8h_source.html">connected_components.h</a>.</p>
</div>
</div>
<a id="a0026050f607ccbad98a3ec2b7dcae3c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0026050f607ccbad98a3ec2b7dcae3c8">&#9670;&nbsp;</a></span>DenseConnectedComponentsFinder() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">DenseConnectedComponentsFinder::DenseConnectedComponentsFinder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classDenseConnectedComponentsFinder.html">DenseConnectedComponentsFinder</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aba450cf3f16d9386d043c4354a19a4aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba450cf3f16d9386d043c4354a19a4aa">&#9670;&nbsp;</a></span>AddEdge()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void DenseConnectedComponentsFinder::AddEdge </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The main API is the same as <a class="el" href="classConnectedComponentsFinder.html" title="Usage: ConnectedComponentsFinder&lt;MyNodeType&gt; cc; cc.AddNode(node1); cc.AddNode(node2); cc....">ConnectedComponentsFinder</a> (below): see the homonymous functions there. </p>
</div>
</div>
<a id="a071f52956431e211e14ed7f3894c1d0b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a071f52956431e211e14ed7f3894c1d0b">&#9670;&nbsp;</a></span>Connected()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool DenseConnectedComponentsFinder::Connected </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="afdcff89dd2374ce33c05934d328e64ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afdcff89dd2374ce33c05934d328e64ec">&#9670;&nbsp;</a></span>FindRoot()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int DenseConnectedComponentsFinder::FindRoot </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the root of the set for the given node. </p>
<p>node must be in [0;<a class="el" href="classDenseConnectedComponentsFinder.html#a317fb43e59ef01ebe3d0d492b4ab33dd">GetNumberOfNodes()</a>-1]. Non-const because it does path compression internally. </p>
</div>
</div>
<a id="aee7f0057f42256a520b5ef32bae58b36"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee7f0057f42256a520b5ef32bae58b36">&#9670;&nbsp;</a></span>GetComponentIds()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;int&gt; DenseConnectedComponentsFinder::GetComponentIds </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the same as <a class="el" href="namespaceutil.html#a13f0e8f7e15873600cf8e395958c71e1" title="Finds the connected components of the graph, using BFS internally.">GetConnectedComponents()</a>. </p>
</div>
</div>
<a id="a5090a0bdc205d23778d2b8a742f5c5fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5090a0bdc205d23778d2b8a742f5c5fd">&#9670;&nbsp;</a></span>GetNumberOfComponents()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int DenseConnectedComponentsFinder::GetNumberOfComponents </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> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="connected__components_8h_source.html#l00095">95</a> of file <a class="el" href="connected__components_8h_source.html">connected_components.h</a>.</p>
</div>
</div>
<a id="a317fb43e59ef01ebe3d0d492b4ab33dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a317fb43e59ef01ebe3d0d492b4ab33dd">&#9670;&nbsp;</a></span>GetNumberOfNodes()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int DenseConnectedComponentsFinder::GetNumberOfNodes </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> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="connected__components_8h_source.html#l00096">96</a> of file <a class="el" href="connected__components_8h_source.html">connected_components.h</a>.</p>
</div>
</div>
<a id="a0a639b64de57bc14f04f0f238e0092d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a639b64de57bc14f04f0f238e0092d1">&#9670;&nbsp;</a></span>GetSize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int DenseConnectedComponentsFinder::GetSize </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a20f2a5d6bb7631a0dcdd678387a1b61a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20f2a5d6bb7631a0dcdd678387a1b61a">&#9670;&nbsp;</a></span>operator=()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classDenseConnectedComponentsFinder.html">DenseConnectedComponentsFinder</a>&amp; DenseConnectedComponentsFinder::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classDenseConnectedComponentsFinder.html">DenseConnectedComponentsFinder</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a46780e194c525fa9853fa899d69b4340"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46780e194c525fa9853fa899d69b4340">&#9670;&nbsp;</a></span>SetNumberOfNodes()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void DenseConnectedComponentsFinder::SetNumberOfNodes </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>num_nodes</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the number of nodes in the graph. </p>
<p>The graph can only grow: this dies if "num_nodes" is lower or equal to any of the values ever given to <a class="el" href="classDenseConnectedComponentsFinder.html#aba450cf3f16d9386d043c4354a19a4aa" title="The main API is the same as ConnectedComponentsFinder (below): see the homonymous functions there.">AddEdge()</a>, or lower than a previous value given to <a class="el" href="classDenseConnectedComponentsFinder.html#a46780e194c525fa9853fa899d69b4340" title="Sets the number of nodes in the graph.">SetNumberOfNodes()</a>. You need this if there are nodes that don't have any edges. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="connected__components_8h_source.html">connected_components.h</a></li>
</ul>
</div><!-- contents -->
</div>
<div id="footer-container">
<div id="footer">
</div>
</div>
</body>
</html>