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:
Java Program to Implement LinkedList API
HttpClient Basic Authentication
Tổng quan về ngôn ngữ lập trình java
Introduction to the Java ArrayDeque
How to Iterate Over a Stream With Indices
JUnit5 Programmatic Extension Registration with @RegisterExtension
Spring Data Reactive Repositories with MongoDB
Java Copy Constructor
Autoboxing và Unboxing trong Java
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
How to Store Duplicate Keys in a Map in Java?
Java Program to Generate All Possible Combinations of a Given List of Numbers
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
An Example of Load Balancing with Zuul and Eureka
Deploy a Spring Boot App to Azure
Spring Webflux with Kotlin
Java Program to Implement LinkedBlockingDeque API
Overview of the java.util.concurrent
Bootstrap a Web Application with Spring 5
Java Program to Permute All Letters of an Input String
Java Scanner hasNext() vs. hasNextLine()
How to Implement Caching using Adonis.js 5
Java Program to Perform String Matching Using String Library
Spring Boot - Apache Kafka
Java Program to Implement Bresenham Line Algorithm
Apache Commons Collections SetUtils
Java Program to Find Basis and Dimension of a Matrix
4 tính chất của lập trình hướng đối tượng trong Java
Java Program to Find the Vertex Connectivity of a Graph
A Guide to the finalize Method in Java
Lớp Arrarys trong Java (Arrays Utility Class)
Ignore Null Fields with Jackson