例 (または実際のユースケース) が NP-Complete と見なされるかどうかはわかりませんが、これが利用可能なアルゴリズムであると仮定して、以下を実行する最も Pythonic な方法について疑問に思っています。
あなたが持っているとしましょう:
class Person:
def __init__(self):
self.status='unknown'
def set(self,value):
if value:
self.status='happy'
else :
self.status='sad'
... blah . Maybe it's got their names or where they live or whatev.
人のグループを必要とするいくつかの操作。(重要な値は、人が幸せか悲しいかです。)
したがって、PersonA、PersonB、PersonC、PersonD が与えられた場合、悲しい人物と幸せな人物の可能な 2**4 の組み合わせのリストを完成させたいと思います。すなわち
[
[ PersonA.set(true), PersonB.set(true), PersonC.set(true), PersonD.set(true)],
[ PersonA.set(true), PersonB.set(true), PersonC.set(true), PersonD.set(false)],
[ PersonA.set(true), PersonB.set(true), PersonC.set(false), PersonD.set(true)],
[ PersonA.set(true), PersonB.set(true), PersonC.set(false), PersonD.set(false)],
etc..
これを行う良いPythonicの方法はありますか? 私はリスト内包表記について考えていました (そして、オブジェクトを呼び出して true と false の 2 つのオブジェクトが返されるようにオブジェクトを変更します) が、私が見た内包表記では、事前に人の数を知る必要があります。人数に関係なくやってみたいです。
編集 : これに対して実行する操作が、より大きな問題セットの一部であると仮定します。問題を解決するには、特定のセットの Person のすべての値をテストする必要があります。(つまり、これは現在NP完全に見えないことを知っています=))何かアイデアはありますか?
ありがとう!