繁体   English   中英

我如何从python中的任意集制作功率集?

[英]How do I make a powerset from an arbitrary set in python?

今天,我有一个实验室,准备从任意大小的电源制造电源组,但是我似乎没有想到最佳的制作方法。 班上没有人做过Python。 只做java

itertools有一个配方:

def powerset(iterable):
    "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
    s = list(iterable)
    return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))

洞察力是,对于幂集中的每个集合S,原始集合的给定成员要么在S中,要么不在。 由于这是一个二进制决策,因此对于原始集中的每个其他元素,powerset都会加倍。

powerset({a}) = {{}, {a}}

powerset({a,b}) = {{}, {a}, {b}, {a,b}}

powerset({a,b,c}) = union(
                       powerset({a,b}),
                       union({c}, X) where X in powerset({a,b})
                    )

这就导致了一种不错的递归算法,只要任意值不太大,该算法就可用于“任意大小”集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM