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:
The DAO with JPA and Spring
Spring MVC Async vs Spring WebFlux
The DAO with Spring and Hibernate
Simplify the DAO with Spring and Java Generics
Java Program to Compute DFT Coefficients Directly
Java Program to Implement Find all Back Edges in a Graph
Hướng dẫn Java Design Pattern – Strategy
Form Validation with AngularJS and Spring MVC
Java Program to Implement Variable length array
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Reading an HTTP Response Body as a String in Java
Validations for Enum Types
Java Program for Douglas-Peucker Algorithm Implementation
Java Program to Use the Bellman-Ford Algorithm to Find the Shortest Path
Converting Iterator to List
Runnable vs. Callable in Java
So sánh HashSet, LinkedHashSet và TreeSet trong Java
Java Program to Generate Date Between Given Range
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
The Order of Tests in JUnit
Upload and Display Excel Files with Spring MVC
Java Program to Find kth Largest Element in a Sequence
Wrapper Classes in Java
Comparing Long Values in Java
Inheritance and Composition (Is-a vs Has-a relationship) in Java
Java Program to Implement CopyOnWriteArraySet API
Introduction to Spring Cloud CLI
Java Program to Implement Skew Heap
Assert an Exception is Thrown in JUnit 4 and 5
Zipping Collections in Java
Java Program to Implement LinkedHashSet API
Spring REST API with Protocol Buffers