关于在python中实现Disjoint Set数据结构的一些问题

时间:2014-12-23 13:31:42

标签: python function class set disjoint-sets

所以我只使用了这里提供的代码:http://www.ics.uci.edu/~eppstein/PADS/UnionFind.py,但我遇到了一些关于代码的问题:

首先, iter 方法的含义是什么?

其次,假设我最初有以下代码:

set R=set(['A','B','C','D','E','F','G'])
R=UnionFind()

然后,我如何执行打印,添加等设置的常规操作?如果我写print R,它只给出< main .UnionFind实例在0x000000000A31F048>,这显然不是我想要的。如果我写R.add('K')(将新元素'K'添加到集合R),我得到'AttributeError:UnionFind实例没有属性'add''。这是否意味着我需要为'add'定义一个属性?怎么做?

如果经过几次联合操作后,我将'A','B','C'分组到同一组,那么如果我想知道集合中所有'A'所在的元素(即' A','B','C'),我该怎么办?

感谢

1 个答案:

答案 0 :(得分:1)

  1. iter函数返回给定对象的迭代器。在这种情况下,self.parents的迭代器是dict,因此结果将是字典键上的迭代器。

  2. 鉴于该代码,我能想到的唯一回应是SyntaxError

  3. 以下是使用UnionFind()类的方法:

    union_find = UnionFind()
    a = 123
    b = 456
    c = 123
    union_find.union(a, b, c)
    
    print list(union_find)
    

    结果将是:[456, 123]