Java Program to Implement Warshall Algorithm

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:

Flattening Nested Collections in Java
Abstract class và Interface trong Java
Feign – Tạo ứng dụng Java RESTful Client
Java Program to Check if a Point d lies Inside or Outside a Circle Defined by Points a, b, c in a Pl...
Java Program to Optimize Wire Length in Electrical Circuit
Java Multi-line String
Queue và PriorityQueue trong Java
Enum trong java
Java Program to Show the Duality Transformation of Line and Point
Encode a String to UTF-8 in Java
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Java Program to Implement Heap Sort Using Library Functions
Primitive Type Streams in Java 8
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
HTTP Authentification and CGI/Servlet
Ép kiểu trong Java (Type casting)
Java Program to Implement HashSet API
Java Program to Implement PrinterStateReasons API
Java Program to Generate All Pairs of Subsets Whose Union Make the Set
Immutable Map Implementations in Java
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Guide to the Synchronized Keyword in Java
HashSet trong Java hoạt động như thế nào?
Spring Boot - Enabling HTTPS
Java Program to Implement Cubic convergence 1/pi Algorithm
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Spring Boot Security Auto-Configuration
Sử dụng CyclicBarrier trong Java
Spring 5 and Servlet 4 – The PushBuilder
Introduction to Spring Cloud CLI
New Features in Java 14
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries