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 Create a Balanced Binary Tree of the Incoming Data
Một số từ khóa trong Java
The Registration Process With Spring Security
Mix plain text and HTML content in a mail
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
Debug a JavaMail Program
Quick Intro to Spring Cloud Configuration
Flattening Nested Collections in Java
Java Program to Implement Park-Miller Random Number Generation Algorithm
Java Program to Check whether Graph is Biconnected
Java Multi-line String
Cài đặt và sử dụng Swagger UI
Quick Guide to the Java StringTokenizer
Spring Boot - Zuul Proxy Server and Routing
Send email with SMTPS (eg. Google GMail)
Hướng dẫn Java Design Pattern – Command
Jackson – Unmarshall to Collection/Array
A Custom Data Binder in Spring MVC
Java Program to Implement AVL Tree
Arrays.asList vs new ArrayList(Arrays.asList())
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Spring MVC Custom Validation
Java – Reader to InputStream
Java Program to Implement Treap
Java Program to Implement Affine Cipher
Test a REST API with Java
Immutable Map Implementations in Java
Java Program to Implement Heap
Hướng dẫn Java Design Pattern – Visitor
Java Program to add two large numbers using Linked List
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Guide to Selenium with JUnit / TestNG