This is a java program to create a random linear extension of DAG. Linear extension of DAG is nothing but topological sorting in simple terms.
Here is the source code of the Java Program to Create a Random Linear Extension for a DAG. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
package com.maixuanviet.graph;
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.Stack;
public class DAGLinearExtension
{
private Stack<Integer> stack;
public DAGLinearExtension()
{
stack = new Stack<Integer>();
}
public int[] topological(int adjacency_matrix[][], int source)
throws NullPointerException
{
int number_of_nodes = adjacency_matrix.length - 1;
int[] topological_sort = new int[number_of_nodes + 1];
int pos = 1;
int j;
int visited[] = new int[number_of_nodes + 1];
int element = source;
int i = source;
visited = 1;
stack.push(source);
while (!stack.isEmpty())
{
element = stack.peek();
while (i <= number_of_nodes)
{
if (adjacency_matrix[element][i] == 1 && visited[i] == 1)
{
if (stack.contains(i))
{
System.out.println("TOPOLOGICAL SORT NOT POSSIBLE");
return null;
}
}
if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
{
stack.push(i);
visited[i] = 1;
element = i;
i = 1;
continue;
}
i++;
}
j = stack.pop();
topological_sort[pos++] = j;
i = ++j;
}
return topological_sort;
}
public static void main(String... arg)
{
int number_no_nodes, source;
Scanner scanner = null;
int topological_sort[] = null;
System.out
.println("Linear extension of a DAG is its topological reperesentation.");
try
{
System.out.println("Enter the number of nodes in the graph");
scanner = new Scanner(System.in);
number_no_nodes = scanner.nextInt();
int adjacency_matrix[][] = new int[number_no_nodes + 1][number_no_nodes + 1];
System.out.println("Enter the adjacency matrix");
for (int i = 1; i <= number_no_nodes; i++)
for (int j = 1; j <= number_no_nodes; j++)
adjacency_matrix[i][j] = scanner.nextInt();
System.out.println("Enter the source for the graph");
source = scanner.nextInt();
System.out
.println("The Topological sort for the graph is given by ");
DAGLinearExtension toposort = new DAGLinearExtension();
topological_sort = toposort.topological(adjacency_matrix, source);
for (int i = topological_sort.length - 1; i > 0; i--)
{
if (topological_sort[i] != 0)
System.out.print(topological_sort[i] + "\t");
}
}
catch (InputMismatchException inputMismatch)
{
System.out.println("Wrong Input format");
}
catch (NullPointerException nullPointer)
{
}
scanner.close();
}
}
Output:
$ javac DAGLinearExtension.java $ java DAGLinearExtension Linear extension of a DAG is its topological reperesentation. Enter the number of nodes in the graph 6 Enter the adjacency matrix 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 Enter the source for the graph 1 The Topological sort for the graph is given by 1 2 4 5 6 3
Related posts:
Java Program to Implement Fermat Primality Test Algorithm
Create a Custom Auto-Configuration with Spring Boot
How to Count Duplicate Elements in Arraylist
Java Program to Compute Determinant of a Matrix
Spring Boot - Google Cloud Platform
Spring Data – CrudRepository save() Method
Spring Boot Gradle Plugin
Chuyển đổi Array sang ArrayList và ngược lại
Partition a List in Java
Control the Session with Spring Security
ClassNotFoundException vs NoClassDefFoundError
Mệnh đề if-else trong java
Spring Boot - File Handling
Different Ways to Capture Java Heap Dumps
Test a REST API with Java
Convert String to int or Integer in Java
Guide to WeakHashMap in Java
Java Program to Check Whether Topological Sorting can be Performed in a Graph
Guide to Guava Multimap
Java Program to Check Whether an Input Binary Tree is the Sub Tree of the Binary Tree
Truyền giá trị và tham chiếu trong java
Java Switch Statement
Spring Boot - Unit Test Cases
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Java Program to Implement Singly Linked List
Java Program to Check whether Undirected Graph is Connected using DFS
Java Program to Implement Dijkstra’s Algorithm using Queue
Spring 5 and Servlet 4 – The PushBuilder
Java Program to implement Bit Set
Lớp lồng nhau trong java (Java inner class)
Java Program to Implement SimpeBindings API
Java Program to Implement Uniform-Cost Search