8000 some algorithms in python by gleydson · Pull Request #34 · AllAlgorithms/python · GitHub
[go: up one dir, main page]

Skip to content

some algorithms in python #34

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Oct 4, 2018
Prev Previous commit
Next Next commit
add floyd warshall
  • Loading branch information
gleydson committed Oct 3, 2018
commit 7cfefed7d55be18a0c5ddcee943f0ff392a8d1c2
37 changes: 37 additions & 0 deletions dynamic-programming/FloydWarshall.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import math

class Graph:

def __init__(self, N = 0): # a graph with Node 0,1,...,N-1
self.N = N
self.W = [[math.inf for j in range(0,N)] for i in range(0,N)] # adjacency matrix for weight
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

def addEdge(self, u, v, w):
self.dp[u][v] = w

def floyd_warshall(self):
for k in range(0,self.N):
for i in range(0,self.N):
for j in range(0,self.N):
self.dp[i][j] = min(self.dp[i][j], self.dp[i][k] + self.dp[k][j])

def showMin(self, u, v):
return self.dp[u][v]

if __name__ == '__main__':
graph = Graph(5)
graph.addEdge(0,2,9)
graph.addEdge(0,4,10)
graph.addEdge(1,3,5)
graph.addEdge(2,3,7)
graph.addEdge(3,0,10)
graph.addEdge(3,1,2)
graph.addEdge(3,2,1)
graph.addEdge(3,4,6)
graph.addEdge(4,1,3)
graph.addEdge(4,2,4)
graph.addEdge(4,3,9)
graph.floyd_warshall()
graph.showMin(1,4)
graph.showMin(0,3)
0