This is a java program to generate a random graph by selecting 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 Construct a Random Graph by the Method of Random Edge Selection. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
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<Integer, List<Integer>> adjacencyList;
public Random_Edges_Graph2(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("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<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");
}
}
}
Output:
$ javac Random_Edges_Graph2.java $ java Random_Edges_Graph2 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
Related posts:
Java Program to Implement Stein GCD Algorithm
Introduction to Spliterator in Java
Java Program to Implement RoleList API
Different Ways to Capture Java Heap Dumps
Setting the Java Version in Maven
Check If a File or Directory Exists in Java
Java Program to Implement Singly Linked List
Spring MVC Setup with Kotlin
Inheritance with Jackson
How to Use if/else Logic in Java 8 Streams
Java Program to Implement Hamiltonian Cycle Algorithm
Java Program to Generate All Possible Combinations Out of a, b, c, d, e
Java Program to Implement Heap Sort Using Library Functions
Java Program to Implement Dijkstra’s Algorithm using Set
Spring Boot - Application Properties
Java Program to Check whether Directed Graph is Connected using DFS
Join and Split Arrays and Collections in Java
Spring Boot - Bootstrapping
Các kiểu dữ liệu trong java
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Spring Security OAuth Login with WebFlux
Java Program to Implement Queue
Using a List of Values in a JdbcTemplate IN Clause
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Java Program to Implement Double Order Traversal of a Binary Tree
Java Program to Find kth Largest Element in a Sequence
Java Program to Implement Flood Fill Algorithm
How to Iterate Over a Stream With Indices
@DynamicUpdate with Spring Data JPA
Spring Boot - Build Systems
Spring MVC and the @ModelAttribute Annotation