Python 数据结构与算法 —— Kruskal 算法
来源:互联网 发布:java 301跳转 编辑:程序博客网 时间:2024/06/08 08:26
1. 朴素版
# 查def naive_find(C, u): while C[u] != u: u = C[u] return u# 并 def naive_union(C, u, v): u = naive_find(C, u) v = naive_find(C, v) C[u] = vdef naive_kruskal(G): E = [(G[u][v], u, v) for u in G for v in G[u]] T = set() for _, u, v in sorted(E): if naive_find(C, u) != naive_find(C, v): T.add((u, v)) naive_union(u, v) return T
2. 使用 path compression
# 查def find(C, u): if u != C[u]: C[u] = find(C, C[C[u]]) return C[u]# 并def union(C, R, u, v): u = find(C, u) v = find(C, v) if R[u] > R[v]: C[v] = u else: C[u] = v if R[u] == R[v]: R[v] += 1def kruskal(G): E = [(G[u][v], u, v) for u in G for v in G[u]] T = set() C, R = {u:u for u in G}, {u:0 for u in G} for _, u, v in sorted(G): if find(C, u) != find(C, v): T.add(set(u, v)) union(C, R, u, v) return T
算法的实现算法的优化及改进,都有赖相关数据结构。
0 0
- Python 数据结构与算法 —— Kruskal 算法
- Python算法 Kruskal算法
- Python 数据结构与算法 —— Prim 算法与小顶堆
- Python 数据结构与算法——递归
- Python 数据结构与算法——deque
- Python 数据结构与算法 —— 链表
- Python 数据结构与算法 —— 哈弗曼树
- Python 数据结构与算法——选取算法(TopK)
- Python数据结构与算法
- PYTHON数据结构与算法
- python数据结构与算法
- 数据结构——邻接矩阵的最小生成树Kruskal算法
- 《大话数据结构》最小生成树——Kruskal算法
- 数据结构实践——Kruskal算法的验证
- Kruskal 算法-Python版
- 数据结构与C语言实现(十一)——图(下):最小生成树与Prim与Kruskal算法
- 《大话数据结构》之Kruskal算法
- python学习笔记(十一)——算法与数据结构基础(算法概述+查找算法)
- 28. Implement strStr()【E】【59】
- Linux常用基础命令
- zoj 1855 Google Map 分型递归
- UINavigationBar导航栏相关设置
- 常用的三方库
- Python 数据结构与算法 —— Kruskal 算法
- BAT、网易、蘑菇街面试题整理-5
- 33. Search in Rotated Sorted Array
- 机器学习:SVR支持向量机回归
- iOS滑动返回,左滑手势问题,蓝点问题
- 使用struts2实现上传下载功能(附代码)。类似于ftp服务器。不止局限于本机的上传下载,其他机器也可使用此功能,服务器似的功能
- Android 项目更改包名的方法
- Spring事务属性
- TextView文本数值保留一位小数,并显示递增动画(0~当前数值)