Class CountingAlg<V>
- java.lang.Object
-
- org.eclipse.viatra.query.runtime.base.itc.alg.counting.CountingAlg<V>
-
- Type Parameters:
V
- the type parameter of the nodes in the graph data source
- All Implemented Interfaces:
IGraphObserver<V>
,ITcDataSource<V>
public class CountingAlg<V> extends java.lang.Object implements IGraphObserver<V>, ITcDataSource<V>
This class is the optimized implementation of the Counting algorithm.
-
-
Constructor Summary
Constructors Constructor Description CountingAlg(IGraphDataSource<V> gds)
Constructs a new Counting algorithm and initializes the transitive closure relation with the given graph data source.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
attachObserver(ITcObserver<V> to)
Attach a transitive closure relation observer.void
detachObserver(ITcObserver<V> to)
Detach a transitive closure relation observer.void
dispose()
Call this method to properly dispose the data structures of a transitive closure algorithm.void
edgeDeleted(V source, V target)
Used to notify when an edge is deleted from the graph.void
edgeInserted(V source, V target)
Used to notify when an edge is inserted into the graph.java.util.Set<V>
getAllReachableSources(V target)
Returns all nodes from which the target node is reachable.java.util.Set<V>
getAllReachableTargets(V source)
Returns all nodes which are reachable from the source node.IGraphPathFinder<V>
getPathFinder()
The returnedIGraphPathFinder
can be used to retrieve paths between nodes using transitive reachability.ITcRelation<V>
getTcRelation()
boolean
isReachable(V source, V target)
Returns true if the target node is reachable from the source node.void
nodeDeleted(V n)
Used to notify when a node is deleted from the graph.void
nodeInserted(V n)
Used to notify when a node is inserted into the graph.void
setTcRelation(CountingTcRelation<V> tc)
-
-
-
Constructor Detail
-
CountingAlg
public CountingAlg(IGraphDataSource<V> gds)
Constructs a new Counting algorithm and initializes the transitive closure relation with the given graph data source. Attach itself on the graph data source as an observer.- Parameters:
gds
- the graph data source instance
-
-
Method Detail
-
edgeInserted
public void edgeInserted(V source, V target)
Description copied from interface:IGraphObserver
Used to notify when an edge is inserted into the graph.- Specified by:
edgeInserted
in interfaceIGraphObserver<V>
- Parameters:
source
- the source of the edgetarget
- the target of the edge
-
edgeDeleted
public void edgeDeleted(V source, V target)
Description copied from interface:IGraphObserver
Used to notify when an edge is deleted from the graph.- Specified by:
edgeDeleted
in interfaceIGraphObserver<V>
- Parameters:
source
- the source of the edgetarget
- the target of the edge
-
nodeInserted
public void nodeInserted(V n)
Description copied from interface:IGraphObserver
Used to notify when a node is inserted into the graph.- Specified by:
nodeInserted
in interfaceIGraphObserver<V>
- Parameters:
n
- the node
-
nodeDeleted
public void nodeDeleted(V n)
Description copied from interface:IGraphObserver
Used to notify when a node is deleted from the graph.- Specified by:
nodeDeleted
in interfaceIGraphObserver<V>
- Parameters:
n
- the node
-
getTcRelation
public ITcRelation<V> getTcRelation()
-
setTcRelation
public void setTcRelation(CountingTcRelation<V> tc)
-
isReachable
public boolean isReachable(V source, V target)
Description copied from interface:ITcDataSource
Returns true if the target node is reachable from the source node.- Specified by:
isReachable
in interfaceITcDataSource<V>
- Parameters:
source
- the source nodetarget
- the target node- Returns:
- true if target is reachable from source, false otherwise
-
attachObserver
public void attachObserver(ITcObserver<V> to)
Description copied from interface:ITcDataSource
Attach a transitive closure relation observer.- Specified by:
attachObserver
in interfaceITcDataSource<V>
- Parameters:
to
- the observer object
-
detachObserver
public void detachObserver(ITcObserver<V> to)
Description copied from interface:ITcDataSource
Detach a transitive closure relation observer.- Specified by:
detachObserver
in interfaceITcDataSource<V>
- Parameters:
to
- the observer object
-
getAllReachableTargets
public java.util.Set<V> getAllReachableTargets(V source)
Description copied from interface:ITcDataSource
Returns all nodes which are reachable from the source node.- Specified by:
getAllReachableTargets
in interfaceITcDataSource<V>
- Parameters:
source
- the source node- Returns:
- the set of target nodes
-
getAllReachableSources
public java.util.Set<V> getAllReachableSources(V target)
Description copied from interface:ITcDataSource
Returns all nodes from which the target node is reachable.- Specified by:
getAllReachableSources
in interfaceITcDataSource<V>
- Parameters:
target
- the target node- Returns:
- the set of source nodes
-
dispose
public void dispose()
Description copied from interface:ITcDataSource
Call this method to properly dispose the data structures of a transitive closure algorithm.- Specified by:
dispose
in interfaceITcDataSource<V>
-
getPathFinder
public IGraphPathFinder<V> getPathFinder()
Description copied from interface:ITcDataSource
The returnedIGraphPathFinder
can be used to retrieve paths between nodes using transitive reachability.- Specified by:
getPathFinder
in interfaceITcDataSource<V>
- Returns:
- a path finder for the graph.
-
-