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:
Hướng dẫn Java Design Pattern – Intercepting Filter
Constructor Injection in Spring with Lombok
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Introduction to PCollections
Model, ModelMap, and ModelAndView in Spring MVC
Remove HTML tags from a file to extract only the TEXT
Sorting in Java
Java Program to Perform Naive String Matching
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Java Program to Perform Searching Based on Locality of Reference
Java Program to Implement Ternary Search Tree
Java Program to Implement Adjacency Matrix
Comparing Strings in Java
Overview of the java.util.concurrent
Using a List of Values in a JdbcTemplate IN Clause
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Java InputStream to String
Wrapper Classes in Java
Using Spring ResponseEntity to Manipulate the HTTP Response
Simultaneous Spring WebClient Calls
Java – File to Reader
Phương thức tham chiếu trong Java 8 – Method References
Java Program to Implement CountMinSketch
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
Java Program to Implement Stack using Linked List
Comparing Arrays in Java
Compact Strings in Java 9
Split a String in Java
Form Validation with AngularJS and Spring MVC
Intro to Spring Boot Starters
Java Program to Implement Floyd-Warshall Algorithm
Hướng dẫn Java Design Pattern – Singleton