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:
Difference Between Wait and Sleep in Java
Receive email by java client
Convert char to String in Java
Ways to Iterate Over a List in Java
How To Serialize and Deserialize Enums with Jackson
Dynamic Proxies in Java
Java Program to Perform Arithmetic Operations on Numbers of Size
Java IO vs NIO
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Java Program to Implement Sorted List
Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?
Mapping a Dynamic JSON Object with Jackson
Introduction to Spring Data MongoDB
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Sử dụng JDBC API thực thi câu lệnh truy vấn dữ liệu
A Guide to LinkedHashMap in Java
Introduction to Spring Cloud CLI
Hướng dẫn sử dụng Java Annotation
Simple Single Sign-On with Spring Security OAuth2
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Java Program to Find kth Largest Element in a Sequence
Hướng dẫn Java Design Pattern – Object Pool
Vector trong Java
Unsatisfied Dependency in Spring
Limiting Query Results with JPA and Spring Data JPA
Java Program to Implement vector
Java Program to Implement a Binary Search Algorithm for a Specific Search Sequence
Java Program to Implement ConcurrentLinkedQueue API
Spring Cloud Bus
Giới thiệu luồng vào ra (I/O) trong Java
Java Program to Implement Hopcroft Algorithm
Apache Commons Collections BidiMap