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:
An Intro to Spring Cloud Vault
Apache Commons Collections SetUtils
Jackson – Marshall String to JsonNode
Jackson – Decide What Fields Get Serialized/Deserialized
Java Program to Search for an Element in a Binary Search Tree
Registration – Password Strength and Rules
Java – Reader to InputStream
Java Program to Implement Bellman-Ford Algorithm
The Registration API becomes RESTful
Hướng dẫn sử dụng Java Annotation
Java Program to Implement Fibonacci Heap
Spring Boot with Multiple SQL Import Files
Mệnh đề if-else trong java
Java Program to Describe the Representation of Graph using Incidence Matrix
How to Get All Dates Between Two Dates?
Java Program to Implement Circular Doubly Linked List
Configuring a DataSource Programmatically in Spring Boot
Converting Between a List and a Set in Java
Hướng dẫn Java Design Pattern – Visitor
Java Program to Implement Gift Wrapping Algorithm in Two Dimensions
Java Program to Implement ArrayList API
Convert Character Array to String in Java
Java Program to Implement Selection Sort
Quick Guide to java.lang.System
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Spring Security Authentication Provider
Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Hướng dẫn Java Design Pattern – Singleton
Sử dụng CyclicBarrier trong Java
Java Optional as Return Type
Java Program to Perform Naive String Matching
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)