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:
Custom Exception trong Java
Apache Commons Collections MapUtils
Java Program to Check Whether an Input Binary Tree is the Sub Tree of the Binary Tree
Java Program to Solve a Matching Problem for a Given Specific Case
Java Program to Find the Edge Connectivity of a Graph
Java Program to Implement Max Heap
ETags for REST with Spring
Prevent Cross-Site Scripting (XSS) in a Spring Application
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
Guide to BufferedReader
Jackson – Unmarshall to Collection/Array
Giới thiệu java.io.tmpdir
Introduction to the Functional Web Framework in Spring 5
Comparing Dates in Java
Java Program to Implement LinkedTransferQueue API
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
Java Program to Check for balanced parenthesis by using Stacks
The Spring @Controller and @RestController Annotations
The StackOverflowError in Java
Java Program to Implement Sorted Circularly Singly Linked List
Add Multiple Items to an Java ArrayList
Java Program to Perform String Matching Using String Library
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Hướng dẫn sử dụng Java Reflection
Removing all Nulls from a List in Java
Java Program to Implement Euler Circuit Problem
Java Program to Implement Treap
Java Program to Implement Self Balancing Binary Search Tree
Java Program to Implement Insertion Sort
Lớp lồng nhau trong java (Java inner class)
How to Get All Spring-Managed Beans?
Setting the Java Version in Maven