maxGraph/java/docs/com/mxgraph/analysis/mxUnionFind.html

470 lines
17 KiB
HTML

<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.7) on Fri Jun 19 12:30:15 UTC 2020 -->
<title>mxUnionFind (mxGraph 4.2.0 API Specification)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2020-06-19">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="mxUnionFind (mxGraph 4.2.0 API Specification)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/mxUnionFind.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><p><b>mxGraph 4.2.0</b></p></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.mxgraph.analysis</a></div>
<h2 title="Class mxUnionFind" class="title">Class mxUnionFind</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>com.mxgraph.analysis.mxUnionFind</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">mxUnionFind</span>
extends java.lang.Object</pre>
<div class="block">Implements a union find structure that uses union by rank and path
compression. The union by rank guarantees worst case find time of O(log N),
while Tarjan shows that in combination with path compression (halving) the
average time for an arbitrary sequence of m >= n operations is
O(m*alpha(m,n)), where alpha is the inverse of the Ackermann function,
defined as follows:
<code>alpha(m,n) = min{i &gt;= 1 | A(i, floor(m/n)) &gt; log n} for m &gt;= n &gt;= 1</code>
Which yields almost constant time for each individual operation.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a></span></code></th>
<td class="colLast">
<div class="block">A class that defines the identity of a set.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected java.util.Map&lt;java.lang.Object,&#8203;<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#nodes">nodes</a></span></code></th>
<td class="colLast">
<div class="block">Maps from elements to nodes</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(java.lang.Object%5B%5D)">mxUnionFind</a></span>&#8203;(java.lang.Object[]&nbsp;elements)</code></th>
<td class="colLast">
<div class="block">Constructs a union find structure and initializes it with the specified
elements.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#differ(java.lang.Object,java.lang.Object)">differ</a></span>&#8203;(java.lang.Object&nbsp;a,
java.lang.Object&nbsp;b)</code></th>
<td class="colLast">
<div class="block">Returns true if element a and element b are not in the same set.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#find(com.mxgraph.analysis.mxUnionFind.Node)">find</a></span>&#8203;(<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;node)</code></th>
<td class="colLast">
<div class="block">Returns the set that contains <code>node</code>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNode(java.lang.Object)">getNode</a></span>&#8203;(java.lang.Object&nbsp;element)</code></th>
<td class="colLast">
<div class="block">Returns the node that represents element.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#union(com.mxgraph.analysis.mxUnionFind.Node,com.mxgraph.analysis.mxUnionFind.Node)">union</a></span>&#8203;(<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;a,
<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;b)</code></th>
<td class="colLast">
<div class="block">Unifies the sets <code>a</code> and <code>b</code> in constant time
using a union by rank on the tree size.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="nodes">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>nodes</h4>
<pre>protected&nbsp;java.util.Map&lt;java.lang.Object,&#8203;<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&gt; nodes</pre>
<div class="block">Maps from elements to nodes</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(java.lang.Object[])">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>mxUnionFind</h4>
<pre>public&nbsp;mxUnionFind&#8203;(java.lang.Object[]&nbsp;elements)</pre>
<div class="block">Constructs a union find structure and initializes it with the specified
elements.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>elements</code> - </dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getNode(java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNode</h4>
<pre class="methodSignature">public&nbsp;<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;getNode&#8203;(java.lang.Object&nbsp;element)</pre>
<div class="block">Returns the node that represents element.</div>
</li>
</ul>
<a id="find(com.mxgraph.analysis.mxUnionFind.Node)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>find</h4>
<pre class="methodSignature">public&nbsp;<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;find&#8203;(<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;node)</pre>
<div class="block">Returns the set that contains <code>node</code>. This implementation
provides path compression by halving.</div>
</li>
</ul>
<a id="union(com.mxgraph.analysis.mxUnionFind.Node,com.mxgraph.analysis.mxUnionFind.Node)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>union</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;union&#8203;(<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;a,
<a href="mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;b)</pre>
<div class="block">Unifies the sets <code>a</code> and <code>b</code> in constant time
using a union by rank on the tree size.</div>
</li>
</ul>
<a id="differ(java.lang.Object,java.lang.Object)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>differ</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;differ&#8203;(java.lang.Object&nbsp;a,
java.lang.Object&nbsp;b)</pre>
<div class="block">Returns true if element a and element b are not in the same set. This
uses getNode and then find to determine the elements set.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>a</code> - The first element to compare.</dd>
<dd><code>b</code> - The second element to compare.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Returns true if a and b are in the same set.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#getNode(java.lang.Object)"><code>getNode(Object)</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/mxUnionFind.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><p><b>mxGraph 4.2.0</b></p></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small><font size=1>Copyright (c) 2010-2017 <a href="http://www.jgraph.com/"
target="_blank">Gaudenz Alder, JGraph Ltd</a>. All rights reserved.</font></small></p>
</footer>
</body>
</html>