ufx是一个纯python库,它实现了允许union-find操作的不相交集数据结构。
UFx的Python项目详细描述
ufx是一个纯python库,它实现了disjoint-set data structure 允许联合查找操作。
提出了两种实现方案。 Java内容
- uf_hash使用python字典
- uf_tree使用链接到每个anstror的节点
这些实现是为散列类型设计的。不管怎样 可以使用^{tt2}中存在的UFNode类$ 使用非哈希类型的实现(请参阅api文档部分 下面)。
ufx仅用python 2.7、python 3.5和pypypy测试,但可能 使用其他版本的python虚拟机。
性能
uf_hash实现是推荐的。它表现得很好 使用经典的python虚拟机。uf_tree实现 很慢,因为python的指针式性能很差 基于数据结构。使用另一个python虚拟机 pypy建议在使用uf_tree实现时使用它。
todo:计算速度和内存消耗表
API文档
导入
可以导入不相交集数据的一个实现 结构
from ufx import uf_tree as ufx
或
from ufx import uf_hash as ufx
快速示例
import sys import random uf = ufx.UnionFind() az = "abcdefghijklmnopqrstuvwxyz" az += az.upper() for e in az: uf.make_set(e) i = 0 while i < 26: i += 1 uf.union(random.choice(az), random.choice(az)) print(uf) print(uf.get_size('a')) uf.clear() print(uf)
散列类型
待办事项
非哈希类型
看看这个类UFNode