Prime算法
来源:互联网 发布:西装面料 知乎 编辑:程序博客网 时间:2024/05/18 01:40
最小代价生成树
实现中树采用邻接矩阵的存储方式,用python来实现
基本思想:在图中选取一些定点构成树,选取与这颗树相连变最短的那条边所连的定点加入树中。
class MGraph: def __init__(self,n, values): self.n = 5 self.edge = [[ 10 for i in range(5)] for i in range(5)] edgelist = [] for i in range(self.n): for j in range(self.n): edgelist.append([i,j]) for i, j in zip(edgelist, values): self.edge[i[0]][i[1]] = j def show(self): print(self.edge) def prime(self, v0): lowcost = [10 for i in range(self.n)] vset = [0]*self.n vlist = [0]*self.n vset[v0] = 1 sum = 0 for i in range(self.n): lowcost[i] = self.edge[v0][i] k = 0 for i in range(self.n): t_min = 10 for j in range(self.n): if(vset[j] == 0 and lowcost[j] < t_min): t_min = lowcost[j] k = j v = k if(vset[v] == 0): sum += t_min vset[v] = 1 for j in range(self.n): if(vset[j] == 0 and self.edge[v][j] < lowcost[j]): lowcost[j] = g.edge[v][j] vlist [j] = v return vlistif __name__ == '__main__': #edgelist = [[0, 0], [0, 1], [0, 4], [1, 1], [2, 2], [2, 3], [2, 5], [3, 0], [3, 1], [3, 3], [3, 4], [4, 4], [4, 5], # [5, 5]] #values = [0, 1.1, 8.0, 0, 0, 5.7, 5.0, 2.2, 3.2, 0, 3.3, 0, 6.0, 0] values = [0,5,1,2,10,5,0,3,10,4,1,3,0,6,2,2,10,6,0,3,10,4,2,3,0] g = MGraph(5, values) g.show() vlist = g.prime(0) print(vlist)
阅读全文
0 0
- Prime算法
- Prime算法
- Prime算法
- Prime算法
- prime算法
- Prime算法
- prime算法
- Prime算法
- Prime算法
- prime算法
- Prime算法
- Prime算法
- hdu 1102(prime 算法)
- 普利姆(Prime)算法
- prime算法 poj1789
- 最小树Prime算法
- 【普利姆(Prime)算法】
- prime算法--布线问题
- 通过OD调试阻止对话框弹出
- [Codeforces 903 D. Almost Difference]树状数组+大数模板
- Bootstrap-表格
- 程序员如何提高工作效率
- VMware下配置CenterOS7的静态ip
- Prime算法
- 集群间相互ssh免密访问
- Spring2.4——FactoryBean、获取Bean的id
- Laravel Debugbar 扩展包安装及使用教程
- maven 手动安装jar包 笔记
- C语言中strcpy、strcmp、strlen、strcat、memcpy、 memset的用法。
- Bootstrap-路径分页标签和徽章组件
- 八种排序方法(三)——插入排序
- 机器学习知识点总结