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:
Daemon Threads in Java
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
Spring Autowiring of Generic Types
Java Program to Find Maximum Element in an Array using Binary Search
Java Program to Implement LinkedTransferQueue API
How to Round a Number to N Decimal Places in Java
Java Program to Implement Queue using Two Stacks
Spring Boot - CORS Support
Spring Boot - Bootstrapping
Guide to Selenium with JUnit / TestNG
So sánh ArrayList và LinkedList trong Java
Using a Mutex Object in Java
Reactive Flow with MongoDB, Kotlin, and Spring WebFlux
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
Java Program to Implement Max Heap
Java Program to Implement Trie
A Quick Guide to Using Keycloak with Spring Boot
Weak References in Java
Java Program to Implement Solovay Strassen Primality Test Algorithm
Tìm hiểu về xác thực và phân quyền trong ứng dụng
HttpClient Timeout
Quick Guide to Spring Bean Scopes
Spring Boot - Application Properties
ETL with Spring Cloud Data Flow
Hướng dẫn sử dụng Java Reflection
Java Web Services – JAX-WS – SOAP
Java Program to Find the Median of two Sorted Arrays using Binary Search Approach
Java Program to Perform Sorting Using B-Tree
Java Program to Check whether Undirected Graph is Connected using BFS
Java Program to Implement Singly Linked List
Introduction to the Functional Web Framework in Spring 5