This Java program is to find the transitive closure of a graph.Given a directed graph, find out if a vertex j is reachable from another vertex i for all vertex pairs (i, j) in the given graph. Here reachable mean that there is a path from vertex i to j. The reach-ability matrix is called transitive closure of a graph.
Here is the source code of the Java program to find the transitive closure of graph. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
import java.util.Scanner; public class TransitiveClosure { private int transitiveMatrix[][]; private int numberofvertices; public static final int INFINITY = 999; public TransitiveClosure(int numberofvertices) { transitiveMatrix= new int[numberofvertices + 1][numberofvertices + 1]; this.numberofvertices = numberofvertices; } public void transitiveClosure(int adjacencymatrix[][]) { for (int source = 1; source <= numberofvertices; source++) { for (int destination = 1; destination <= numberofvertices; destination++) { transitiveMatrix[destination] = adjacencymatrix[destination]; } } for (int intermediate = 1; intermediate <= numberofvertices; intermediate++) { for (int source = 1; source <= numberofvertices; source++) { for (int destination = 1; destination <= numberofvertices; destination++) { if (transitiveMatrix[intermediate] + transitiveMatrix[intermediate][destination] < transitiveMatrix[destination]) transitiveMatrix[destination] = transitiveMatrix[intermediate] + transitiveMatrix[intermediate][destination]; } } } for (int source = 1; source <= numberofvertices; source++) System.out.print("\t" + source); System.out.println(); for (int source = 1; source <= numberofvertices; source++) { System.out.print(source + "\t"); for (int destination = 1; destination <= numberofvertices; destination++) { System.out.print(transitiveMatrix[destination] + "\t"); } System.out.println(); } } public static void main(String... arg) { int adjacency_matrix[][]; int numberofvertices; Scanner scan = new Scanner(System.in); System.out.println("Enter the number of vertices"); numberofvertices = scan.nextInt(); adjacency_matrix = new int[numberofvertices + 1][numberofvertices + 1]; System.out.println("Enter the Weighted Matrix for the graph"); for (int source = 1; source <= numberofvertices; source++) { for (int destination = 1; destination <= numberofvertices; destination++) { adjacency_matrix[destination] = scan.nextInt(); if (source == destination) { adjacency_matrix[destination] = 0; continue; } if (adjacency_matrix[destination] == 0) { adjacency_matrix[destination] = INFINITY; } } } System.out.println("The Transitive Closure of the Graph"); TransitiveClosure transitiveClosure = new TransitiveClosure(numberofvertices); transitiveClosure.transitiveClosure(adjacency_matrix); scan.close(); } }
$javac TransitiveClosure.java $java TransitiveClosure Enter the number of vertices 4 Enter the Weighted Matrix for the graph 0 0 3 0 2 0 0 0 0 7 0 1 6 0 0 0 The Transitive Closure of the Graph 1 2 3 4 1 0 10 3 4 2 2 0 5 6 3 7 7 0 1 4 6 16 9 0
Related posts:
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Java Program to Implement Interpolation Search Algorithm
Send email with SMTPS (eg. Google GMail)
Java Program to Implement Hash Tables
Spring Data MongoDB Transactions
Finding articulation points in a graph in $O(N+M)$
Giới thiệu Swagger – Công cụ document cho RESTfull APIs
List Interface trong Java
Case-Insensitive String Matching in Java
Spring Boot - Enabling Swagger2
Quick Guide to Spring Controllers
Spring Data JPA Delete and Relationships
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Creating a Generic Array in Java
Finding the Differences Between Two Lists in Java
Upload and Display Excel Files with Spring MVC
Interface trong Java 8 – Default method và Static method
Calling Stored Procedures from Spring Data JPA Repositories
Spring Boot with Multiple SQL Import Files
Java Program to Implement Gabow Algorithm
Giới thiệu java.io.tmpdir
Circular Dependencies in Spring
Java Program to Optimize Wire Length in Electrical Circuit
Spring Security OAuth Login with WebFlux
Spring @RequestMapping New Shortcut Annotations
Java Program to Implement the String Search Algorithm for Short Text Sizes
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
Java Program to Perform Stooge Sort
Kết hợp Java Reflection và Java Annotations
Set Interface trong Java
Java Program to Implement Cartesian Tree