【问题标题】:Some questions regarding implementing Disjoint Set data structure in python关于在python中实现不相交集数据结构的一些问题
【发布时间】:2014-12-23 13:31:42
【问题描述】:

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

首先,iter方法是什么意思或做什么?

其次,假设我原来有以下代码:

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

那么,我怎样才能执行打印、添加等集合的常规操作呢?如果我写 print R,它只会在 0x000000000A31F048> 处给出 ma​​in.UnionFind 实例,这显然不是我想要的。如果我写 R.add('K') (将新元素 'K' 添加到集合 R),我会得到 'AttributeError: UnionFind instance has no attribute 'add''。这是否意味着我需要为“添加”定义一个属性?如何做到这一点?

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

谢谢

【问题讨论】:

    标签: python function class set disjoint-sets


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

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

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

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

    结果将是:[456, 123]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多