1
0
Fork 0
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

<!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&nbsp;org.jgrapht.alg.cycle</h1>
<div class="docSummary">
<div class="block">Algorithms for enumeration of simple cycles in graphs.</div>
</div>
<p>See:&nbsp;<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">&nbsp;</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>&lt;V,E&gt;</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>&lt;V,E&gt;</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">&nbsp;</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>&lt;V,E&gt;</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>&lt;V,E&gt;</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>&lt;V,E&gt;</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>&lt;V,E&gt;</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>&lt;V,E&gt;</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>&lt;V,E&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp; 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>&nbsp;&nbsp;&nbsp;&nbsp; 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>&nbsp;&nbsp;&nbsp;&nbsp; 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>
&nbsp;&nbsp;&nbsp;&nbsp;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 &#169; 2016. All rights reserved.</small></p>
</body>
</html>