我在Python中实现了一个不相交集合系统,但是我碰到了一堵墙。我为系统使用树实现,并为系统实现Find(),Merge()和Create()函数。Python中的不相交集森林替代实现
我正在实施排名系统和路径压缩以提高效率。
美中不足的是,这些功能必须采取一套独立集合作为参数,使得遍历硬盘。
class Node(object):
def __init__(self, value):
self.parent = self
self.value = value
self.rank = 0
def Create(values):
l = [Node(value) for value in values]
return l
Create函数接受值列表并返回包含适当数据的单数节点列表。
我想合并功能将类似于此,
def Merge(set, value1, value2):
value1Root = Find(set, value1)
value2Root = Find(set, value2)
if value1Root == value2Root:
return
if value1Root.rank < value2Root.rank:
value1Root.parent = value2Root
elif value1Root.rank > value2Root.rank:
value2Root.parent = value1Root
else:
value2Root.parent = value1Root
value1Root.rank += 1
,但我不知道如何,因为它需要采取节点和一个列表执行查找()函数值(不只是一个节点)作为参数。查找(集合,值)将是原型。
我明白如何实现路径压缩当一个节点为例进行查找(x)的参数,但这种方法是扔我。
任何帮助将不胜感激。谢谢。
编辑澄清。
谢谢。我知道这个实现应该如何处理作为参数传递的节点,然而,这个实现需要这些参数是被搜索和合并的值。 – 2012-02-28 19:59:19