This is a Java Program to Implement Warshall Transitive closure Algorithm. Warshall’s Transitive closure algorithm is used to determine if a path exists from vertex a to vertex b for all vertex pairs (a, b) in a graph.
Here is the source code of the Java Program to Implement Warshall Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/**
** Java Program to Implement Warshall Algorithm
**/
import java.util.Scanner;
/** Class Warshall **/
public class Warshall
{
private int V;
private boolean[][] tc;
/** Function to make the transitive closure **/
public void getTC(int[][] graph)
{
this.V = graph.length;
tc = new boolean[V][V];
for (int i = 0; i < V; i++)
{
for (int j = 0; j < V; j++)
if (graph[i][j] != 0)
tc[i][j] = true;
tc[i][i] = true;
}
for (int i = 0; i < V; i++)
{
for (int j = 0; j < V; j++)
{
if (tc[j][i])
for (int k = 0; k < V; k++)
if (tc[j][i] && tc[i][k])
tc[j][k] = true;
}
}
}
/** Funtion to display the trasitive closure **/
public void displayTC()
{
System.out.println("\nTransitive closure :\n");
System.out.print(" ");
for (int v = 0; v < V; v++)
System.out.print(" " + v );
System.out.println();
for (int v = 0; v < V; v++)
{
System.out.print(v +" ");
for (int w = 0; w < V; w++)
{
if (tc[v][w])
System.out.print(" * ");
else
System.out.print(" ");
}
System.out.println();
}
}
/** Main function **/
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Warshall Algorithm Test\n");
/** Make an object of Warshall class **/
Warshall w = new Warshall();
/** Accept number of vertices **/
System.out.println("Enter number of vertices\n");
int V = scan.nextInt();
/** get graph **/
System.out.println("\nEnter matrix\n");
int[][] graph = new int[V][V];
for (int i = 0; i < V; i++)
for (int j = 0; j < V; j++)
graph[i][j] = scan.nextInt();
w.getTC(graph);
w.displayTC();
}
}
Warshall Algorithm Test
Enter number of vertices
6
Enter matrix
0 1 0 0 0 1
0 0 0 0 0 0
1 0 0 1 0 0
0 0 0 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
Transitive closure :
0 1 2 3 4 5
0 * * * * *
1 *
2 * * * * * *
3 *
4 * *
5 * * *
Related posts:
Java Program to find the peak element of an array using Binary Search approach
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
Java Program to Implement Control Table
Java Program to Implement Rolling Hash
Spring Boot - Application Properties
Java Program to Implement Interval Tree
Removing all Nulls from a List in Java
Lớp TreeMap trong Java
Java Program to Implement Dijkstra’s Algorithm using Queue
Send an email using the SMTP protocol
Java Program to Perform Naive String Matching
Java Program to Perform Quick Sort on Large Number of Elements
Java – Write an InputStream to a File
Giới thiệu Google Guice – Aspect Oriented Programming (AOP)
Java – Convert File to InputStream
Jackson – JsonMappingException (No serializer found for class)
Spring Security OAuth Login with WebFlux
Spring Boot - Building RESTful Web Services
Java Program to Perform Matrix Multiplication
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Hướng dẫn Java Design Pattern – Adapter
Spring Cloud – Adding Angular
Java Program to Implement Cartesian Tree
Create a Custom Exception in Java
Java 8 Stream API Analogies in Kotlin
Examine the internal DNS cache
Java Program to Implement Insertion Sort
Hướng dẫn Java Design Pattern – Flyweight
Java Program to Implement Binary Heap
Jackson – Change Name of Field
Handling Errors in Spring WebFlux