首页 > 代码库 > 不相交集python实现
不相交集python实现
1.不相交集是解决等价关系的一种数据结构,执行合并和查找的速度都非常快,M次运行合并和查找的运行时间为(M*logN)。
在一个集合中,对于每一对元素(a,b),a,b∈S,对于关系R如果满足下面三个条件,则成关系R为等价关系:
(1)自反性 对于所有a∈S,aRa
(2)对称性 aRb当且仅当bRa
(3)传递性 若aRb且bRc,则aRc
有关不相交集的介绍和C语言实现,点此查看
本文介绍的是不相交集的find和union操作的python实现:
def init(a): for i in range(0,110): a.append(-1); def unionset(root1,root2): #按照大小求并 tmp=a[root1]+a[root2]; if a[root1]<=a[root2]: a[root2]=root1; a[root1]=tmp; else : a[root1]=root2; a[root2]=tmp; def unions(root1,root2): #按照高度求并 if a[root1]>a[root2]: a[root1]=root2; else: if a[root1] is a[root2]: #只有在高度相同的时候才进行合并 a[root1]=a[root1]-1; a[root2]=root1; def find(a,x): if a[x]<=-1: return x; else : return find(a,a[x]); a=[]; #测试代码 init(a); unionset(1,2); #按大小求并 unionset(3,4); unions(5,6); # 按高度求并 unions(5,7); print find(a,2); unionset(1,3); print find(a,4); print find(a,5); print find(a,7);
不相交集python实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。