需要安装numpy
'''
Floyd算法
'''
import numpy as np
Max = 100
v_len = 4
edge = np.mat([[0,1,Max,4],[Max,0,9,2],[3,5,0,8],[Max,Max,6,0]])
A = edge[:]
path = np.zeros((v_len,v_len))
def Folyd():
for i in range(v_len):
for j in range(v_len):
if(edge[i,j] != Max and edge[i,j] != 0):
path[i][j] = i
print 'init:'
print A,'\n',path
for a in range(v_len):
for b in range(v_len):
for c in range(v_len):
if(A[b,a]+A[a,c]<A[b,c]):
A[b,c] = A[b,a]+A[a,c]
path[b][c] = path[a][c]
print 'result:'
print A,'\n',path
if __name__ == "__main__":
Folyd()