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 Binary Tree
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Java List UnsupportedOperationException
Java Program to Implement LinkedBlockingDeque API
Apache Commons Collections MapUtils
“Stream has already been operated upon or closed” Exception in Java
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Practical Java Examples of the Big O Notation
Java Program to Implement Range Tree
Java Program to Implement Quick Sort with Given Complexity Constraint
Java Program to Implement AttributeList API
Command-Line Arguments in Java
Serverless Functions with Spring Cloud Function
Guide to the Synchronized Keyword in Java
Get and Post Lists of Objects with RestTemplate
Getting a File’s Mime Type in Java
Java Switch Statement
Spring REST API + OAuth2 + Angular
Java Program to Perform Stooge Sort
Programmatic Transaction Management in Spring
Java Program to Check if a Matrix is Invertible
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Java Program to Generate a Random UnDirected Graph for a Given Number of Edges
The Difference Between map() and flatMap()
Spring Boot - Application Properties
Java Program to Find the Minimum value of Binary Search Tree
Spring Boot - Sending Email
How to Add a Single Element to a Stream
Spring Boot - Logging
Model, ModelMap, and ModelAndView in Spring MVC
Guava CharMatcher
Java String to InputStream