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:
ExecutorService – Waiting for Threads to Finish
String Joiner trong Java 8
Supplier trong Java 8
Java Program to Implement Weight Balanced Tree
Rate Limiting in Spring Cloud Netflix Zuul
Spring REST with a Zuul Proxy
Java Program to Implement the Edmond’s Algorithm for Maximum Cardinality Matching
New Features in Java 15
Spring Boot - Google OAuth2 Sign-In
Java Program to Implement Shunting Yard Algorithm
Java Program to Implement an Algorithm to Find the Global min Cut in a Graph
Java Program to Implement Network Flow Problem
How to Replace Many if Statements in Java
Java Program to Implement Radix Sort
Java Program to Check Whether a Weak Link i.e. Articulation Vertex Exists in a Graph
Java Program to Solve the Fractional Knapsack Problem
Java Program to Check for balanced parenthesis by using Stacks
Send email with JavaMail
Java Program to Generate Random Hexadecimal Byte
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Java Program to Implement Min Heap
How to Read HTTP Headers in Spring REST Controllers
Java CyclicBarrier vs CountDownLatch
Spring Boot - Cloud Configuration Server
Java Program to Perform Uniform Binary Search
Java Program to Check if a Matrix is Invertible
Spring Security OAuth2 – Simple Token Revocation
Introduction to Apache Commons Text
Java Program to Use rand and srand Functions
Java 8 Stream API Analogies in Kotlin
REST Web service: Basic Authentication trong Jersey 2.x
Java Program to Implement DelayQueue API