Monday, 27 November 2017

Java Program to Construct a Random Graph by the Method of Random Edge Selection


Code:

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class Random_Edges_Graph2 
{
    private Map> adjacencyList;

    public Random_Edges_Graph2(int v) 
    {
        adjacencyList = new HashMap>();
        for (int i = 1; i <= v; i++)
            adjacencyList.put(i, new LinkedList());
    }

    public void setEdge(int to, int from) 
    {
        if (to > adjacencyList.size() || from > adjacencyList.size())
            System.out.println("The vertices does not exists");

        List sls = adjacencyList.get(to);
        sls.add(from);
        List dls = adjacencyList.get(from);
        dls.add(to);
    }

    public List getEdge(int to) 
    {
        if (to > adjacencyList.size()) 
        {
            System.out.println("The vertices does not exists");
            return null;
        }
        return adjacencyList.get(to);
    }

    public static void main(String args[]) 
    {
        System.out.println("Random Graph Generation");

        Random random = new Random();
        int e = Math.abs(random.nextInt(21 - 1) + 1);
        try 
        {
            int minV = (int) Math.ceil((1 + Math.sqrt(1 + 8 * e)) / 2);
            int maxV = e + 1;

            int v = Math.abs(random.nextInt(maxV - minV) + minV);
            System.out.println("Random graph has "+v+" vertices");
            System.out.println("Random graph has "+e+" edges");

            Random_Edges_Graph2 reg = new Random_Edges_Graph2(v);
            int count = 1, to, from;
            while (count <= e) 
            {
                to = Math.abs(random.nextInt(v + 1 - 1) + 1);
                from = Math.abs(random.nextInt(v + 1 - 1) + 1);

                reg.setEdge(to, from);
                count++;
            }

            System.out
                    .println("The Adjacency List Representation of the random graph is: ");

            for (int i = 1; i <= v; i++) 
            {
                System.out.print(i + " -> ");
                List edgeList = reg.getEdge(i);
                if (edgeList.size() == 0)
                    System.out.print("null");
                else 
                {
                    for (int j = 1;; j++) 
                    {
                        if (j != edgeList.size())
                            System.out.print(edgeList.get(j - 1) + " -> ");
                        else {
                            System.out.print(edgeList.get(j - 1));
                            break;
                        }
                    }
                }
                System.out.println();
            }
        } 
        catch (Exception E) 
        {
            System.out.println("Something went wrong");
        }
    }

}



Output:

Random Graph Generation
Random graph has 4 vertices
Random graph has 5 edges
The Adjacency List Representation of the random graph is: 
1 -> 4
2 -> 3 -> 3 -> 4
3 -> 3 -> 3 -> 2 -> 2
4 -> 1 -> 2



More Java Programs:
















100+ Best Home Decoration Ideas For Christmas Day 2019 To Make Home Beautiful

Best gifts for Christmas Day | Greeting cards for Christmas Day | Gift your children a new gift on Christmas day This Christmas d...