This Java program,to perform the topological Sort on a given graph by the DFS method.The topological sort is performed on a directed acyclic graph.
Here is the source code of the Java program to perform the Topological Sort on the graph. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.Stack;
public class TopologicalSort
{
private Stack<Integer> stack;
public TopologicalSort()
{
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;
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 ");
TopologicalSort toposort = new TopologicalSort();
topological_sort = toposort.topological(adjacency_matrix, source);
System.out.println();
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();
}
}
$javac TopologicalSort.java $java TopologicalSort Enter the number of nodes in the graph 4 Enter the adjacency matrix 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 Enter the source for the graph 1 The Topological sort for the graph is given by 1 2 4 3
Related posts:
Easy Ways to Write a Java InputStream to an OutputStream
Java Program to Find Maximum Element in an Array using Binary Search
Java Program to Find the Vertex Connectivity of a Graph
Java Program to Find the Minimum value of Binary Search Tree
Spring AMQP in Reactive Applications
Hướng dẫn sử dụng String Format trong Java
Jackson Date
Spring Boot - Interceptor
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Java List UnsupportedOperationException
Rate Limiting in Spring Cloud Netflix Zuul
XML-Based Injection in Spring
Làm thế nào tạo instance của một class mà không gọi từ khóa new?
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
Spring Boot - Enabling HTTPS
Tips for dealing with HTTP-related problems
Java Program to Implement Shoelace Algorithm
Convert String to Byte Array and Reverse in Java
Comparing Two HashMaps in Java
Converting Between an Array and a Set in Java
Java Program to Find the Longest Subsequence Common to All Sequences in a Set of Sequences
Composition, Aggregation, and Association in Java
Guide to Selenium with JUnit / TestNG
Java Program to Implement Find all Back Edges in a Graph
Comparing Strings in Java
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Java Program to Perform Sorting Using B-Tree
Java Program to Implement Segment Tree
Spring Cloud Series – The Gateway Pattern
Java Program to Implement Sorted Array
Hướng dẫn Java Design Pattern – Strategy
RestTemplate Post Request with JSON