This is a java program to generate a random graph by generating random number of edges. 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 Create a Random Graph Using Random Edge Generation. 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 generate a random graph using random edge generation
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_Edges_Graph
{
private Map<Integer, List<Integer>> adjacencyList;
public Random_Edges_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_Edges_Graph reg = new Random_Edges_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);
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<Integer> 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");
}
sc.close();
}
}
Output:
$ javac Random_Edges_Graph.java $ java Random_Edges_Graph Enter the number of edges: 5 Random graph has 4 vertices THe Adjacency List Representation of the random graph is: 1 -> 4 -> 4 2 -> 3 -> 3 3 -> 2 -> 4 -> 2 4 -> 1 -> 1 -> 3
Related posts:
Introduction to Spring MVC HandlerInterceptor
Guide to Java OutputStream
Java Program to Implement Self Balancing Binary Search Tree
A Guide to Concurrent Queues in Java
Hướng dẫn Java Design Pattern – Facade
Quick Guide to the Java StringTokenizer
The Java 8 Stream API Tutorial
Spring Data JPA and Null Parameters
Java Program to Implement Counting Sort
Predicate trong Java 8
Java Program to Implement Regular Falsi Algorithm
Java Program to Optimize Wire Length in Electrical Circuit
Làm thế nào tạo instance của một class mà không gọi từ khóa new?
Java List UnsupportedOperationException
Guide to the Volatile Keyword in Java
Remove the First Element from a List
Java Program to Implement Fermat Primality Test Algorithm
Hashtable trong java
Send an email using the SMTP protocol
Guide to ThreadLocalRandom in Java
Java Program to Implement a Binary Search Algorithm for a Specific Search Sequence
Java Program to Implement Find all Back Edges in a Graph
Java Program to Implement Sorted Doubly Linked List
Summing Numbers with Java Streams
Registration with Spring Security – Password Encoding
Convert char to String in Java
Tìm hiểu về Web Service
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Spring Boot Tutorial – Bootstrap a Simple Application
Pagination and Sorting using Spring Data JPA
Java Program to Find the Mode in a Data Set
Java Program to Implement Brent Cycle Algorithm