This is a java program to generate a random graph using number of edges provided by user. One important thing to note here is, that we need to decide minimum and maximum number of nodes such that all edges get accommodated. Minimum number of vertices is positive solution to n(n-1) = 2e, where e is number of edges and maximum number of vertices is e+1.
Here is the source code of the Java Program to Generate a Random UnDirected Graph for a Given Number of Edges. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a java program to randomly generate a undirected graph where numbers of edges is given by user
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
public class Random_Undirected_Graph
{
private Map<Integer, List<Integer>> adjacencyList;
public Random_Undirected_Graph(int v)
{
adjacencyList = new HashMap<Integer, List<Integer>>();
for (int i = 1; i <= v; i++)
adjacencyList.put(i, new LinkedList<Integer>());
}
public void setEdge(int to, int from)
{
if (to > adjacencyList.size() || from > adjacencyList.size())
System.out.println("The vertices does not exists");
List<Integer> sls = adjacencyList.get(to);
sls.add(from);
List<Integer> dls = adjacencyList.get(from);
dls.add(to);
}
public List<Integer> 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("Enter the number of edges: ");
Scanner sc = new Scanner(System.in);
int e = sc.nextInt();
try
{
int minV = (int) Math.ceil((1 + Math.sqrt(1 + 8 * e)) / 2);
int maxV = e + 1;
Random random = new Random();
int v = Math.abs(random.nextInt(maxV - minV) + minV);
System.out.println("Random graph has "+v+" vertices");
Random_Undirected_Graph rug = new Random_Undirected_Graph(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);
rug.setEdge(to, from);
count++;
}
System.out
.println("The Adjacency List Representation of the graph is: ");
for (int i = 1; i <= v; i++)
{
System.out.print(i + " -> ");
List<Integer> edgeList = rug.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");
}
sc.close();
}
}
Output:
$ javac Random_Undirected_Graph.java $ java Random_Undirected_Graph Enter the number of edges: 15 Random graph has 6 vertices The Adjacency List Representation of the graph is: 1 -> 4 -> 2 -> 3 -> 5 2 -> 2 -> 2 -> 1 -> 5 3 -> 5 -> 6 -> 4 -> 6 -> 1 -> 5 -> 4 4 -> 6 -> 4 -> 4 -> 1 -> 3 -> 3 5 -> 3 -> 6 -> 3 -> 1 -> 2 6 -> 4 -> 3 -> 5 -> 3
Related posts:
The Basics of Java Security
Tính đa hình (Polymorphism) trong Java
Generating Random Dates in Java
Object Type Casting in Java
Java Program to Check if it is a Sparse Matrix
Java Program to Implement ArrayDeque API
Java – Get Random Item/Element From a List
Phương thức forEach() trong java 8
Java Program to Implement Merge Sort on n Numbers Without tail-recursion
Jackson – JsonMappingException (No serializer found for class)
Java Program to Implement Best-First Search
Java 8 Stream API Analogies in Kotlin
Java Switch Statement
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
The Thread.join() Method in Java
Java Program to Implement WeakHashMap API
Java Program to Implement Brent Cycle Algorithm
Java Program to Implement Borwein Algorithm
JPA/Hibernate Persistence Context
Java Program to Implement Euler Circuit Problem
Service Registration with Eureka
4 tính chất của lập trình hướng đối tượng trong Java
Apache Commons Collections OrderedMap
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays
Java Program to Implement PrinterStateReasons API
Từ khóa throw và throws trong Java
Guide to Spring Cloud Kubernetes
Java Program to Use rand and srand Functions
Guide to Mustache with Spring Boot
Lớp Properties trong java
Java Program to Implement Hash Tree
Java Program to Implement Find all Cross Edges in a Graph