0% found this document useful (0 votes)
22 views3 pages

All-Pairs Shortest Paths

The document describes the Floyd-Warshall algorithm for finding all pairs shortest paths in a weighted graph, producing a matrix of minimum distances between nodes. It outlines the algorithm's time complexity of O(V^3) and provides a detailed example with a cost matrix and corresponding output matrix. Additionally, it includes a C++ implementation of the algorithm.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views3 pages

All-Pairs Shortest Paths

The document describes the Floyd-Warshall algorithm for finding all pairs shortest paths in a weighted graph, producing a matrix of minimum distances between nodes. It outlines the algorithm's time complexity of O(V^3) and provides a detailed example with a cost matrix and corresponding output matrix. Additionally, it includes a C++ implementation of the algorithm.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Page 1 of 3

All-Pairs Shortest Paths


Data Structure Analysis of Algorithms Algorithms

The all pair shortest path algorithm is also known as Floyd-Warshall algorithm is used to find all pair
shortest path problem from a given weighted graph. As a result of this algorithm, it will generate a
matrix, which will represent the minimum distance from any node to all other nodes in the graph.

At first the output matrix is same as given cost matrix of the graph. After that the output matrix will be
updated with all vertices k as the intermediate vertex.

The time complexity of this algorithm is O(V3), here V is the number of vertices in the graph.

Input − The cost matrix of the graph.

036∞∞∞∞
3021∞∞∞
620142∞
∞1102∞4
∞∞42021
∞∞2∞201
∞∞∞4110

Output − Matrix of all pair shortest path.

0345677
3021344
4201323
5110233
Page 2 of 3

6332021
7423201
7433110

Algorithm

floydWarshal(cost)
Input − The cost matrix of given Graph.

Output − Matrix to for shortest path between any vertex to any vertex.

Begin
for k := 0 to n, do
for i := 0 to n, do
for j := 0 to n, do
if cost[i,k] + cost[k,j] < cost[i,j], then
cost[i,j] := cost[i,k] + cost[k,j]
done
done
done
display the current cost matrix
End

Example

#include<iostream>
#include<iomanip>
#define NODE 7
#define INF 999
using namespace std;
//Cost matrix of the graph
int costMat[NODE][NODE] = {
{0, 3, 6, INF, INF, INF, INF},
{3, 0, 2, 1, INF, INF, INF},
{6, 2, 0, 1, 4, 2, INF},
{INF, 1, 1, 0, 2, INF, 4},
{INF, INF, 4, 2, 0, 2, 1},
{INF, INF, 2, INF, 2, 0, 1},
{INF, INF, INF, 4, 1, 1, 0}
};
Page 3 of 3

void floydWarshal(){
int cost[NODE][NODE]; //defind to store shortest distance from any node
for(int i = 0; i<NODE; i++)
for(int j = 0; j<NODE; j++)
cost[i][j] = costMat[i][j]; //copy costMatrix to new matrix
for(int k = 0; k<NODE; k++){
for(int i = 0; i<NODE; i++)
for(int j = 0; j<NODE; j++)
if(cost[i][k]+cost[k][j] < cost[i][j])
cost[i][j] = cost[i][k]+cost[k][j];
}
cout << "The matrix:" << endl;
for(int i = 0; i<NODE; i++){
for(int j = 0; j<NODE; j++)
cout << setw(3) << cost[i][j];
cout << endl;
}
}
int main(){
floydWarshal();
}

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified
expert to boost your career.

Output

The matrix:
0354677
3021344
5201323
4110233
6332021
7423201
7433110

You might also like