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 check for cycle in topological sort. 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 TopoCycle
{
private Stack<Integer> stack;
public TopoCycle()
{
stack = new Stack<Integer>();
}
public boolean checkCycle(int adjacency_matrix[][], int source)
{
int number_of_nodes = adjacency_matrix.length - 1;
int[] topological_sort = new int [number_of_nodes + 1];
int pos = 1;
int j;
boolean cycle = false;
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("The Graph Contains a cycle");
cycle = true;
return cycle;
}
}
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;
}
System.out.println("The Graph does not Contain cycle");
return cycle;
}
public static void main(String...arg)
{
int number_no_nodes, source;
Scanner scanner = 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();
TopoCycle topoCycle = new TopoCycle();
topoCycle.checkCycle(adjacency_matrix, source);
}catch(InputMismatchException inputMismatch)
{
System.out.println("Wrong Input format");
}
scanner.close();
}
}
$javac TopoCycle.java $java TopoCycle Enter the number of nodes in the graph 5 Enter the adjacency matrix 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 Enter the source for the graph 1 The Graph contains a cycle
Related posts:
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
OAuth2 Remember Me with Refresh Token
Java Program to Implement Shell Sort
Introduction to the Java NIO2 File API
Introduction to Thread Pools in Java
Java Program to Implement the RSA Algorithm
HTTP Authentification and CGI/Servlet
Java Program to Implement CopyOnWriteArraySet API
Java Program to Implement Adjacency List
So sánh HashMap và HashSet trong Java
Compare Two JSON Objects with Jackson
A Quick JUnit vs TestNG Comparison
Updating your Password
Prevent Cross-Site Scripting (XSS) in a Spring Application
Java – Random Long, Float, Integer and Double
Array to String Conversions
A Guide to JPA with Spring
Mảng (Array) trong Java
Spring Cloud – Tracing Services with Zipkin
An Intro to Spring Cloud Contract
How to Read a File in Java
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers
Hướng dẫn Java Design Pattern – Memento
Java Program to implement Sparse Vector
Java Program to Implement Floyd Cycle Algorithm
Java Program to Implement Gauss Seidel Method
Spring REST API with Protocol Buffers
Java Program to Implement Iterative Deepening
Hướng dẫn sử dụng lớp Console trong java
Request Method Not Supported (405) in Spring
Java Program to Find Nearest Neighbor Using Linear Search
Predicate trong Java 8