This Java program is to implement the Floyd-Warshall algorithm.The algorithm is a graph analysis algorithm for finding shortest paths in a weighted graph with positive or negative edge weights (but with no negative cycles) and also for finding transitive closure of a relation R.
Here is the source code of the Java program to implement Floyd-Warshall algorithm. 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 FloydWarshall
{
private int distancematrix[][];
private int numberofvertices;
public static final int INFINITY = 999;
public FloydWarshall(int numberofvertices)
{
distancematrix = new int[numberofvertices + 1][numberofvertices + 1];
this.numberofvertices = numberofvertices;
}
public void floydwarshall(int adjacencymatrix[][])
{
for (int source = 1; source <= numberofvertices; source++)
{
for (int destination = 1; destination <= numberofvertices; destination++)
{
distancematrix[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 (distancematrix[intermediate] + distancematrix[intermediate][destination]
< distancematrix[destination])
distancematrix[destination] = distancematrix[intermediate]
+ distancematrix[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(distancematrix[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");
FloydWarshall floydwarshall = new FloydWarshall(numberofvertices);
floydwarshall.floydwarshall(adjacency_matrix);
scan.close();
}
}
$javac FloydWarshall.java $java FloydWarshall 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 Implement Gale Shapley Algorithm
Java InputStream to String
Java Program to Implement the Alexander Bogomolny’s UnOrdered Permutation Algorithm for Elements Fro...
Compact Strings in Java 9
An Intro to Spring Cloud Vault
Split a String in Java
A Custom Data Binder in Spring MVC
Java Program to Convert a Decimal Number to Binary Number using Stacks
Comparing Strings in Java
Different Ways to Capture Java Heap Dumps
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Read an Outlook MSG file
Java Program to Implement the One Time Pad Algorithm
Hướng dẫn Java Design Pattern – State
Java Program to Implement Vector API
Spring Boot - Securing Web Applications
Guide to the Java TransferQueue
Java Program to Check whether Directed Graph is Connected using DFS
Guide to Dynamic Tests in Junit 5
Java Program to Implement CopyOnWriteArraySet API
CharSequence vs. String in Java
Inheritance and Composition (Is-a vs Has-a relationship) in Java
JUnit5 Programmatic Extension Registration with @RegisterExtension
Java Program to Find kth Smallest Element by the Method of Partitioning the Array
Java Program to Implement Stack using Two Queues
Java Program to Implement Knapsack Algorithm
Java Program to Solve any Linear Equation in One Variable
Introduction to Spring Cloud CLI
Instance Profile Credentials using Spring Cloud
Java Program to Find Basis and Dimension of a Matrix
Java Program to Implement Strassen Algorithm
Hamcrest Collections Cookbook