簡體   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