Class CompleteGraphGenerator<V,​E>

  • Type Parameters:
    V - the vertices type
    E - the edges type
    All Implemented Interfaces:
    GraphGenerator<V,​E>

    public class CompleteGraphGenerator<V,​E>
    extends Object
    implements GraphGenerator<V,​E>
    Generates a complete graph.

    A complete graph is a graph in which each pair of graph vertices is connected by an edge. If the graph is directed, then there are two edges between two pair of vertices, one in each direction. Self loops are optional, but are disabled by default. Parallel edges are never created.

    Author:
    Barak Ugav
    • Method Detail

      • newInstance

        public static <V,​E> CompleteGraphGenerator<V,​E> newInstance()
        Creates a new complete graph generator.
        Type Parameters:
        V - the vertices type
        E - the edges type
        Returns:
        a new complete graph generator
      • setVertices

        public void setVertices​(Collection<V> vertices)
        Set the vertices of the generated graph(s).

        If the generator is used to generate multiple graphs, the same vertex set will be used for all of them.

        Parameters:
        vertices - the vertices of the generated graph(s)
      • setVertices

        public void setVertices​(int verticesNum,
                                Supplier<V> vertexSupplier)
        Set the vertices set of the generated graph(s) from a supplier.

        The supplier will be called exactly verticesNum times, and the same set of vertices created will be used for multiple graphs if GraphGenerator.generate() is called multiple times.

        Parameters:
        verticesNum - the number of vertices
        vertexSupplier - the supplier of vertices
      • setEdges

        public void setEdges​(Supplier<E> edgeSupplier)
        Set the edge supplier of the generated graph(s).

        The supplier will be called for any edge created, for any graph generated. This behavior is different from setVertices(int, Supplier), where the supplier is used to generate a set of vertices which is reused for any generated graph.

        Parameters:
        edgeSupplier - the edge supplier
      • setEdges

        public void setEdges​(BiFunction<V,​V,​E> edgeBuilder)
        Set the edge builder function of the generated graph(s).

        The function will be called for any edge created, for any graph generated. This behavior is different from setVertices(int, Supplier), where the supplier is used to generate a set of vertices which is reused for any generated graph.

        Parameters:
        edgeBuilder - the edge builder function
      • setDirected

        public void setDirected​(boolean directed)
        Determine if the generated graph(s) is directed or undirected.

        By default, the generated graph(s) is undirected.

        Parameters:
        directed - true if the generated graph(s) will be directed, false if undirected
      • setSelfEdges

        public void setSelfEdges​(boolean selfEdges)
        Determine if the generated graph(s) will contain self-loops.

        By default, the generated graph(s) will not contain self-loops. If this option is turn on, each vertex in a generated will have exactly one self edge connected to itself.

        Parameters:
        selfEdges - true if the generated graph(s) will contain self-loops, false otherwise
      • generateIntoBuilder

        public GraphBuilder<V,​E> generateIntoBuilder()
        Description copied from interface: GraphGenerator
        Generates a graph into a builder.

        This is the a more flexible way to generate a graph. The builder can be used to generate a mutable or immutable graph, or to add additional vertices or edges on top of the generated ones.

        Specified by:
        generateIntoBuilder in interface GraphGenerator<V,​E>
        Returns:
        a new graph builder populated by the generator with the generator parameters