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:
Servlet 3 Async Support with Spring MVC and Spring Security
Java Program to Find the Longest Path in a DAG
Java Copy Constructor
Testing an OAuth Secured API with Spring MVC
Hướng dẫn Java Design Pattern – Factory Method
Java 8 – Powerful Comparison with Lambdas
OAuth 2.0 Resource Server With Spring Security 5
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Java Program to Implement Park-Miller Random Number Generation Algorithm
Guide to BufferedReader
Simultaneous Spring WebClient Calls
Java Program to Find Strongly Connected Components in Graphs
Initialize a HashMap in Java
New Features in Java 15
Java Program to Implement Range Tree
Java Program to Implement Radix Sort
Comparing Objects in Java
HttpClient 4 – Send Custom Cookie
Java Program to Implement Nth Root Algorithm
How To Serialize and Deserialize Enums with Jackson
Java Program to find the peak element of an array using Binary Search approach
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Java Program to Implement Euclid GCD Algorithm
Introduction to Project Reactor Bus
Java Timer
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Enum trong java
Hướng dẫn Java Design Pattern – Decorator
Converting Between Byte Arrays and Hexadecimal Strings in Java
Hướng dẫn sử dụng Java Generics
Java Program to Construct an Expression Tree for an Prefix Expression
Spring Boot - Sending Email