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 Implement Ternary Tree
Spring Cloud Connectors and Heroku
Request Method Not Supported (405) in Spring
Spring Boot Tutorial – Bootstrap a Simple Application
HttpClient 4 – Follow Redirects for POST
HashMap trong Java hoạt động như thế nào?
Java Program to Implement Hash Tables
Hướng dẫn Java Design Pattern – Intercepting Filter
A Guide to Iterator in Java
Java Program to Check whether Undirected Graph is Connected using DFS
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Command-Line Arguments in Java
Java Program to Implement Patricia Trie
ETags for REST with Spring
A Guide to BitSet in Java
Using a Spring Cloud App Starter
Hướng dẫn Java Design Pattern – Proxy
Java Program to Generate All Subsets of a Given Set in the Lexico Graphic Order
Converting String to Stream of chars
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Migrating from JUnit 4 to JUnit 5
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
JUnit 5 for Kotlin Developers
Java Program to Implement ConcurrentLinkedQueue API
Java Program to Implement Bellman-Ford Algorithm
Java Program to Implement Weight Balanced Tree
How to Convert List to Map in Java
Spring NoSuchBeanDefinitionException
Java Program to Construct K-D Tree for 2 Dimensional Data
Java Program to Implement Sorted Array
Abstract class và Interface trong Java
Receive email using POP3