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:
Sorting Query Results with Spring Data
Jackson JSON Views
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Cơ chế Upcasting và Downcasting trong java
Lập trình mạng với java
Properties with Spring and Spring Boot
Introduction to the Java NIO Selector
Java Program to Implement Park-Miller Random Number Generation Algorithm
Java Program to Check Cycle in a Graph using Graph traversal
Java Program to Implement Threaded Binary Tree
Disable DNS caching
Function trong Java 8
Java Program to Perform Right Rotation on a Binary Search Tree
Converting String to Stream of chars
Tìm hiểu về Web Service
Chuyển đổi giữa các kiểu dữ liệu trong Java
Guide to DelayQueue
Guide To CompletableFuture
How to Use if/else Logic in Java 8 Streams
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Initialize a HashMap in Java
A Guide to System.exit()
Abstract class và Interface trong Java
Configure a RestTemplate with RestTemplateBuilder
Lớp Collections trong Java (Collections Utility Class)
Remove All Occurrences of a Specific Value from a List
Java Program to Implement IdentityHashMap API
Spring Web Annotations
Spring Boot - Sending Email
Java Program to Implement Sieve Of Sundaram
Java Program to Compare Binary and Sequential Search