java.lang.Object
org.jgrapht.alg.clique.BronKerboschCliqueFinder<V,E>
- Type Parameters:
V- the graph vertex typeE- the graph edge type
- All Implemented Interfaces:
java.lang.Iterable<java.util.Set<V>>,MaximalCliqueEnumerationAlgorithm<V,E>
public class BronKerboschCliqueFinder<V,E>
extends java.lang.Object
Bron-Kerbosch maximal clique enumeration algorithm.
Implementation of the Bron-Kerbosch clique enumeration algorithm as described in:
- R. Samudrala and J. Moult. A graph-theoretic algorithm for comparative modeling of protein structure. Journal of Molecular Biology, 279(1):287--302, 1998.
The algorithm first computes all maximal cliques and then returns the result to the user. A timeout can be set using the constructor parameters.
- Author:
- Ewgenij Proschak
- See Also:
PivotBronKerboschCliqueFinder,DegeneracyBronKerboschCliqueFinder
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<java.util.Set<V>>allMaximalCliquesThe resultprotected Graph<V,E>graphThe underlying graphprotected intmaxSizeSize of biggest maximal clique found.protected longnanosTimeout in nanosecondsprotected booleantimeLimitReachedWhether the last computation terminated due to a time limit. -
Constructor Summary
Constructors Constructor Description BronKerboschCliqueFinder(Graph<V,E> graph)Constructs a new clique finder.BronKerboschCliqueFinder(Graph<V,E> graph, long timeout, java.util.concurrent.TimeUnit unit)Constructs a new clique finder. -
Method Summary
Modifier and Type Method Description booleanisTimeLimitReached()Check the computation has stopped due to a time limit or due to computing all maximal cliques.java.util.Iterator<java.util.Set<V>>iterator()Returns an iterator over all maximal cliques.protected voidlazyRun()Lazily execute the enumeration algorithm.java.util.Iterator<java.util.Set<V>>maximumIterator()Create an iterator which returns only the maximum cliques of a graph.
-
Field Details
-
graph
The underlying graph -
nanos
protected final long nanosTimeout in nanoseconds -
timeLimitReached
protected boolean timeLimitReachedWhether the last computation terminated due to a time limit. -
allMaximalCliques
The result -
maxSize
protected int maxSizeSize of biggest maximal clique found.
-
-
Constructor Details
-
BronKerboschCliqueFinder
Constructs a new clique finder.- Parameters:
graph- the input graph; must be simple
-
BronKerboschCliqueFinder
public BronKerboschCliqueFinder(Graph<V,E> graph, long timeout, java.util.concurrent.TimeUnit unit)Constructs a new clique finder.- Parameters:
graph- the input graph; must be simpletimeout- the maximum time to wait, if zero no timeoutunit- the time unit of the timeout argument
-
-
Method Details
-
lazyRun
protected void lazyRun()Lazily execute the enumeration algorithm. -
iterator
Description copied from interface:MaximalCliqueEnumerationAlgorithmReturns an iterator over all maximal cliques.- Specified by:
iteratorin interfacejava.lang.Iterable<V>- Specified by:
iteratorin interfaceMaximalCliqueEnumerationAlgorithm<V,E>- Returns:
- an iterator over all maximal cliques
-
maximumIterator
Create an iterator which returns only the maximum cliques of a graph. The iterator computes all maximal cliques and then filters them by the size of the maximum found clique.- Returns:
- an iterator which returns only the maximum cliques of a graph
-
isTimeLimitReached
public boolean isTimeLimitReached()Check the computation has stopped due to a time limit or due to computing all maximal cliques.- Returns:
- true if the computation has stopped due to a time limit, false otherwise
-