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 Bubble Sort
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Java Program for Douglas-Peucker Algorithm Implementation
Documenting a Spring REST API Using OpenAPI 3.0
Concurrent Test Execution in Spring 5
Giới thiệu Design Patterns
Java Program to Find the Connected Components of an UnDirected Graph
Java InputStream to String
Java Program to Find ith Largest Number from a Given List Using Order-Statistic Algorithm
Spring Security Registration – Resend Verification Email
Spring Boot - Sending Email
Java Program to Implement Interpolation Search Algorithm
Sao chép các phần tử của một mảng sang mảng khác như thế nào?
Java Program to Check whether Graph is a Bipartite using 2 Color Algorithm
Hướng dẫn sử dụng String Format trong Java
Redirect to Different Pages after Login with Spring Security
Instance Profile Credentials using Spring Cloud
A Guide to Java HashMap
Practical Java Examples of the Big O Notation
Tips for dealing with HTTP-related problems
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
Java 9 Stream API Improvements
Java Program to Generate a Graph for a Given Fixed Degree Sequence
New Features in Java 11
Java Program to Implement Max Heap
Java Program to Implement Rolling Hash
Encode/Decode to/from Base64
Java Program to Implement the String Search Algorithm for Short Text Sizes
Cơ chế Upcasting và Downcasting trong java
Mapping a Dynamic JSON Object with Jackson
Lập trình đa luồng với Callable và Future trong Java
How to Delay Code Execution in Java