Skip to content

Commit edaa2c1

Browse files
author
Sarot Busala
authored
Floyd Warshall Algorithm
upload simple Floyd-Warshall Algorithm (No path stored)
1 parent 535cbb7 commit edaa2c1

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

Diff for: dynamic_programming/FloydWarshall.py

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import math
2+
3+
class Graph:
4+
5+
def __init__(self, N = 0): # a graph with Node 0,1,...,N-1
6+
self.N = N
7+
self.W = [[math.inf for j in range(0,N)] for i in range(0,N)] # adjacency matrix for weight
8+
self.dp = [[math.inf for j in range(0,N)] for i in range(0,N)] # dp[i][j] stores minimum distance from i to j
9+
10+
def addEdge(self, u, v, w):
11+
self.dp[u][v] = w;
12+
13+
def floyd_warshall(self):
14+
for k in range(0,self.N):
15+
for i in range(0,self.N):
16+
for j in range(0,self.N):
17+
self.dp[i][j] = min(self.dp[i][j], self.dp[i][k] + self.dp[k][j])
18+
19+
def showMin(self, u, v):
20+
return self.dp[u][v]
21+
22+
if __name__ == '__main__':
23+
graph = Graph(5)
24+
graph.addEdge(0,2,9)
25+
graph.addEdge(0,4,10)
26+
graph.addEdge(1,3,5)
27+
graph.addEdge(2,3,7)
28+
graph.addEdge(3,0,10)
29+
graph.addEdge(3,1,2)
30+
graph.addEdge(3,2,1)
31+
graph.addEdge(3,4,6)
32+
graph.addEdge(4,1,3)
33+
graph.addEdge(4,2,4)
34+
graph.addEdge(4,3,9)
35+
graph.floyd_warshall()
36+
graph.showMin(1,4)
37+
graph.showMin(0,3)

0 commit comments

Comments
 (0)