Class Graphs

    • Method Detail

      • hasCycle

        public static <N> boolean hasCycle​(Graph<N> graph)
        Returns true if graph has at least one cycle. A cycle is defined as a non-empty subset of edges in a graph arranged to form a path (a sequence of adjacent outgoing edges) starting and ending with the same node.

        This method will detect any non-empty cycle, including self-loops (a cycle of length 1).

      • hasCycle

        public static boolean hasCycle​(Network<?,​?> network)
        Returns true if network has at least one cycle. A cycle is defined as a non-empty subset of edges in a graph arranged to form a path (a sequence of adjacent outgoing edges) starting and ending with the same node.

        This method will detect any non-empty cycle, including self-loops (a cycle of length 1).

      • transitiveClosure

        public static <N> Graph<N> transitiveClosure​(Graph<N> graph)
        Returns the transitive closure of graph. The transitive closure of a graph is another graph with an edge connecting node A to node B if node B is reachable from node A.

        This is a "snapshot" based on the current topology of graph, rather than a live view of the transitive closure of graph. In other words, the returned Graph will not be updated after modifications to graph.

      • reachableNodes

        public static <N> Set<N> reachableNodes​(Graph<N> graph,
                                                N node)
        Returns the set of nodes that are reachable from node. Node B is defined as reachable from node A if there exists a path (a sequence of adjacent outgoing edges) starting at node A and ending at node B. Note that a node is always reachable from itself via a zero-length path.

        This is a "snapshot" based on the current topology of graph, rather than a live view of the set of nodes reachable from node. In other words, the returned Set will not be updated after modifications to graph.

        Throws:
        IllegalArgumentException - if node is not present in graph
      • transpose

        public static <N> Graph<N> transpose​(Graph<N> graph)
        Returns a view of graph with the direction (if any) of every edge reversed. All other properties remain intact, and further updates to graph will be reflected in the view.
      • transpose

        public static <N,​V> ValueGraph<N,​V> transpose​(ValueGraph<N,​V> graph)
        Returns a view of graph with the direction (if any) of every edge reversed. All other properties remain intact, and further updates to graph will be reflected in the view.
      • transpose

        public static <N,​E> Network<N,​E> transpose​(Network<N,​E> network)
        Returns a view of network with the direction (if any) of every edge reversed. All other properties remain intact, and further updates to network will be reflected in the view.
      • inducedSubgraph

        public static <N> MutableGraph<N> inducedSubgraph​(Graph<N> graph,
                                                          Iterable<? extends N> nodes)
        Returns the subgraph of graph induced by nodes. This subgraph is a new graph that contains all of the nodes in nodes, and all of the edges from graph for which both nodes are contained by nodes.
        Throws:
        IllegalArgumentException - if any element in nodes is not a node in the graph
      • inducedSubgraph

        public static <N,​V> MutableValueGraph<N,​V> inducedSubgraph​(ValueGraph<N,​V> graph,
                                                                               Iterable<? extends N> nodes)
        Returns the subgraph of graph induced by nodes. This subgraph is a new graph that contains all of the nodes in nodes, and all of the edges (and associated edge values) from graph for which both nodes are contained by nodes.
        Throws:
        IllegalArgumentException - if any element in nodes is not a node in the graph
      • inducedSubgraph

        public static <N,​E> MutableNetwork<N,​E> inducedSubgraph​(Network<N,​E> network,
                                                                            Iterable<? extends N> nodes)
        Returns the subgraph of network induced by nodes. This subgraph is a new graph that contains all of the nodes in nodes, and all of the edges from network for which the incident nodes are both contained by nodes.
        Throws:
        IllegalArgumentException - if any element in nodes is not a node in the graph
      • copyOf

        public static <N> MutableGraph<N> copyOf​(Graph<N> graph)
        Creates a mutable copy of graph with the same nodes and edges.
      • copyOf

        public static <N,​V> MutableValueGraph<N,​V> copyOf​(ValueGraph<N,​V> graph)
        Creates a mutable copy of graph with the same nodes, edges, and edge values.
      • copyOf

        public static <N,​E> MutableNetwork<N,​E> copyOf​(Network<N,​E> network)
        Creates a mutable copy of network with the same nodes and edges.