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:
Lớp lồng nhau trong java (Java inner class)
Simple Single Sign-On with Spring Security OAuth2
Implementing a Runnable vs Extending a Thread
Intro to Spring Boot Starters
Setting a Request Timeout for a Spring REST API
Truyền giá trị và tham chiếu trong java
Java Program to Compute Discrete Fourier Transform Using Naive Approach
Java Program to Implement Fenwick Tree
A Guide to Java HashMap
Java Program to Implement Min Hash
Spring WebFlux Filters
Java Program to implement Array Deque
Merging Two Maps with Java 8
Java Program to Check whether Directed Graph is Connected using BFS
Initialize a HashMap in Java
Receive email using IMAP
Request a Delivery / Read Receipt in Javamail
Java Program to Print only Odd Numbered Levels of a Tree
Handling Errors in Spring WebFlux
A Guide to System.exit()
Java Program to Perform the Unique Factorization of a Given Number
Hướng dẫn Java Design Pattern – Observer
REST Web service: Basic Authentication trong Jersey 2.x
Spring Boot - Application Properties
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
Spring Webflux and CORS
Converting between an Array and a List in Java
Java Program to Construct an Expression Tree for an Postfix Expression
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
Java Program to Implement LinkedBlockingQueue API
Java Program to Implement Depth-limited Search