Class DRedAlg<V>

  • Type Parameters:
    V - the type parameter of the nodes in the graph data source
    All Implemented Interfaces:
    IGraphObserver<V>, ITcDataSource<V>

    public class DRedAlg<V>
    extends java.lang.Object
    implements IGraphObserver<V>, ITcDataSource<V>
    This class is the optimized implementation of the DRED algorithm.
    • Constructor Detail

      • DRedAlg

        public DRedAlg​(IGraphDataSource<V> gds)
        Constructs a new DRED 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
      • DRedAlg

        public DRedAlg​(IGraphDataSource<V> gds,
                       DRedTcRelation<V> tc)
        Constructs a new DRED algorithm and initializes the transitive closure relation with the given relation. Attach itself on the graph data source as an observer.
        Parameters:
        gds - the graph data source instance
        tc - the transitive closure 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 interface IGraphObserver<V>
        Parameters:
        source - the source of the edge
        target - 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 interface IGraphObserver<V>
        Parameters:
        source - the source of the edge
        target - 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 interface IGraphObserver<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 interface IGraphObserver<V>
        Parameters:
        n - the node
      • 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 interface ITcDataSource<V>
        Parameters:
        source - the source node
        target - the target node
        Returns:
        true if target is reachable from source, false otherwise
      • 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 interface ITcDataSource<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 interface ITcDataSource<V>
        Parameters:
        target - the target node
        Returns:
        the set of source nodes
      • notifyTcObservers

        protected void notifyTcObservers​(java.util.Set<Tuple<V>> tuples,
                                         int dir)
      • 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 interface ITcDataSource<V>