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:
A Guide to Apache Commons Collections CollectionUtils
Sử dụng JDBC API thực thi câu lệnh truy vấn dữ liệu
Java Program for Topological Sorting in Graphs
Java Program to Implement Gale Shapley Algorithm
Hướng dẫn sử dụng Java Reflection
Java Program to Implement Sorted Array
How to Round a Number to N Decimal Places in Java
Java Program to Implement Triply Linked List
Java Program to Implement Network Flow Problem
Java Program to Implement Binary Tree
Hướng dẫn sử dụng lớp Console trong java
Java Program to Check whether Undirected Graph is Connected using BFS
Spring Boot - Rest Template
Guide to WeakHashMap in Java
Guide to PriorityBlockingQueue in Java
Java – Combine Multiple Collections
LinkedHashSet trong Java hoạt động như thế nào?
Using a Mutex Object in Java
Java Program to Perform LU Decomposition of any Matrix
The Java 8 Stream API Tutorial
Spring’s RequestBody and ResponseBody Annotations
Java Program to Check Whether a Given Point is in a Given Polygon
A Custom Data Binder in Spring MVC
Guide to Dynamic Tests in Junit 5
ExecutorService – Waiting for Threads to Finish
Spring REST with a Zuul Proxy
Java – InputStream to Reader
Reactive Flow with MongoDB, Kotlin, and Spring WebFlux
Jackson vs Gson
Java Program to Generate a Random UnDirected Graph for a Given Number of Edges
A Guide to EnumMap
Java Program to Check whether Undirected Graph is Connected using DFS