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

396 lines
19 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 (version 1.7.0_51) on Thu May 15 15:53:13 EDT 2014 -->
<title>mxUnionFind (mxGraph 2.8.0.0 API Specification)</title>
<meta name="date" content="2014-05-15">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="mxUnionFind (mxGraph 2.8.0.0 API Specification)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><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"><em><p><b>mxGraph 2.8.0.0</b></p></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/mxgraph/analysis/mxTraversal.html" title="class in com.mxgraph.analysis"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis"><span class="strong">Next 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 Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All 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><a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></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="strong">mxUnionFind</span>
extends <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></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="overviewSummary" 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><strong><a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a></strong></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="overviewSummary" 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 <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>,<a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis">mxUnionFind.Node</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../com/mxgraph/analysis/mxUnionFind.html#nodes">nodes</a></strong></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="overviewSummary" 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><strong><a href="../../../com/mxgraph/analysis/mxUnionFind.html#mxUnionFind(java.lang.Object[])">mxUnionFind</a></strong>(<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&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="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../com/mxgraph/analysis/mxUnionFind.html#differ(java.lang.Object, java.lang.Object)">differ</a></strong>(<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;a,
<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;b)</code>
<div class="block">Returns true if element a and element b are not in the same set.</div>
</td>
</tr>
<tr 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><strong><a href="../../../com/mxgraph/analysis/mxUnionFind.html#find(com.mxgraph.analysis.mxUnionFind.Node)">find</a></strong>(<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 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><strong><a href="../../../com/mxgraph/analysis/mxUnionFind.html#getNode(java.lang.Object)">getNode</a></strong>(<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;element)</code>
<div class="block">Returns the node that represents element.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../com/mxgraph/analysis/mxUnionFind.html#union(com.mxgraph.analysis.mxUnionFind.Node, com.mxgraph.analysis.mxUnionFind.Node)">union</a></strong>(<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.<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></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;<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>,<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>
<ul class="blockListLast">
<li class="blockList">
<h4>mxUnionFind</h4>
<pre>public&nbsp;mxUnionFind(<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;elements)</pre>
<div class="block">Constructs a union find structure and initializes it with the specified
elements.</div>
<dl><dt><span class="strong">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(<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&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(<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;a,
<a href="http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&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="strong">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="strong">Returns:</span></dt><dd>Returns true if a and b are in the same set.</dd><dt><span class="strong">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><a href="#skip-navbar_bottom" title="Skip navigation links"></a><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"><em><p><b>mxGraph 2.8.0.0</b></p></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../com/mxgraph/analysis/mxTraversal.html" title="class in com.mxgraph.analysis"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../com/mxgraph/analysis/mxUnionFind.Node.html" title="class in com.mxgraph.analysis"><span class="strong">Next 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 Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All 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 <a href="http://www.mxgraph.com/"
target="_blank">Gaudenz Alder, David Benson</a>. All rights reserved.</font></small></p>
</body>
</html>