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

421 lines
17 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_171) on Fri Jul 06 13:50:02 UTC 2018 -->
<title>mxUnionFind (mxGraph 3.9.8 API Specification)</title>
<meta name="date" content="2018-07-06">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="mxUnionFind (mxGraph 3.9.8 API Specification)";
}
}
catch(err) {
}
//-->
var methods = {"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";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.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 3.9.8</b></p></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/mxgraph/analysis/mxTraversal.html" title="class in com.mxgraph.analysis"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/mxgraph/analysis/mxUnionFind.html" target="_top">Frames</a></li>
<li><a href="mxUnionFind.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></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>
</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 name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.mxgraph.analysis</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>
<br>
<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 ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a></span></code>
<div class="block">A class that defines the identity of a set.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected java.util.Map&lt;java.lang.Object,<a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/mxgraph/analysis/mxUnionFind.html#nodes">nodes</a></span></code>
<div class="block">Maps from elements to nodes</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../com/mxgraph/analysis/mxUnionFind.html#mxUnionFind-java.lang.Object:A-">mxUnionFind</a></span>(java.lang.Object[]&nbsp;elements)</code>
<div class="block">Constructs a union find structure and initializes it with the specified
elements.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<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="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/mxgraph/analysis/mxUnionFind.html#differ-java.lang.Object-java.lang.Object-">differ</a></span>(java.lang.Object&nbsp;a,
java.lang.Object&nbsp;b)</code>
<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="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/mxgraph/analysis/mxUnionFind.html#find-com.mxgraph.analysis.mxUnionFind.Node-">find</a></span>(<a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;node)</code>
<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="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/mxgraph/analysis/mxUnionFind.html#getNode-java.lang.Object-">getNode</a></span>(java.lang.Object&nbsp;element)</code>
<div class="block">Returns the node that represents element.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../com/mxgraph/analysis/mxUnionFind.html#union-com.mxgraph.analysis.mxUnionFind.Node-com.mxgraph.analysis.mxUnionFind.Node-">union</a></span>(<a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;a,
<a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;b)</code>
<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 name="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>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="nodes">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>nodes</h4>
<pre>protected&nbsp;java.util.Map&lt;java.lang.Object,<a href="../../../com/mxgraph/analysis/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>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="mxUnionFind-java.lang.Object:A-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>mxUnionFind</h4>
<pre>public&nbsp;mxUnionFind(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>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getNode-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNode</h4>
<pre>public&nbsp;<a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;getNode(java.lang.Object&nbsp;element)</pre>
<div class="block">Returns the node that represents element.</div>
</li>
</ul>
<a name="find-com.mxgraph.analysis.mxUnionFind.Node-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>find</h4>
<pre>public&nbsp;<a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;find(<a href="../../../com/mxgraph/analysis/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 name="union-com.mxgraph.analysis.mxUnionFind.Node-com.mxgraph.analysis.mxUnionFind.Node-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>union</h4>
<pre>public&nbsp;void&nbsp;union(<a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&nbsp;a,
<a href="../../../com/mxgraph/analysis/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 name="differ-java.lang.Object-java.lang.Object-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>differ</h4>
<pre>public&nbsp;boolean&nbsp;differ(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="../../../com/mxgraph/analysis/mxUnionFind.html#getNode-java.lang.Object-"><code>getNode(Object)</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.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 3.9.8</b></p></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/mxgraph/analysis/mxTraversal.html" title="class in com.mxgraph.analysis"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?com/mxgraph/analysis/mxUnionFind.html" target="_top">Frames</a></li>
<li><a href="mxUnionFind.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.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>
</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 name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<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>
</body>
</html>