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:
Returning Image/Media Data with Spring MVC
Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Java Program to Implement Extended Euclid Algorithm
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Spring REST API + OAuth2 + Angular
Java Program to Find Minimum Element in an Array using Linear Search
Spring Boot - Database Handling
Beans and Dependency Injection
Spring Boot - Internationalization
Giới thiệu Google Guice – Dependency injection (DI) framework
Một số nguyên tắc, định luật trong lập trình
Java Program to Implement Skip List
LinkedList trong java
Updating your Password
Spring MVC Tutorial
Sử dụng CyclicBarrier trong Java
Creating Docker Images with Spring Boot
Hướng dẫn sử dụng Printing Service trong Java
Java equals() and hashCode() Contracts
Java Program to Find Number of Spanning Trees in a Complete Bipartite Graph
Weak References in Java
Java Program to Implement Adjacency Matrix
Java Program to Implement Counting Sort
Spring Boot - Twilio
Java Deep Learning Essentials - Yusuke Sugomori
Service Registration with Eureka
Java Program to Implement CopyOnWriteArrayList API
Spring Boot - Admin Client
Java Program to Implement Randomized Binary Search Tree
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Mix plain text and HTML content in a mail
Configuring a DataSource Programmatically in Spring Boot