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:
Sử dụng CyclicBarrier trong Java
Most commonly used String methods in Java
Spring’s RequestBody and ResponseBody Annotations
Java Program to Implement HashMap API
Java Program to Describe the Representation of Graph using Incidence List
Giới thiệu SOAP UI và thực hiện test Web Service
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
Tổng quan về ngôn ngữ lập trình java
Spring Cloud Bus
Tính đóng gói (Encapsulation) trong java
Java Program for Topological Sorting in Graphs
Function trong Java 8
Spring Boot - Servlet Filter
Java Program to Compute the Volume of a Tetrahedron Using Determinants
Uploading MultipartFile with Spring RestTemplate
Java Program to Implement Selection Sort
Lớp Collectors trong Java 8
Spring Boot - Thymeleaf
Java 14 Record Keyword
Spring WebFlux Filters
Java Program to Implement Strassen Algorithm
Java Program to Implement Solovay Strassen Primality Test Algorithm
Giới thiệu Json Web Token (JWT)
Guide to Spring 5 WebFlux
Guide to System.gc()
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Custom Cascading in Spring Data MongoDB
Java Program to Implement PrinterStateReasons API
Dynamic Proxies in Java
Introduction to Spliterator in Java
HttpClient 4 – Follow Redirects for POST