Documentation for 341ed50da8

This commit is contained in:
github-actions
2021-09-03 19:56:17 +00:00
parent 52d0c55145
commit 08e8eb037e
3432 changed files with 71392 additions and 72953 deletions

View File

@@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: graph/hopcroft_karp.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -17,9 +17,9 @@
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
@@ -32,8 +32,7 @@
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
@@ -42,21 +41,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
@@ -70,7 +70,7 @@ $(function() {
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d1/d9a/hopcroft__karp_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
@@ -94,12 +94,11 @@ $(document).ready(function(){initNavTree('d1/d9a/hopcroft__karp_8cpp.html','../.
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">hopcroft_karp.cpp File Reference</div> </div>
<div class="headertitle"><div class="title">hopcroft_karp.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Hopcroft%E2%80%93Karp_algorithm">HopcroftKarp</a> algorithm.
<p>Implementation of <a href="https://en.wikipedia.org/wiki/Hopcroft%E2%80%93Karp_algorithm" target="_blank">HopcroftKarp</a> algorithm.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;cstdlib&gt;</code><br />
@@ -115,19 +114,19 @@ Include dependency graph for hopcroft_karp.cpp:</div>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d69/classgraph_1_1_h_k_graph.html">graph::HKGraph</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents Bipartite graph for Hopcroft Karp implementation. <a href="../../d8/d69/classgraph_1_1_h_k_graph.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:df/dce/namespacegraph"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html">graph</a></td></tr>
<tr class="memitem:df/dce/namespacegraph"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/dce/namespacegraph.html">graph</a></td></tr>
<tr class="memdesc:df/dce/namespacegraph"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="../../dc/d61/classgraph_1_1_graph.html">Graph</a> Algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a88ec9ad42717780d6caaff9d3d6977f9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d9a/hopcroft__karp_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9">tests</a> ()</td></tr>
<tr class="separator:a88ec9ad42717780d6caaff9d3d6977f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -136,29 +135,29 @@ Functions</h2></td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><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>Implementation of <a href="https://en.wikipedia.org/wiki/Hopcroft%E2%80%93Karp_algorithm">HopcroftKarp</a> algorithm. </p>
<p>The HopcroftKarp algorithm is an algorithm that takes as input a bipartite graph and produces as output a maximum cardinality matching, it runs in O(E√V) time in worst case.</p>
<div class="textblock"><p >Implementation of <a href="https://en.wikipedia.org/wiki/Hopcroft%E2%80%93Karp_algorithm" target="_blank">HopcroftKarp</a> algorithm. </p>
<p >The HopcroftKarp algorithm is an algorithm that takes as input a bipartite graph and produces as output a maximum cardinality matching, it runs in O(E√V) time in worst case.</p>
<h3><a class="anchor" id="autotoc_md67"></a>
Bipartite graph</h3>
<p>A bipartite graph (or bigraph) is a graph whose vertices can be divided into two disjoint and independent sets U and V such that every edge connects a vertex in U to one in V. Vertex sets U and V are usually called the parts of the graph. Equivalently, a bipartite graph is a graph that does not contain any odd-length cycles.</p>
<p >A bipartite graph (or bigraph) is a graph whose vertices can be divided into two disjoint and independent sets U and V such that every edge connects a vertex in U to one in V. Vertex sets U and V are usually called the parts of the graph. Equivalently, a bipartite graph is a graph that does not contain any odd-length cycles.</p>
<h3><a class="anchor" id="autotoc_md68"></a>
Matching and Not-Matching edges</h3>
<p>Given a matching M, edges that are part of matching are called Matching edges and edges that are not part of M (or connect free nodes) are called Not-Matching edges.</p>
<p >Given a matching M, edges that are part of matching are called Matching edges and edges that are not part of M (or connect free nodes) are called Not-Matching edges.</p>
<h3><a class="anchor" id="autotoc_md69"></a>
Maximum cardinality matching</h3>
<p>Given a bipartite graphs G = ( V = ( X , Y ) , E ) whose partition has the parts X and Y, with E denoting the edges of the graph, the goal is to find a matching with as many edges as possible. Equivalently, a matching that covers as many vertices as possible.</p>
<p >Given a bipartite graphs G = ( V = ( X , Y ) , E ) whose partition has the parts X and Y, with E denoting the edges of the graph, the goal is to find a matching with as many edges as possible. Equivalently, a matching that covers as many vertices as possible.</p>
<h3><a class="anchor" id="autotoc_md70"></a>
Augmenting paths</h3>
<p>Given a matching M, an augmenting path is an alternating path that starts from and ends on free vertices. All single edge paths that start and end with free vertices are augmenting paths.</p>
<p >Given a matching M, an augmenting path is an alternating path that starts from and ends on free vertices. All single edge paths that start and end with free vertices are augmenting paths.</p>
<h3><a class="anchor" id="autotoc_md71"></a>
Concept</h3>
<p>A matching M is not maximum if there exists an augmenting path. It is also true other way, i.e, a matching is maximum if no augmenting path exists.</p>
<p >A matching M is not maximum if there exists an augmenting path. It is also true other way, i.e, a matching is maximum if no augmenting path exists.</p>
<h3><a class="anchor" id="autotoc_md72"></a>
Algorithm</h3>
<p>1) Initialize the Maximal Matching M as empty. 2) While there exists an Augmenting Path P Remove matching edges of P from M and add not-matching edges of P to M (This increases size of M by 1 as P starts and ends with a free vertex i.e. a node that is not part of matching.) 3) Return M.</p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Krishnapal4050">Krishna Pal Deora</a> </dd></dl>
<p >1) Initialize the Maximal Matching M as empty. 2) While there exists an Augmenting Path P Remove matching edges of P from M and add not-matching edges of P to M (This increases size of M by 1 as P starts and ends with a free vertex i.e. a node that is not part of matching.) 3) Return M.</p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Krishnapal4050" target="_blank">Krishna Pal Deora</a> </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
@@ -176,25 +175,25 @@ Algorithm</h3>
<p>Main function. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<div class="fragment"><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;{</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="../../d1/d9a/hopcroft__karp_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9">tests</a>(); <span class="comment">// perform self-tests</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; </div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordtype">int</span> v1 = 0, v2 = 0, e = 0;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> &gt;&gt; v1 &gt;&gt; v2 &gt;&gt; e; <span class="comment">// vertices of left side, right side and edges</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="../../d8/d69/classgraph_1_1_h_k_graph.html">HKGraph</a> g(v1, v2); </div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordtype">int</span> u = 0, v = 0;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; e; ++i)</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> &gt;&gt; u &gt;&gt; v;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; g.addEdge(u, v);</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; </div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordtype">int</span> res = g.hopcroftKarpAlgorithm();</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Maximum matching is &quot;</span> &lt;&lt; res &lt;&lt;<span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; </div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; </div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;}</div>
<div class="fragment"><div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span>{</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> <a class="code hl_function" href="../../d1/d9a/hopcroft__karp_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9">tests</a>(); <span class="comment">// perform self-tests</span></div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> </div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="keywordtype">int</span> v1 = 0, v2 = 0, e = 0;</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> &gt;&gt; v1 &gt;&gt; v2 &gt;&gt; e; <span class="comment">// vertices of left side, right side and edges</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <a class="code hl_class" href="../../d8/d69/classgraph_1_1_h_k_graph.html">HKGraph</a> g(v1, v2); </div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordtype">int</span> u = 0, v = 0;</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; e; ++i)</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> {</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> &gt;&gt; u &gt;&gt; v;</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> g.addEdge(u, v);</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> }</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> </div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keywordtype">int</span> res = g.hopcroftKarpAlgorithm();</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Maximum matching is &quot;</span> &lt;&lt; res &lt;&lt;<span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> </div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span>}</div>
<div class="ttc" id="abasic_istream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a></div></div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
<div class="ttc" id="aclassgraph_1_1_h_k_graph_html"><div class="ttname"><a href="../../d8/d69/classgraph_1_1_h_k_graph.html">graph::HKGraph</a></div><div class="ttdoc">Represents Bipartite graph for Hopcroft Karp implementation.</div><div class="ttdef"><b>Definition:</b> hopcroft_karp.cpp:67</div></div>
@@ -202,13 +201,13 @@ Algorithm</h3>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d1/d9a/hopcroft__karp_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="100%" height="407"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d1/d9a/hopcroft__karp_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="580" height="144"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a88ec9ad42717780d6caaff9d3d6977f9"></a>
<a id="a88ec9ad42717780d6caaff9d3d6977f9" name="a88ec9ad42717780d6caaff9d3d6977f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88ec9ad42717780d6caaff9d3d6977f9">&#9670;&nbsp;</a></span>tests()</h2>
<div class="memitem">
@@ -222,57 +221,57 @@ Here is the call graph for this function:</div>
</tr>
</table>
</div><div class="memdoc">
<p>Self-test implementation </p><dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
<div class="fragment"><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// Sample test case 1</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">int</span> v1a = 3, v1b = 5, e1 = 2; <span class="comment">// vertices of left side, right side and edges</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="../../d8/d69/classgraph_1_1_h_k_graph.html">HKGraph</a> g1(v1a, v1b); <span class="comment">// execute the algorithm </span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; g1.addEdge(0,1);</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; g1.addEdge(1,4);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordtype">int</span> expected_res1 = 0; <span class="comment">// for the above sample data, this is the expected output</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordtype">int</span> res1 = g1.hopcroftKarpAlgorithm();</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; </div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; assert(res1 == expected_res1); <span class="comment">// assert check to ensure that the algorithm executed correctly for test 1</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; </div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="comment">// Sample test case 2</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordtype">int</span> v2a = 4, v2b = 4, e2 = 6; <span class="comment">// vertices of left side, right side and edges</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="../../d8/d69/classgraph_1_1_h_k_graph.html">HKGraph</a> g2(v2a, v2b); <span class="comment">// execute the algorithm </span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; </div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; g2.addEdge(1,1);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; g2.addEdge(1,3);</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; g2.addEdge(2,3);</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; g2.addEdge(3,4);</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; g2.addEdge(4,3);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; g2.addEdge(4,2);</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; </div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">int</span> expected_res2 = 0; <span class="comment">// for the above sample data, this is the expected output</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordtype">int</span> res2 = g2.hopcroftKarpAlgorithm();</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; </div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; assert(res2 == expected_res2); <span class="comment">// assert check to ensure that the algorithm executed correctly for test 2</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Sample test case 3</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordtype">int</span> v3a = 6, v3b = 6, e3 = 4; <span class="comment">// vertices of left side, right side and edges</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="../../d8/d69/classgraph_1_1_h_k_graph.html">HKGraph</a> g3(v3a, v3b); <span class="comment">// execute the algorithm </span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; </div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; g3.addEdge(0,1);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; g3.addEdge(1,4);</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; g3.addEdge(1,5);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; g3.addEdge(5,0);</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; </div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">int</span> expected_res3 = 0; <span class="comment">// for the above sample data, this is the expected output</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">int</span> res3 = g3.hopcroftKarpAlgorithm();</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; </div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; assert(res3 == expected_res3); <span class="comment">// assert check to ensure that the algorithm executed correctly for test 3</span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; </div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; </div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;}</div>
<p >Self-test implementation </p><dl class="section return"><dt>Returns</dt><dd>none </dd></dl>
<div class="fragment"><div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> {</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="comment">// Sample test case 1</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="keywordtype">int</span> v1a = 3, v1b = 5, e1 = 2; <span class="comment">// vertices of left side, right side and edges</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <a class="code hl_class" href="../../d8/d69/classgraph_1_1_h_k_graph.html">HKGraph</a> g1(v1a, v1b); <span class="comment">// execute the algorithm </span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> </div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> g1.addEdge(0,1);</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> g1.addEdge(1,4);</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> </div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keywordtype">int</span> expected_res1 = 0; <span class="comment">// for the above sample data, this is the expected output</span></div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keywordtype">int</span> res1 = g1.hopcroftKarpAlgorithm();</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> </div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> assert(res1 == expected_res1); <span class="comment">// assert check to ensure that the algorithm executed correctly for test 1</span></div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> </div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="comment">// Sample test case 2</span></div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keywordtype">int</span> v2a = 4, v2b = 4, e2 = 6; <span class="comment">// vertices of left side, right side and edges</span></div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <a class="code hl_class" href="../../d8/d69/classgraph_1_1_h_k_graph.html">HKGraph</a> g2(v2a, v2b); <span class="comment">// execute the algorithm </span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> g2.addEdge(1,1);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> g2.addEdge(1,3);</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> g2.addEdge(2,3);</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> g2.addEdge(3,4);</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> g2.addEdge(4,3);</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> g2.addEdge(4,2);</div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="keywordtype">int</span> expected_res2 = 0; <span class="comment">// for the above sample data, this is the expected output</span></div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keywordtype">int</span> res2 = g2.hopcroftKarpAlgorithm();</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> assert(res2 == expected_res2); <span class="comment">// assert check to ensure that the algorithm executed correctly for test 2</span></div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> </div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="comment">// Sample test case 3</span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">int</span> v3a = 6, v3b = 6, e3 = 4; <span class="comment">// vertices of left side, right side and edges</span></div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <a class="code hl_class" href="../../d8/d69/classgraph_1_1_h_k_graph.html">HKGraph</a> g3(v3a, v3b); <span class="comment">// execute the algorithm </span></div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> </div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> g3.addEdge(0,1);</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> g3.addEdge(1,4);</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> g3.addEdge(1,5);</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> g3.addEdge(5,0);</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keywordtype">int</span> expected_res3 = 0; <span class="comment">// for the above sample data, this is the expected output</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="keywordtype">int</span> res3 = g3.hopcroftKarpAlgorithm();</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> assert(res3 == expected_res3); <span class="comment">// assert check to ensure that the algorithm executed correctly for test 3</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> </div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> </div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> </div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span>}</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d1/d9a/hopcroft__karp_8cpp_a88ec9ad42717780d6caaff9d3d6977f9_cgraph.svg" width="655" height="143"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d1/d9a/hopcroft__karp_8cpp_a88ec9ad42717780d6caaff9d3d6977f9_cgraph.svg" width="482" height="134"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
@@ -284,7 +283,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_12552d7fa429bf94a2e32e5cf39f7e69.html">graph</a></li><li class="navelem"><a class="el" href="../../d1/d9a/hopcroft__karp_8cpp.html">hopcroft_karp.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
</ul>
</div>
</body>

View File

@@ -1,6 +1,6 @@
var hopcroft__karp_8cpp =
[
[ "HKGraph", "d8/d69/classgraph_1_1_h_k_graph.html", "d8/d69/classgraph_1_1_h_k_graph" ],
[ "graph::HKGraph", "d8/d69/classgraph_1_1_h_k_graph.html", "d8/d69/classgraph_1_1_h_k_graph" ],
[ "main", "d1/d9a/hopcroft__karp_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
[ "tests", "d1/d9a/hopcroft__karp_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9", null ]
];

View File

@@ -1,9 +1,7 @@
<map id="tests" name="tests">
<area shape="rect" id="node1" title=" " alt="" coords="5,35,56,61"/>
<area shape="rect" id="node2" href="$d8/d69/classgraph_1_1_h_k_graph.html#a3b49011c09cf90a116ab53bef61cd95a" title="function to add edge from u to v" alt="" coords="104,5,284,32"/>
<area shape="rect" id="node4" href="$d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d" title="This function counts the number of augmenting paths between left and right sides of the Bipartite gra..." alt="" coords="107,57,281,98"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back.html#" title=" " alt="" coords="332,5,488,32"/>
<area shape="rect" id="node5" href="$d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93" title="This function checks for the possibility of augmented path availability." alt="" coords="338,60,482,87"/>
<area shape="rect" id="node7" href="$d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0" title="This functions checks whether an augmenting path is available exists beginning with free vertex u." alt="" coords="338,111,482,137"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="536,85,649,112"/>
<area shape="rect" id="node3" href="$d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d" title="This function counts the number of augmenting paths between left and right sides of the Bipartite gra..." alt="" coords="107,57,281,98"/>
<area shape="rect" id="node4" href="$d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93" title="This function checks for the possibility of augmented path availability." alt="" coords="332,27,476,53"/>
<area shape="rect" id="node5" href="$d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0" title="This functions checks whether an augmenting path is available exists beginning with free vertex u." alt="" coords="332,101,476,128"/>
</map>

View File

@@ -1 +1 @@
419a8bf7cbe88704d5a9b06319e81efb
534a33e5daa1a50fe5288dc58554c2a5

View File

@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: tests Pages: 1 -->
<svg width="491pt" height="107pt"
viewBox="0.00 0.00 491.00 107.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 103)">
<svg width="361pt" height="100pt"
viewBox="0.00 0.00 361.00 100.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 96)">
<title>tests</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-103 487,-103 487,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-96 357,-96 357,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-57.5 0,-76.5 38,-76.5 38,-57.5 0,-57.5"/>
<text text-anchor="middle" x="19" y="-64.5" font-family="Helvetica,sans-Serif" font-size="10.00">tests</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-50.5 0,-69.5 38,-69.5 38,-50.5 0,-50.5"/>
<text text-anchor="middle" x="19" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">tests</text>
</a>
</g>
</g>
@@ -22,98 +22,68 @@
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3b49011c09cf90a116ab53bef61cd95a" target="_top" xlink:title="function to add edge from u to v">
<polygon fill="white" stroke="black" points="74,-79.5 74,-98.5 209,-98.5 209,-79.5 74,-79.5"/>
<text text-anchor="middle" x="141.5" y="-86.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::addEdge</text>
<polygon fill="white" stroke="black" points="74,-72.5 74,-91.5 209,-91.5 209,-72.5 74,-72.5"/>
<text text-anchor="middle" x="141.5" y="-79.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::addEdge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M38.04,-70.29C48.92,-72.28 63.5,-74.94 78.23,-77.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="77.95,-81.14 88.42,-79.49 79.21,-74.25 77.95,-81.14"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d" target="_top" xlink:title="This function counts the number of augmenting paths between left and right sides of the Bipartite gra...">
<polygon fill="white" stroke="black" points="76,-30 76,-60 207,-60 207,-30 76,-30"/>
<text text-anchor="start" x="84" y="-48" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::hopcroft</text>
<text text-anchor="middle" x="141.5" y="-37" font-family="Helvetica,sans-Serif" font-size="10.00">KarpAlgorithm</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M38.04,-63.71C45.85,-62.28 55.57,-60.51 65.88,-58.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="66.69,-62.03 75.9,-56.79 65.43,-55.15 66.69,-62.03"/>
<path fill="none" stroke="midnightblue" d="M38.04,-63.29C48.92,-65.28 63.5,-67.94 78.23,-70.63"/>
<polygon fill="midnightblue" stroke="midnightblue" points="77.95,-74.14 88.42,-72.49 79.21,-67.25 77.95,-74.14"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="245,-79.5 245,-98.5 362,-98.5 362,-79.5 245,-79.5"/>
<text text-anchor="middle" x="303.5" y="-86.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<g id="a_node3"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d" target="_top" xlink:title="This function counts the number of augmenting paths between left and right sides of the Bipartite gra...">
<polygon fill="white" stroke="black" points="76,-23 76,-53 207,-53 207,-23 76,-23"/>
<text text-anchor="start" x="84" y="-41" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::hopcroft</text>
<text text-anchor="middle" x="141.5" y="-30" font-family="Helvetica,sans-Serif" font-size="10.00">KarpAlgorithm</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M209.43,-89C217.83,-89 226.43,-89 234.84,-89"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.98,-92.5 244.98,-89 234.98,-85.5 234.98,-92.5"/>
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M38.04,-56.71C45.85,-55.28 55.57,-53.51 65.88,-51.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="66.69,-55.03 75.9,-49.79 65.43,-48.15 66.69,-55.03"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93" target="_top" xlink:title="This function checks for the possibility of augmented path availability.">
<polygon fill="white" stroke="black" points="245,-56.5 245,-75.5 353,-75.5 353,-56.5 245,-56.5"/>
<text text-anchor="middle" x="299" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::bfs</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M207.1,-49.63C216.41,-51.31 225.98,-53.03 235.26,-54.7"/>
<polygon fill="midnightblue" stroke="midnightblue" points="234.72,-58.16 245.19,-56.49 235.96,-51.27 234.72,-58.16"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93" target="_top" xlink:title="This function checks for the possibility of augmented path availability.">
<polygon fill="white" stroke="black" points="249.5,-38.5 249.5,-57.5 357.5,-57.5 357.5,-38.5 249.5,-38.5"/>
<text text-anchor="middle" x="303.5" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::bfs</text>
<g id="a_node5"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0" target="_top" xlink:title="This functions checks whether an augmenting path is available exists beginning with free vertex u.">
<polygon fill="white" stroke="black" points="245,-0.5 245,-19.5 353,-19.5 353,-0.5 245,-0.5"/>
<text text-anchor="middle" x="299" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::dfs</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node5 -->
<!-- Node3&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M207.12,-46.21C217.76,-46.41 228.79,-46.62 239.4,-46.82"/>
<polygon fill="midnightblue" stroke="midnightblue" points="239.35,-50.32 249.42,-47 239.49,-43.32 239.35,-50.32"/>
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M207.1,-26.37C216.41,-24.69 225.98,-22.97 235.26,-21.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="235.96,-24.73 245.19,-19.51 234.72,-17.84 235.96,-24.73"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0" target="_top" xlink:title="This functions checks whether an augmenting path is available exists beginning with free vertex u.">
<polygon fill="white" stroke="black" points="249.5,-0.5 249.5,-19.5 357.5,-19.5 357.5,-0.5 249.5,-0.5"/>
<text text-anchor="middle" x="303.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::dfs</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M207.12,-30.87C220.94,-27.84 235.4,-24.68 248.76,-21.76"/>
<polygon fill="midnightblue" stroke="midnightblue" points="249.71,-25.13 258.73,-19.57 248.22,-18.29 249.71,-25.13"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="398,-19.5 398,-38.5 483,-38.5 483,-19.5 398,-19.5"/>
<text text-anchor="middle" x="440.5" y="-26.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node6 -->
<!-- Node5&#45;&gt;Node5 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M357.86,-40.49C367.7,-39.1 377.97,-37.66 387.76,-36.28"/>
<polygon fill="midnightblue" stroke="midnightblue" points="388.35,-39.73 397.77,-34.87 387.38,-32.8 388.35,-39.73"/>
</g>
<!-- Node7&#45;&gt;Node6 -->
<g id="edge7" class="edge">
<title>Node7&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M357.86,-17.51C367.7,-18.9 377.97,-20.34 387.76,-21.72"/>
<polygon fill="midnightblue" stroke="midnightblue" points="387.38,-25.2 397.77,-23.13 388.35,-18.27 387.38,-25.2"/>
<title>Node5&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M274.96,-19.76C263.26,-28.57 271.27,-38 299,-38 317.2,-38 326.9,-33.94 328.12,-28.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="331.04,-26.71 323.04,-19.76 324.96,-30.18 331.04,-26.71"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -1,10 +1,8 @@
<map id="main" name="main">
<area shape="rect" id="node1" title="Main function." alt="" coords="5,45,56,72"/>
<area shape="rect" id="node2" href="$d8/d69/classgraph_1_1_h_k_graph.html#a3b49011c09cf90a116ab53bef61cd95a" title="function to add edge from u to v" alt="" coords="203,5,383,32"/>
<area shape="rect" id="node4" href="$d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d" title="This function counts the number of augmenting paths between left and right sides of the Bipartite gra..." alt="" coords="205,67,380,109"/>
<area shape="rect" id="node8" href="$d1/d9a/hopcroft__karp_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9" title=" " alt="" coords="104,45,155,72"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/push_back.html#" title=" " alt="" coords="431,5,587,32"/>
<area shape="rect" id="node5" href="$d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93" title="This function checks for the possibility of augmented path availability." alt="" coords="437,60,581,87"/>
<area shape="rect" id="node7" href="$d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0" title="This functions checks whether an augmenting path is available exists beginning with free vertex u." alt="" coords="437,111,581,137"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/container/vector/end.html#" title=" " alt="" coords="635,85,748,112"/>
<area shape="rect" id="node3" href="$d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d" title="This function counts the number of augmenting paths between left and right sides of the Bipartite gra..." alt="" coords="205,67,380,109"/>
<area shape="rect" id="node6" href="$d1/d9a/hopcroft__karp_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9" title=" " alt="" coords="104,45,155,72"/>
<area shape="rect" id="node4" href="$d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93" title="This function checks for the possibility of augmented path availability." alt="" coords="431,37,575,64"/>
<area shape="rect" id="node5" href="$d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0" title="This functions checks whether an augmenting path is available exists beginning with free vertex u." alt="" coords="431,112,575,139"/>
</map>

View File

@@ -1 +1 @@
a0d5a38cc5fee67eca81aa0294d0349d
3cd89b90428da094b5ee440de29552e9

View File

@@ -1,66 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
<!-- Generated by graphviz version 2.49.0 (20210828.1703)
-->
<!-- Title: main Pages: 1 -->
<!--zoomable 107 -->
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="text/javascript"><![CDATA[
var edges = document.getElementsByTagName('g');
if (edges && edges.length) {
for (var i=0;i<edges.length;i++) {
if (edges[i].id.substr(0,4)=='edge') {
edges[i].setAttribute('class','edge');
}
}
}
]]></script>
<defs>
<circle id="rim" cx="0" cy="0" r="7"/>
<circle id="rim2" cx="0" cy="0" r="3.5"/>
<g id="zoomPlus">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomplus.mouseover" end="zoomplus.mouseout"/>
</use>
<path d="M-4,0h8M0,-4v8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="zoomMin">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomminus.mouseover" end="zoomminus.mouseout"/>
</use>
<path d="M-4,0h8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="dirArrow">
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="resetDef">
<use xlink:href="#rim2" fill="#404040">
<set attributeName="fill" to="#808080" begin="reset.mouseover" end="reset.mouseout"/>
</use>
</g>
</defs>
<script type="text/javascript">
var viewWidth = 565;
var viewHeight = 107;
var sectionId = 'dynsection-1';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<svg width="435pt" height="108pt"
viewBox="0.00 0.00 435.00 108.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 104)">
<title>main</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-103 561,-103 561,4 -4,4"/>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-104 431,-104 431,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="Main function.">
<polygon fill="#bfbfbf" stroke="black" points="0,-49.5 0,-68.5 38,-68.5 38,-49.5 0,-49.5"/>
<text text-anchor="middle" x="19" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
<polygon fill="#bfbfbf" stroke="black" points="0,-50.5 0,-69.5 38,-69.5 38,-50.5 0,-50.5"/>
<text text-anchor="middle" x="19" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
</a>
</g>
</g>
@@ -68,167 +22,95 @@ var sectionId = 'dynsection-1';
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3b49011c09cf90a116ab53bef61cd95a" target="_top" xlink:title="function to add edge from u to v">
<polygon fill="white" stroke="black" points="148,-79.5 148,-98.5 283,-98.5 283,-79.5 148,-79.5"/>
<text text-anchor="middle" x="215.5" y="-86.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::addEdge</text>
<polygon fill="white" stroke="black" points="148,-80.5 148,-99.5 283,-99.5 283,-80.5 148,-80.5"/>
<text text-anchor="middle" x="215.5" y="-87.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::addEdge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M38.15,-66.72C48.48,-70.77 61.75,-75.41 74,-78 94.47,-82.32 116.94,-84.99 137.79,-86.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="137.66,-90.12 147.88,-87.34 138.15,-83.13 137.66,-90.12"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d" target="_top" xlink:title="This function counts the number of augmenting paths between left and right sides of the Bipartite gra...">
<polygon fill="white" stroke="black" points="150,-22 150,-52 281,-52 281,-22 150,-22"/>
<text text-anchor="start" x="158" y="-40" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::hopcroft</text>
<text text-anchor="middle" x="215.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">KarpAlgorithm</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M38.1,-51.01C48.41,-46.88 61.68,-42.24 74,-40 95.04,-36.17 118.15,-34.62 139.43,-34.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="139.76,-37.72 149.72,-34.12 139.69,-30.72 139.76,-37.72"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a xlink:href="../../d1/d9a/hopcroft__karp_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-49.5 74,-68.5 112,-68.5 112,-49.5 74,-49.5"/>
<text text-anchor="middle" x="93" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00">tests</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node8 -->
<g id="edge8" class="edge">
<title>Node1&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M38.17,-59C45.87,-59 55.03,-59 63.58,-59"/>
<polygon fill="midnightblue" stroke="midnightblue" points="63.59,-62.5 73.59,-59 63.59,-55.5 63.59,-62.5"/>
<path fill="none" stroke="midnightblue" d="M38.15,-67.72C48.48,-71.77 61.75,-76.41 74,-79 94.47,-83.32 116.94,-85.99 137.79,-87.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="137.66,-91.12 147.88,-88.34 138.15,-84.13 137.66,-91.12"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="319,-79.5 319,-98.5 436,-98.5 436,-79.5 319,-79.5"/>
<text text-anchor="middle" x="377.5" y="-86.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
<g id="a_node3"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d" target="_top" xlink:title="This function counts the number of augmenting paths between left and right sides of the Bipartite gra...">
<polygon fill="white" stroke="black" points="150,-23 150,-53 281,-53 281,-23 150,-23"/>
<text text-anchor="start" x="158" y="-41" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::hopcroft</text>
<text text-anchor="middle" x="215.5" y="-30" font-family="Helvetica,sans-Serif" font-size="10.00">KarpAlgorithm</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<!-- Node1&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M283.43,-89C291.83,-89 300.43,-89 308.84,-89"/>
<polygon fill="midnightblue" stroke="midnightblue" points="308.98,-92.5 318.98,-89 308.98,-85.5 308.98,-92.5"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93" target="_top" xlink:title="This function checks for the possibility of augmented path availability.">
<polygon fill="white" stroke="black" points="323.5,-38.5 323.5,-57.5 431.5,-57.5 431.5,-38.5 323.5,-38.5"/>
<text text-anchor="middle" x="377.5" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::bfs</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M281.12,-41.44C291.76,-42.17 302.79,-42.93 313.4,-43.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="313.2,-47.16 323.42,-44.35 313.68,-40.17 313.2,-47.16"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0" target="_top" xlink:title="This functions checks whether an augmenting path is available exists beginning with free vertex u.">
<polygon fill="white" stroke="black" points="323.5,-0.5 323.5,-19.5 431.5,-19.5 431.5,-0.5 323.5,-0.5"/>
<text text-anchor="middle" x="377.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::dfs</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M281.12,-26.1C291.76,-24.3 302.79,-22.44 313.4,-20.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="314.14,-24.07 323.42,-18.96 312.98,-17.17 314.14,-24.07"/>
<title>Node1&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M38.1,-52.01C48.41,-47.88 61.68,-43.24 74,-41 95.04,-37.17 118.15,-35.62 139.43,-35.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="139.76,-38.72 149.72,-35.12 139.69,-31.72 139.76,-38.72"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="472,-19.5 472,-38.5 557,-38.5 557,-19.5 472,-19.5"/>
<text text-anchor="middle" x="514.5" y="-26.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
<g id="a_node6"><a xlink:href="../../d1/d9a/hopcroft__karp_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-50.5 74,-69.5 112,-69.5 112,-50.5 74,-50.5"/>
<text text-anchor="middle" x="93" y="-57.5" font-family="Helvetica,sans-Serif" font-size="10.00">tests</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node6 -->
<!-- Node1&#45;&gt;Node6 -->
<g id="edge6" class="edge">
<title>Node1&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M38.17,-60C45.87,-60 55.03,-60 63.58,-60"/>
<polygon fill="midnightblue" stroke="midnightblue" points="63.59,-63.5 73.59,-60 63.59,-56.5 63.59,-63.5"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93" target="_top" xlink:title="This function checks for the possibility of augmented path availability.">
<polygon fill="white" stroke="black" points="319,-56.5 319,-75.5 427,-75.5 427,-56.5 319,-56.5"/>
<text text-anchor="middle" x="373" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::bfs</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M281.1,-49.63C290.41,-51.31 299.98,-53.03 309.26,-54.7"/>
<polygon fill="midnightblue" stroke="midnightblue" points="308.72,-58.16 319.19,-56.49 309.96,-51.27 308.72,-58.16"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0" target="_top" xlink:title="This functions checks whether an augmenting path is available exists beginning with free vertex u.">
<polygon fill="white" stroke="black" points="319,-0.5 319,-19.5 427,-19.5 427,-0.5 319,-0.5"/>
<text text-anchor="middle" x="373" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::dfs</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node3&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M281.1,-26.37C290.41,-24.69 299.98,-22.97 309.26,-21.3"/>
<polygon fill="midnightblue" stroke="midnightblue" points="309.96,-24.73 319.19,-19.51 308.72,-17.84 309.96,-24.73"/>
</g>
<!-- Node5&#45;&gt;Node5 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M431.86,-40.49C441.7,-39.1 451.97,-37.66 461.76,-36.28"/>
<polygon fill="midnightblue" stroke="midnightblue" points="462.35,-39.73 471.77,-34.87 461.38,-32.8 462.35,-39.73"/>
<title>Node5&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M348.96,-19.76C337.26,-28.57 345.27,-38 373,-38 391.2,-38 400.9,-33.94 402.12,-28.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="405.04,-26.71 397.04,-19.76 398.96,-30.18 405.04,-26.71"/>
</g>
<!-- Node7&#45;&gt;Node6 -->
<!-- Node6&#45;&gt;Node2 -->
<g id="edge7" class="edge">
<title>Node7&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M431.86,-17.51C441.7,-18.9 451.97,-20.34 461.76,-21.72"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.38,-25.2 471.77,-23.13 462.35,-18.27 461.38,-25.2"/>
<title>Node6&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M112.04,-64.49C126.35,-68.05 147.05,-73.21 166.11,-77.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="165.33,-81.36 175.88,-80.38 167.02,-74.57 165.33,-81.36"/>
</g>
<!-- Node8&#45;&gt;Node2 -->
<g id="edge9" class="edge">
<title>Node8&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M112.04,-63.49C126.35,-67.05 147.05,-72.21 166.11,-76.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="165.33,-80.36 175.88,-79.38 167.02,-73.57 165.33,-80.36"/>
</g>
<!-- Node8&#45;&gt;Node4 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M112.04,-55.71C119.85,-54.28 129.57,-52.51 139.88,-50.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="140.69,-54.03 149.9,-48.79 139.43,-47.15 140.69,-54.03"/>
<!-- Node6&#45;&gt;Node3 -->
<g id="edge8" class="edge">
<title>Node6&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M112.04,-56.71C119.85,-55.28 129.57,-53.51 139.88,-51.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="140.69,-55.03 149.9,-49.79 139.43,-48.15 140.69,-55.03"/>
</g>
</g>
</svg>
<g id="navigator" transform="translate(0 0)" fill="#404254">
<rect fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width=".5" x="0" y="0" width="60" height="60"/>
<use id="zoomplus" xlink:href="#zoomPlus" x="17" y="9" onmousedown="handleZoom(evt,'in')"/>
<use id="zoomminus" xlink:href="#zoomMin" x="42" y="9" onmousedown="handleZoom(evt,'out')"/>
<use id="reset" xlink:href="#resetDef" x="30" y="36" onmousedown="handleReset()"/>
<g id="arrowUp" xlink:href="#dirArrow" transform="translate(30 24)" onmousedown="handlePan(0,-1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowUp.mouseover" end="arrowUp.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowRight" xlink:href="#dirArrow" transform="rotate(90) translate(36 -43)" onmousedown="handlePan(1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowRight.mouseover" end="arrowRight.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowDown" xlink:href="#dirArrow" transform="rotate(180) translate(-30 -48)" onmousedown="handlePan(0,1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowDown.mouseover" end="arrowDown.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowLeft" xlink:href="#dirArrow" transform="rotate(270) translate(-36 17)" onmousedown="handlePan(-1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowLeft.mouseover" end="arrowLeft.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
</g>
<svg viewBox="0 0 15 15" width="100%" height="30px" preserveAspectRatio="xMaxYMin meet">
<g id="arrow_out" transform="scale(0.3 0.3)">
<a xlink:href="hopcroft__karp_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph_org.svg" target="_base">
<rect id="button" ry="5" rx="5" y="6" x="6" height="38" width="38"
fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width="1.0"/>
<path id="arrow"
d="M 11.500037,31.436501 C 11.940474,20.09759 22.043105,11.32322 32.158766,21.979434 L 37.068811,17.246167 C 37.068811,17.246167 37.088388,32 37.088388,32 L 22.160133,31.978069 C 22.160133,31.978069 26.997745,27.140456 26.997745,27.140456 C 18.528582,18.264221 13.291696,25.230495 11.500037,31.436501 z"
style="fill:#404040;"/>
</a>
</g>
</svg>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -1,146 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (20210717.1556)
-->
<!-- Title: main Pages: 1 -->
<svg width="565pt" height="107pt"
viewBox="0.00 0.00 565.00 107.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 103)">
<title>main</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-103 561,-103 561,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="Main function.">
<polygon fill="#bfbfbf" stroke="black" points="0,-49.5 0,-68.5 38,-68.5 38,-49.5 0,-49.5"/>
<text text-anchor="middle" x="19" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a3b49011c09cf90a116ab53bef61cd95a" target="_top" xlink:title="function to add edge from u to v">
<polygon fill="white" stroke="black" points="148,-79.5 148,-98.5 283,-98.5 283,-79.5 148,-79.5"/>
<text text-anchor="middle" x="215.5" y="-86.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::addEdge</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M38.15,-66.72C48.48,-70.77 61.75,-75.41 74,-78 94.47,-82.32 116.94,-84.99 137.79,-86.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="137.66,-90.12 147.88,-87.34 138.15,-83.13 137.66,-90.12"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a9dbda80d02bdc26c3e8ff7330c9be75d" target="_top" xlink:title="This function counts the number of augmenting paths between left and right sides of the Bipartite gra...">
<polygon fill="white" stroke="black" points="150,-22 150,-52 281,-52 281,-22 150,-22"/>
<text text-anchor="start" x="158" y="-40" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::hopcroft</text>
<text text-anchor="middle" x="215.5" y="-29" font-family="Helvetica,sans-Serif" font-size="10.00">KarpAlgorithm</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<title>Node1&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M38.1,-51.01C48.41,-46.88 61.68,-42.24 74,-40 95.04,-36.17 118.15,-34.62 139.43,-34.22"/>
<polygon fill="midnightblue" stroke="midnightblue" points="139.76,-37.72 149.72,-34.12 139.69,-30.72 139.76,-37.72"/>
</g>
<!-- Node8 -->
<g id="node8" class="node">
<title>Node8</title>
<g id="a_node8"><a xlink:href="../../d1/d9a/hopcroft__karp_8cpp.html#a88ec9ad42717780d6caaff9d3d6977f9" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-49.5 74,-68.5 112,-68.5 112,-49.5 74,-49.5"/>
<text text-anchor="middle" x="93" y="-56.5" font-family="Helvetica,sans-Serif" font-size="10.00">tests</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node8 -->
<g id="edge8" class="edge">
<title>Node1&#45;&gt;Node8</title>
<path fill="none" stroke="midnightblue" d="M38.17,-59C45.87,-59 55.03,-59 63.58,-59"/>
<polygon fill="midnightblue" stroke="midnightblue" points="63.59,-62.5 73.59,-59 63.59,-55.5 63.59,-62.5"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/push_back.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="319,-79.5 319,-98.5 436,-98.5 436,-79.5 319,-79.5"/>
<text text-anchor="middle" x="377.5" y="-86.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::push_back</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M283.43,-89C291.83,-89 300.43,-89 308.84,-89"/>
<polygon fill="midnightblue" stroke="midnightblue" points="308.98,-92.5 318.98,-89 308.98,-85.5 308.98,-92.5"/>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<title>Node5</title>
<g id="a_node5"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#a7491add14d9fc04f679114ca6d6f0f93" target="_top" xlink:title="This function checks for the possibility of augmented path availability.">
<polygon fill="white" stroke="black" points="323.5,-38.5 323.5,-57.5 431.5,-57.5 431.5,-38.5 323.5,-38.5"/>
<text text-anchor="middle" x="377.5" y="-45.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::bfs</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<title>Node4&#45;&gt;Node5</title>
<path fill="none" stroke="midnightblue" d="M281.12,-41.44C291.76,-42.17 302.79,-42.93 313.4,-43.66"/>
<polygon fill="midnightblue" stroke="midnightblue" points="313.2,-47.16 323.42,-44.35 313.68,-40.17 313.2,-47.16"/>
</g>
<!-- Node7 -->
<g id="node7" class="node">
<title>Node7</title>
<g id="a_node7"><a xlink:href="../../d8/d69/classgraph_1_1_h_k_graph.html#ae794950cb3407b6b47d3dc986cf714c0" target="_top" xlink:title="This functions checks whether an augmenting path is available exists beginning with free vertex u.">
<polygon fill="white" stroke="black" points="323.5,-0.5 323.5,-19.5 431.5,-19.5 431.5,-0.5 323.5,-0.5"/>
<text text-anchor="middle" x="377.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">graph::HKGraph::dfs</text>
</a>
</g>
</g>
<!-- Node4&#45;&gt;Node7 -->
<g id="edge6" class="edge">
<title>Node4&#45;&gt;Node7</title>
<path fill="none" stroke="midnightblue" d="M281.12,-26.1C291.76,-24.3 302.79,-22.44 313.4,-20.65"/>
<polygon fill="midnightblue" stroke="midnightblue" points="314.14,-24.07 323.42,-18.96 312.98,-17.17 314.14,-24.07"/>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<title>Node6</title>
<g id="a_node6"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/container/vector/end.html#" xlink:title=" ">
<polygon fill="white" stroke="black" points="472,-19.5 472,-38.5 557,-38.5 557,-19.5 472,-19.5"/>
<text text-anchor="middle" x="514.5" y="-26.5" font-family="Helvetica,sans-Serif" font-size="10.00">std::vector::end</text>
</a>
</g>
</g>
<!-- Node5&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<title>Node5&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M431.86,-40.49C441.7,-39.1 451.97,-37.66 461.76,-36.28"/>
<polygon fill="midnightblue" stroke="midnightblue" points="462.35,-39.73 471.77,-34.87 461.38,-32.8 462.35,-39.73"/>
</g>
<!-- Node7&#45;&gt;Node6 -->
<g id="edge7" class="edge">
<title>Node7&#45;&gt;Node6</title>
<path fill="none" stroke="midnightblue" d="M431.86,-17.51C441.7,-18.9 451.97,-20.34 461.76,-21.72"/>
<polygon fill="midnightblue" stroke="midnightblue" points="461.38,-25.2 471.77,-23.13 462.35,-18.27 461.38,-25.2"/>
</g>
<!-- Node8&#45;&gt;Node2 -->
<g id="edge9" class="edge">
<title>Node8&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M112.04,-63.49C126.35,-67.05 147.05,-72.21 166.11,-76.95"/>
<polygon fill="midnightblue" stroke="midnightblue" points="165.33,-80.36 175.88,-79.38 167.02,-73.57 165.33,-80.36"/>
</g>
<!-- Node8&#45;&gt;Node4 -->
<g id="edge10" class="edge">
<title>Node8&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M112.04,-55.71C119.85,-54.28 129.57,-52.51 139.88,-50.62"/>
<polygon fill="midnightblue" stroke="midnightblue" points="140.69,-54.03 149.9,-48.79 139.43,-47.15 140.69,-54.03"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB