Du kannst nicht mehr als 25 Themen auswählen
Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
267 Zeilen
11 KiB
HTML
267 Zeilen
11 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_79) on Sun Apr 03 00:28:31 PDT 2016 -->
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<title>org.jgrapht.alg.cycle (JGraphT : a free Java graph library)</title>
|
|
<meta name="date" content="2016-04-03">
|
|
<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="org.jgrapht.alg.cycle (JGraphT : a free Java graph library)";
|
|
}
|
|
//-->
|
|
</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 class="navBarCell1Rev">Package</li>
|
|
<li>Class</li>
|
|
<li><a href="package-use.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>
|
|
<div class="subNav">
|
|
<ul class="navList">
|
|
<li><a href="../../../../org/jgrapht/alg/package-summary.html">Prev Package</a></li>
|
|
<li><a href="../../../../org/jgrapht/alg/flow/package-summary.html">Next Package</a></li>
|
|
</ul>
|
|
<ul class="navList">
|
|
<li><a href="../../../../index.html?org/jgrapht/alg/cycle/package-summary.html" target="_top">Frames</a></li>
|
|
<li><a href="package-summary.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>
|
|
<a name="skip-navbar_top">
|
|
<!-- -->
|
|
</a></div>
|
|
<!-- ========= END OF TOP NAVBAR ========= -->
|
|
<div class="header">
|
|
<h1 title="Package" class="title">Package org.jgrapht.alg.cycle</h1>
|
|
<div class="docSummary">
|
|
<div class="block">Algorithms for enumeration of simple cycles in graphs.</div>
|
|
</div>
|
|
<p>See: <a href="#package_description">Description</a></p>
|
|
</div>
|
|
<div class="contentContainer">
|
|
<ul class="blockList">
|
|
<li class="blockList">
|
|
<table class="packageSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation">
|
|
<caption><span>Interface Summary</span><span class="tabEnd"> </span></caption>
|
|
<tr>
|
|
<th class="colFirst" scope="col">Interface</th>
|
|
<th class="colLast" scope="col">Description</th>
|
|
</tr>
|
|
<tbody>
|
|
<tr class="altColor">
|
|
<td class="colFirst"><a href="../../../../org/jgrapht/alg/cycle/DirectedSimpleCycles.html" title="interface in org.jgrapht.alg.cycle">DirectedSimpleCycles</a><V,E></td>
|
|
<td class="colLast">
|
|
<div class="block">A common interface for classes implementing algorithms for enumeration of the
|
|
simple cycles of a directed graph.</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="rowColor">
|
|
<td class="colFirst"><a href="../../../../org/jgrapht/alg/cycle/UndirectedCycleBase.html" title="interface in org.jgrapht.alg.cycle">UndirectedCycleBase</a><V,E></td>
|
|
<td class="colLast">
|
|
<div class="block">A common interface for classes implementing algorithms for finding a cycle
|
|
base of an undirected graph.</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</li>
|
|
<li class="blockList">
|
|
<table class="packageSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
|
|
<caption><span>Class Summary</span><span class="tabEnd"> </span></caption>
|
|
<tr>
|
|
<th class="colFirst" scope="col">Class</th>
|
|
<th class="colLast" scope="col">Description</th>
|
|
</tr>
|
|
<tbody>
|
|
<tr class="altColor">
|
|
<td class="colFirst"><a href="../../../../org/jgrapht/alg/cycle/HawickJamesSimpleCycles.html" title="class in org.jgrapht.alg.cycle">HawickJamesSimpleCycles</a><V,E></td>
|
|
<td class="colLast">
|
|
<div class="block">Find all simple cycles of a directed graph using the algorithm described by
|
|
Hawick and James.</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="rowColor">
|
|
<td class="colFirst"><a href="../../../../org/jgrapht/alg/cycle/JohnsonSimpleCycles.html" title="class in org.jgrapht.alg.cycle">JohnsonSimpleCycles</a><V,E></td>
|
|
<td class="colLast">
|
|
<div class="block">Find all simple cycles of a directed graph using the Johnson's algorithm.</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="altColor">
|
|
<td class="colFirst"><a href="../../../../org/jgrapht/alg/cycle/PatonCycleBase.html" title="class in org.jgrapht.alg.cycle">PatonCycleBase</a><V,E></td>
|
|
<td class="colLast">
|
|
<div class="block">Find a cycle base of an undirected graph using the Paton's algorithm.</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="rowColor">
|
|
<td class="colFirst"><a href="../../../../org/jgrapht/alg/cycle/SzwarcfiterLauerSimpleCycles.html" title="class in org.jgrapht.alg.cycle">SzwarcfiterLauerSimpleCycles</a><V,E></td>
|
|
<td class="colLast">
|
|
<div class="block">Find all simple cycles of a directed graph using the Schwarcfiter and Lauer's
|
|
algorithm.</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="altColor">
|
|
<td class="colFirst"><a href="../../../../org/jgrapht/alg/cycle/TarjanSimpleCycles.html" title="class in org.jgrapht.alg.cycle">TarjanSimpleCycles</a><V,E></td>
|
|
<td class="colLast">
|
|
<div class="block">Find all simple cycles of a directed graph using the Tarjan's algorithm.</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="rowColor">
|
|
<td class="colFirst"><a href="../../../../org/jgrapht/alg/cycle/TiernanSimpleCycles.html" title="class in org.jgrapht.alg.cycle">TiernanSimpleCycles</a><V,E></td>
|
|
<td class="colLast">
|
|
<div class="block">Find all simple cycles of a directed graph using the Tiernan's algorithm.</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</li>
|
|
</ul>
|
|
<a name="package_description">
|
|
<!-- -->
|
|
</a>
|
|
<h2 title="Package org.jgrapht.alg.cycle Description">Package org.jgrapht.alg.cycle Description</h2>
|
|
<div class="block"><p>Algorithms for enumeration of simple cycles in graphs.</p>
|
|
|
|
<b>Implementation Note:</b><p> All the implementations work correctly
|
|
with loops but not with multiple duplicate edges.
|
|
</p>
|
|
<b>Performance Notes:</b>
|
|
<p> The worst case time complexity of
|
|
the algorithms for finding cycles in directed graphs is:
|
|
<ol>
|
|
<li>Tiernan - O(V.const^V)</li>
|
|
<li>Tarjan - O(VEC)</li>
|
|
<li>Johnson - O(((V+E)C)</li>
|
|
<li>Szwarcfiter and Lauer - O(V+EC)</li>
|
|
</ol>
|
|
where V is the number of vertices, E is the number of edges and C is
|
|
the number of the simple cycles in the graph.
|
|
</p>
|
|
<p> The worst case performance is
|
|
achieved for graphs with special structure, so on practical
|
|
workloads an algorithm with higher worst case complexity may
|
|
outperform an algorithm with lower worst case complexity. Note
|
|
also that "administrative costs" of algorithms with better worst
|
|
case performance are higher. Also higher is their memory cost
|
|
(which is in all cases O(V+E)).</p>
|
|
<p> The package author's workloads
|
|
contain typically several hundred nodes and from tens to several
|
|
thousand simple cycles. On these workloads the algorithms score
|
|
by performance (best to worst ) so :
|
|
<ol>
|
|
<li>Szwarcfiter and Lauer</li>
|
|
<li>Tarjan</li>
|
|
<li>Johnson</li>
|
|
<li>Tiernan</li>
|
|
</ol>
|
|
The worst case time complexity of the
|
|
Paton's algorithm for finding a cycle base in undirected graphs
|
|
is O(V^3)
|
|
</p>
|
|
<b>Literature:</b>
|
|
<br>
|
|
<ol>
|
|
<li>J.C.Tiernan An Efficient Search Algorithm Find the
|
|
Elementary Circuits of a Graph., Communications of the ACM,
|
|
V13, 12, (1970), pp. 722 - 726.</li>
|
|
<li>R.Tarjan, Depth-first search and linear graph
|
|
algorithms., SIAM J. Comput. 1 (1972), pp. 146-160.</li>
|
|
<li>R. Tarjan, Enumeration of the elementary circuits of a
|
|
directed graph, SIAM J. Comput., 2 (1973), pp. 211-216.</li>
|
|
<li>D.B.Johnson, Finding all the elementary circuits of a
|
|
directed graph, SIAM J. Comput., 4 (1975), pp. 77-84.</li>
|
|
<li>J.L.Szwarcfiter and P.E.Lauer, Finding the elementary
|
|
cycles of a directed graph in O(n + m) per cycle, Technical
|
|
Report Series, #60, May 1974, Univ. of Newcastle upon Tyne,
|
|
Newcastle upon Tyne, England.</li>
|
|
<li>P.Mateti and N.Deo, On algorithms for enumerating all
|
|
circuits of a graph., SIAM J. Comput., 5 (1978), pp. 90-99.</li>
|
|
<li>L.G.Bezem and J.van Leeuwen, Enumeration in graphs.,
|
|
Technical report RUU-CS-87-7, University of Utrecht, The
|
|
Netherlands, 1987.</li>
|
|
<li>K. Paton, An algorithm for finding a fundamental set of
|
|
cycles for an undirected linear graph, Comm. ACM 12 (1969),
|
|
pp. 514-518.</li>
|
|
|
|
</ol></div>
|
|
</div>
|
|
<!-- ======= 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 class="navBarCell1Rev">Package</li>
|
|
<li>Class</li>
|
|
<li><a href="package-use.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>
|
|
<div class="subNav">
|
|
<ul class="navList">
|
|
<li><a href="../../../../org/jgrapht/alg/package-summary.html">Prev Package</a></li>
|
|
<li><a href="../../../../org/jgrapht/alg/flow/package-summary.html">Next Package</a></li>
|
|
</ul>
|
|
<ul class="navList">
|
|
<li><a href="../../../../index.html?org/jgrapht/alg/cycle/package-summary.html" target="_top">Frames</a></li>
|
|
<li><a href="package-summary.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>
|
|
<a name="skip-navbar_bottom">
|
|
<!-- -->
|
|
</a></div>
|
|
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
|
<p class="legalCopy"><small>Copyright © 2016. All rights reserved.</small></p>
|
|
</body>
|
|
</html>
|