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:
Test a REST API with Java
Java Program to Generate N Number of Passwords of Length M Each
Java Program to Perform Complex Number Multiplication
Mapping a Dynamic JSON Object with Jackson
Java Program to Check Multiplicability of Two Matrices
Guide to java.util.concurrent.Future
Versioning a REST API
Java Program to Implement Adjacency Matrix
Java Program to Compute Determinant of a Matrix
Java Program to Implement Bucket Sort
Serverless Functions with Spring Cloud Function
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Tạo ứng dụng Java RESTful Client với thư viện OkHttp
Java Program to Implement Self Balancing Binary Search Tree
Java Program to Check if a Matrix is Invertible
Hướng dẫn sử dụng luồng vào ra nhị phân trong Java
A Guide to WatchService in Java NIO2
New Features in Java 11
Jackson – Bidirectional Relationships
A Guide to ConcurrentMap
Predicate trong Java 8
Hướng dẫn Java Design Pattern – Transfer Object
Java Program to Implement the Vigenere Cypher
Extract links from an HTML page
Registration with Spring Security – Password Encoding
Java Program to Generate Date Between Given Range
Java Program to Find Nearest Neighbor for Dynamic Data Set
Concatenating Strings In Java
Từ khóa this và super trong Java
Java Program to Implement Leftist Heap
Java Program to Check if a Directed Graph is a Tree or Not Using DFS
The Thread.join() Method in Java