From 124f1d8dc13e83d0b1a498e896ed72e4ccba774d Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Sat, 5 Oct 2024 20:03:55 +0530 Subject: [PATCH 1/9] Remove `print` & `main` methods, improve comments, add tests in `FloydWarshall.java` --- .../datastructures/graphs/FloydWarshall.java | 82 +++++++++++++++---- .../graphs/FloydWarshallTest.java | 54 ++++++++++++ 2 files changed, 120 insertions(+), 16 deletions(-) create mode 100644 src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java b/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java index d47ffe3aa27d..ea9b02277168 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java @@ -2,20 +2,47 @@ import java.util.Scanner; +/** + * The {@code FloydWarshall} class provides an implementation of the Floyd-Warshall algorithm + * to compute the shortest paths between all pairs of vertices in a weighted graph. + * It handles both positive and negative edge weights but does not support negative cycles. + * The algorithm is based on dynamic programming and runs in O(V^3) time complexity, + * where V is the number of vertices in the graph. + * + *

+ * The distance matrix is updated iteratively to find the shortest distance between any two vertices + * by considering each vertex as an intermediate step. + *

+ * + * Reference: Floyd-Warshall Algorithm + */ public class FloydWarshall { private int[][] distanceMatrix; - private int numberofvertices; // number of vertices in the graph + private int numberofvertices; public static final int INFINITY = 999; + /** + * Constructs a Floyd-Warshall instance for a graph with the given number of vertices. + * Initializes the distance matrix for the graph. + * + * @param numberofvertices The number of vertices in the graph. + */ public FloydWarshall(int numberofvertices) { - distanceMatrix = new int[numberofvertices + 1][numberofvertices + 1]; // stores the value of distance from all the possible path form the source - // vertex to destination vertex + distanceMatrix = new int[numberofvertices + 1][numberofvertices + 1]; // The matrix is initialized with 0's by default this.numberofvertices = numberofvertices; } - public void floydwarshall(int[][] adjacencyMatrix) { // calculates all the distances from source to destination vertex + /** + * Executes the Floyd-Warshall algorithm to compute the shortest path between all pairs of vertices. + * It uses an adjacency matrix to calculate the distance matrix by considering each vertex as an intermediate point. + * + * @param adjacencyMatrix The weighted adjacency matrix representing the graph. + * A value of 0 means no direct edge between the vertices, except for diagonal elements which are 0 (distance to self). + */ + public void floydwarshall(int[][] adjacencyMatrix) { + // Initialize the distance matrix with the adjacency matrix. for (int source = 1; source <= numberofvertices; source++) { for (int destination = 1; destination <= numberofvertices; destination++) { distanceMatrix[source][destination] = adjacencyMatrix[source][destination]; @@ -24,19 +51,29 @@ public void floydwarshall(int[][] adjacencyMatrix) { // calculates all the dista for (int intermediate = 1; intermediate <= numberofvertices; intermediate++) { for (int source = 1; source <= numberofvertices; source++) { for (int destination = 1; destination <= numberofvertices; destination++) { - if (distanceMatrix[source][intermediate] + distanceMatrix[intermediate][destination] < distanceMatrix[source][destination]) { // calculated distance it get replaced as - // new shortest distance // if the new - // distance calculated is less then the - // earlier shortest + // Update distance if a shorter path through the intermediate vertex exists. + if (distanceMatrix[source][intermediate] + distanceMatrix[intermediate][destination] < distanceMatrix[source][destination]) { distanceMatrix[source][destination] = distanceMatrix[source][intermediate] + distanceMatrix[intermediate][destination]; } } } } + + printDistanceMatrix(); + } + + /** + * Prints the distance matrix representing the shortest paths between all pairs of vertices. + * The rows and columns correspond to the source and destination vertices. + */ + private void printDistanceMatrix() { + // Print header for vertices for (int source = 1; source <= numberofvertices; source++) { System.out.print("\t" + source); } System.out.println(); + + // Print the distance matrix for (int source = 1; source <= numberofvertices; source++) { System.out.print(source + "\t"); for (int destination = 1; destination <= numberofvertices; destination++) { @@ -46,27 +83,40 @@ public void floydwarshall(int[][] adjacencyMatrix) { // calculates all the dista } } + /** + * The main method that interacts with the user to input graph details + * (number of vertices and adjacency matrix) and computes the shortest paths + * using the Floyd-Warshall algorithm. + * + * @param arg Command-line arguments (not used). + */ public static void main(String... arg) { Scanner scan = new Scanner(System.in); System.out.println("Enter the number of vertices"); int numberOfVertices = scan.nextInt(); + int[][] adjacencyMatrix = 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++) { adjacencyMatrix[source][destination] = scan.nextInt(); if (source == destination) { - adjacencyMatrix[source][destination] = 0; - continue; - } - if (adjacencyMatrix[source][destination] == 0) { - adjacencyMatrix[source][destination] = INFINITY; + adjacencyMatrix[source][destination] = 0; // Distance to itself is zero. + } else if (adjacencyMatrix[source][destination] == 0) { + adjacencyMatrix[source][destination] = INFINITY; // No direct path between source and destination. } } } - System.out.println("The Transitive Closure of the Graph"); - FloydWarshall floydwarshall = new FloydWarshall(numberOfVertices); - floydwarshall.floydwarshall(adjacencyMatrix); + + System.out.println("The Transitive Closure of the Graph:"); + FloydWarshall floydWarshall = new FloydWarshall(numberOfVertices); + floydWarshall.floydwarshall(adjacencyMatrix); + scan.close(); } + + public Object[] getDistanceMatrix() { + return distanceMatrix; + } } diff --git a/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java new file mode 100644 index 000000000000..a28d7e4aa150 --- /dev/null +++ b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java @@ -0,0 +1,54 @@ +package com.thealgorithms.datastructures.graphs; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +import org.junit.jupiter.api.Test; + +class FloydWarshallTest { + + @Test + void testSmallGraph() { + int[][] adjacencyMatrix = { + {0, 0, 0, 0}, // Ignored row (0 index) + {0, 0, 3, FloydWarshall.INFINITY}, + {0, FloydWarshall.INFINITY, 0, 1}, + {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0} + }; + + FloydWarshall fw = new FloydWarshall(3); + fw.floydwarshall(adjacencyMatrix); + + int[][] expectedDistanceMatrix = { + {0, 0, 0, 0}, // Ignored row (0 index) + {0, 0, 3, 4}, + {0, FloydWarshall.INFINITY, 0, 1}, + {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0} + }; + + assertArrayEquals(expectedDistanceMatrix, fw.getDistanceMatrix()); + } + + @Test + void testLargerGraph() { + int[][] adjacencyMatrix = { + {0, 0, 0, 0, 0}, // Ignored row (0 index) + {0, 0, 1, FloydWarshall.INFINITY, 2}, + {0, FloydWarshall.INFINITY, 0, 4, FloydWarshall.INFINITY}, + {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, + {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0} + }; + + FloydWarshall fw = new FloydWarshall(4); + fw.floydwarshall(adjacencyMatrix); + + int[][] expectedDistanceMatrix = { + {0, 0, 0, 0, 0}, // Ignored row (0 index) + {0, 0, 1, 5, 2}, + {0, FloydWarshall.INFINITY, 0, 4, 7}, + {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, + {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0} + }; + + assertArrayEquals(expectedDistanceMatrix, fw.getDistanceMatrix()); + } +} From a0de1a5105d3f16f56e825ce033f38c305e8160b Mon Sep 17 00:00:00 2001 From: Hardvan Date: Sat, 5 Oct 2024 14:34:12 +0000 Subject: [PATCH 2/9] Update directory --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index ee09790ed64d..cfdff4e736f8 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -659,6 +659,7 @@ * graphs * [BoruvkaAlgorithmTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java) * [DijkstraAlgorithmTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/DijkstraAlgorithmTest.java) + * [FloydWarshallTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java) * [FordFulkersonTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/FordFulkersonTest.java) * [HamiltonianCycleTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/HamiltonianCycleTest.java) * [KosarajuTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/KosarajuTest.java) From e6b7ff505cb54b87b45d622a45ad7b679113c834 Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Sat, 5 Oct 2024 20:08:25 +0530 Subject: [PATCH 3/9] Fix clang errors --- .../graphs/FloydWarshallTest.java | 34 +++++-------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java index a28d7e4aa150..83e20ce0c810 100644 --- a/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java +++ b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java @@ -8,46 +8,28 @@ class FloydWarshallTest { @Test void testSmallGraph() { - int[][] adjacencyMatrix = { - {0, 0, 0, 0}, // Ignored row (0 index) - {0, 0, 3, FloydWarshall.INFINITY}, - {0, FloydWarshall.INFINITY, 0, 1}, - {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0} - }; + int[][] adjacencyMatrix = {{0, 0, 0, 0}, // Ignored row (0 index) + {0, 0, 3, FloydWarshall.INFINITY}, {0, FloydWarshall.INFINITY, 0, 1}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; FloydWarshall fw = new FloydWarshall(3); fw.floydwarshall(adjacencyMatrix); - int[][] expectedDistanceMatrix = { - {0, 0, 0, 0}, // Ignored row (0 index) - {0, 0, 3, 4}, - {0, FloydWarshall.INFINITY, 0, 1}, - {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0} - }; + int[][] expectedDistanceMatrix = {{0, 0, 0, 0}, // Ignored row (0 index) + {0, 0, 3, 4}, {0, FloydWarshall.INFINITY, 0, 1}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; assertArrayEquals(expectedDistanceMatrix, fw.getDistanceMatrix()); } @Test void testLargerGraph() { - int[][] adjacencyMatrix = { - {0, 0, 0, 0, 0}, // Ignored row (0 index) - {0, 0, 1, FloydWarshall.INFINITY, 2}, - {0, FloydWarshall.INFINITY, 0, 4, FloydWarshall.INFINITY}, - {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, - {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0} - }; + int[][] adjacencyMatrix = {{0, 0, 0, 0, 0}, // Ignored row (0 index) + {0, 0, 1, FloydWarshall.INFINITY, 2}, {0, FloydWarshall.INFINITY, 0, 4, FloydWarshall.INFINITY}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; FloydWarshall fw = new FloydWarshall(4); fw.floydwarshall(adjacencyMatrix); - int[][] expectedDistanceMatrix = { - {0, 0, 0, 0, 0}, // Ignored row (0 index) - {0, 0, 1, 5, 2}, - {0, FloydWarshall.INFINITY, 0, 4, 7}, - {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, - {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0} - }; + int[][] expectedDistanceMatrix = {{0, 0, 0, 0, 0}, // Ignored row (0 index) + {0, 0, 1, 5, 2}, {0, FloydWarshall.INFINITY, 0, 4, 7}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; assertArrayEquals(expectedDistanceMatrix, fw.getDistanceMatrix()); } From 416000f5eaeaf6c020521b6f89a6041cf4745fe6 Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Sat, 5 Oct 2024 20:10:32 +0530 Subject: [PATCH 4/9] Fix clang errors --- .../datastructures/graphs/FloydWarshallTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java index 83e20ce0c810..2aa2e6dcf177 100644 --- a/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java +++ b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java @@ -9,13 +9,13 @@ class FloydWarshallTest { @Test void testSmallGraph() { int[][] adjacencyMatrix = {{0, 0, 0, 0}, // Ignored row (0 index) - {0, 0, 3, FloydWarshall.INFINITY}, {0, FloydWarshall.INFINITY, 0, 1}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; + {0, 0, 3, FloydWarshall.INFINITY}, {0, FloydWarshall.INFINITY, 0, 1}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; FloydWarshall fw = new FloydWarshall(3); fw.floydwarshall(adjacencyMatrix); int[][] expectedDistanceMatrix = {{0, 0, 0, 0}, // Ignored row (0 index) - {0, 0, 3, 4}, {0, FloydWarshall.INFINITY, 0, 1}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; + {0, 0, 3, 4}, {0, FloydWarshall.INFINITY, 0, 1}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; assertArrayEquals(expectedDistanceMatrix, fw.getDistanceMatrix()); } From 54a5543437b1d6f6ba99f8561a9bb6665b782e90 Mon Sep 17 00:00:00 2001 From: Hardvan Date: Sat, 5 Oct 2024 14:42:10 +0000 Subject: [PATCH 5/9] Update directory --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index e8aab60e175d..559b908b06d0 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -673,6 +673,7 @@ * graphs * [BoruvkaAlgorithmTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/BoruvkaAlgorithmTest.java) * [DijkstraAlgorithmTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/DijkstraAlgorithmTest.java) + * [EdmondsBlossomAlgorithmTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/EdmondsBlossomAlgorithmTest.java) * [FloydWarshallTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java) * [FordFulkersonTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/FordFulkersonTest.java) * [HamiltonianCycleTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/graphs/HamiltonianCycleTest.java) From 221bc9f132d271161aaf07857bd1a0757023890d Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Sat, 5 Oct 2024 20:14:28 +0530 Subject: [PATCH 6/9] Fix comments --- .../datastructures/graphs/FloydWarshallTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java index 2aa2e6dcf177..730bd20fddf3 100644 --- a/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java +++ b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java @@ -14,7 +14,7 @@ void testSmallGraph() { FloydWarshall fw = new FloydWarshall(3); fw.floydwarshall(adjacencyMatrix); - int[][] expectedDistanceMatrix = {{0, 0, 0, 0}, // Ignored row (0 index) + int[][] expectedDistanceMatrix = {{0, 0, 0, 0}, {0, 0, 3, 4}, {0, FloydWarshall.INFINITY, 0, 1}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; assertArrayEquals(expectedDistanceMatrix, fw.getDistanceMatrix()); @@ -22,13 +22,13 @@ void testSmallGraph() { @Test void testLargerGraph() { - int[][] adjacencyMatrix = {{0, 0, 0, 0, 0}, // Ignored row (0 index) + int[][] adjacencyMatrix = {{0, 0, 0, 0, 0}, {0, 0, 1, FloydWarshall.INFINITY, 2}, {0, FloydWarshall.INFINITY, 0, 4, FloydWarshall.INFINITY}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; FloydWarshall fw = new FloydWarshall(4); fw.floydwarshall(adjacencyMatrix); - int[][] expectedDistanceMatrix = {{0, 0, 0, 0, 0}, // Ignored row (0 index) + int[][] expectedDistanceMatrix = {{0, 0, 0, 0, 0}, {0, 0, 1, 5, 2}, {0, FloydWarshall.INFINITY, 0, 4, 7}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; assertArrayEquals(expectedDistanceMatrix, fw.getDistanceMatrix()); From 895c810d8b7fd24f6a0265a4f460718bb0d6c98a Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Sat, 5 Oct 2024 20:23:13 +0530 Subject: [PATCH 7/9] Fix --- .../datastructures/graphs/FloydWarshallTest.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java index 730bd20fddf3..7d6a2b239f4b 100644 --- a/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java +++ b/src/test/java/com/thealgorithms/datastructures/graphs/FloydWarshallTest.java @@ -14,22 +14,19 @@ void testSmallGraph() { FloydWarshall fw = new FloydWarshall(3); fw.floydwarshall(adjacencyMatrix); - int[][] expectedDistanceMatrix = {{0, 0, 0, 0}, - {0, 0, 3, 4}, {0, FloydWarshall.INFINITY, 0, 1}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; + int[][] expectedDistanceMatrix = {{0, 0, 0, 0}, {0, 0, 3, 4}, {0, FloydWarshall.INFINITY, 0, 1}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; assertArrayEquals(expectedDistanceMatrix, fw.getDistanceMatrix()); } @Test void testLargerGraph() { - int[][] adjacencyMatrix = {{0, 0, 0, 0, 0}, - {0, 0, 1, FloydWarshall.INFINITY, 2}, {0, FloydWarshall.INFINITY, 0, 4, FloydWarshall.INFINITY}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; + int[][] adjacencyMatrix = {{0, 0, 0, 0, 0}, {0, 0, 1, FloydWarshall.INFINITY, 2}, {0, FloydWarshall.INFINITY, 0, 4, FloydWarshall.INFINITY}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; FloydWarshall fw = new FloydWarshall(4); fw.floydwarshall(adjacencyMatrix); - int[][] expectedDistanceMatrix = {{0, 0, 0, 0, 0}, - {0, 0, 1, 5, 2}, {0, FloydWarshall.INFINITY, 0, 4, 7}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; + int[][] expectedDistanceMatrix = {{0, 0, 0, 0, 0}, {0, 0, 1, 5, 2}, {0, FloydWarshall.INFINITY, 0, 4, 7}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0, 3}, {0, FloydWarshall.INFINITY, FloydWarshall.INFINITY, FloydWarshall.INFINITY, 0}}; assertArrayEquals(expectedDistanceMatrix, fw.getDistanceMatrix()); } From 7a15429eea8b601557c59470fbf20bce6e5365aa Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Mon, 7 Oct 2024 18:27:23 +0530 Subject: [PATCH 8/9] Remove main method --- .../datastructures/graphs/FloydWarshall.java | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java b/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java index ea9b02277168..6719132a91f9 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java @@ -83,39 +83,6 @@ private void printDistanceMatrix() { } } - /** - * The main method that interacts with the user to input graph details - * (number of vertices and adjacency matrix) and computes the shortest paths - * using the Floyd-Warshall algorithm. - * - * @param arg Command-line arguments (not used). - */ - public static void main(String... arg) { - Scanner scan = new Scanner(System.in); - System.out.println("Enter the number of vertices"); - int numberOfVertices = scan.nextInt(); - - int[][] adjacencyMatrix = 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++) { - adjacencyMatrix[source][destination] = scan.nextInt(); - if (source == destination) { - adjacencyMatrix[source][destination] = 0; // Distance to itself is zero. - } else if (adjacencyMatrix[source][destination] == 0) { - adjacencyMatrix[source][destination] = INFINITY; // No direct path between source and destination. - } - } - } - - System.out.println("The Transitive Closure of the Graph:"); - FloydWarshall floydWarshall = new FloydWarshall(numberOfVertices); - floydWarshall.floydwarshall(adjacencyMatrix); - - scan.close(); - } - public Object[] getDistanceMatrix() { return distanceMatrix; } From a527e95990927e73434257dc27880957d32954dd Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Mon, 7 Oct 2024 18:29:20 +0530 Subject: [PATCH 9/9] Fix --- .../com/thealgorithms/datastructures/graphs/FloydWarshall.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java b/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java index 6719132a91f9..66dc6782a8be 100644 --- a/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java +++ b/src/main/java/com/thealgorithms/datastructures/graphs/FloydWarshall.java @@ -1,7 +1,5 @@ package com.thealgorithms.datastructures.graphs; -import java.util.Scanner; - /** * The {@code FloydWarshall} class provides an implementation of the Floyd-Warshall algorithm * to compute the shortest paths between all pairs of vertices in a weighted graph.