码迷,mamicode.com
首页 > 编程语言 > 详细

不相交集python实现

时间:2014-07-20 10:14:09      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:不相交集   并查集   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实现

标签:不相交集   并查集   python   数据结构   

原文地址:http://blog.csdn.net/u011608357/article/details/37966199

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!