java.lang.Object
org.jgrapht.alg.clique.BronKerboschCliqueFinder<V,E>
- Type Parameters:
V
- the graph vertex typeE
- the graph edge type
- All Implemented Interfaces:
Iterable<Set<V>>
,MaximalCliqueEnumerationAlgorithm<V,
E>
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:
-
Field Summary
Modifier and TypeFieldDescriptionThe resultThe underlying graphprotected int
Size of biggest maximal clique found.protected final long
Timeout in nanosecondsprotected boolean
Whether the last computation terminated due to a time limit. -
Constructor Summary
ConstructorDescriptionBronKerboschCliqueFinder
(Graph<V, E> graph) Constructs a new clique finder.BronKerboschCliqueFinder
(Graph<V, E> graph, long timeout, TimeUnit unit) Constructs a new clique finder. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Check the computation has stopped due to a time limit or due to computing all maximal cliques.iterator()
Returns an iterator over all maximal cliques.protected void
lazyRun()
Lazily execute the enumeration algorithm.Create an iterator which returns only the maximum cliques of a graph.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
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
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:MaximalCliqueEnumerationAlgorithm
Returns an iterator over all maximal cliques.- Specified by:
iterator
in interfaceIterable<V>
- Specified by:
iterator
in 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
-