Floyd算法
来源:互联网 发布:java算法相关书籍 编辑:程序博客网 时间:2024/06/17 14:30
#-*- coding: cp936 -*- -*-from sys import maxintclass shortestPath: @staticmethod def floyd(node,connected,path): for i in range(len(node)): for j in range(len(node)): if connected[i][j]<maxint: path[i][j][i]=True path[i][j][j]=True for u in range(len(node)):#中间顶点的序号从 0 到 n-1 for v in range(len(node)): for w in range(len(node)): if connected[v][u]+connected[u][w] < connected[v][w]: connected[v][w]=connected[v][u]+connected[u][w] for t in range(len(node)): path[v][w][t] = path[v][u][t] or path[u][w][t] shortestPath.printPath(node,connected,path) @staticmethod def printPath(node,connected,path): for i in range(len(node)): for j in range(len(node)): if i == j: continue print("------------------------") throughNode=[] for t in range(len(node)): if path[i][j][t]: throughNode.append((connected[i][t],t)) throughNode.sort(key=lambda tup:tup[0]) if connected[i][j]==maxint: print(node[i]+" and "+node[j]+" not connected") else: print(node[i]+"->"+node[j]+" cost "+str(connected[i][j])) print("path is ...") for each in throughNode: print(node[each[1]])def main(): #使用邻接矩阵来表示图 node = ['V0','V1','V2','V3','V4','V5'] connected = [[maxint,maxint, 10,maxint,30, 100], [maxint,maxint, 5,maxint,maxint,maxint], [maxint,maxint,maxint, 50,maxint,maxint], [maxint,maxint,maxint,maxint,maxint, 10], [maxint,maxint,maxint, 20,maxint, 60], [maxint,maxint,maxint,maxint,maxint,maxint]] #path[i][j][k]为True表示 k 是 i到j 当前最短路径 的一个点 path = [[[False for i in range(len(node))] for j in range(len(node))] for k in range(len(node))] shortestPath.floyd(node,connected,path) if __name__=='__main__': main()
结果截图:
0 0
- Floyd算法
- Floyd算法
- Floyd算法
- Floyd算法
- Floyd算法
- Floyd算法
- Floyd算法
- Floyd算法
- floyd 算法
- Floyd算法
- floyd算法
- Floyd算法
- Floyd算法
- Floyd算法
- floyd算法
- Floyd算法
- Floyd算法
- Floyd算法
- SQL、T-SQL与PL-SQL的区别
- 留恋
- 用C#获得计算机名称和IP地址
- C#动态生成控件以及添加事件处理
- 很有意思的网络通信例子---小明与…
- Floyd算法
- obj-c 开发相关基本名词解释…
- sql server sysobjects&…
- SQLServer如何用T—SQL命令查询一个…
- fopen , fread fwr…
- 虚拟机无法找到内核 无…
- WinForm编程之XML读写
- WinForm编程之计算机的重启与关机
- 我的博客今天2岁38天了,我领取了…