Interface TopologicalOrderAlgo

  • All Known Implementing Classes:
    TopologicalOrderAlgoAbstract, TopologicalOrderAlgoImpl

    public interface TopologicalOrderAlgo
    Algorithm that calculate a topological order of graph vertices.

    A topological ordering of a directed graph is a linear ordering of its vertices such that for every directed edge \((u,v)\), \(u\) comes before \(v\) in the ordering. A topological ordering exist if and only if the graph is directed and acyclic (DAG).

    This algorithm compute the topological ordering of a given DAG graph in linear time and space.

    Use newInstance() to get a default implementation of this interface.

    Author:
    Barak Ugav
    See Also:
    Wikipedia
    • Method Detail

      • computeTopologicalSorting

        default <V,​E> TopologicalOrderAlgo.Result<V,​E> computeTopologicalSorting​(Graph<V,​E> g)
        Compute the topological order of the vertices in a DAG graph.

        If g is IntGraph, the returned object is TopologicalOrderAlgo.IResult.

        Type Parameters:
        V - the vertices type
        E - the edges type
        Parameters:
        g - a directed acyclic graph (DAG).
        Returns:
        a result object containing the computed order
        Throws:
        IllegalArgumentException - if the graph is not DAG
      • computeTopologicalSortingIfExist

        <V,​E> Optional<TopologicalOrderAlgo.Result<V,​E>> computeTopologicalSortingIfExist​(Graph<V,​E> g)
        Compute the topological order of the vertices, if the graph is DAG.

        If g is IntGraph, the returned optional will contain is TopologicalOrderAlgo.IResult.

        Type Parameters:
        V - the vertices type
        E - the edges type
        Parameters:
        g - a directed graph
        Returns:
        an optional of a result object containing the computed order, or an empty optional if the graph is not DAG