この操作の名前はありますか?そして:閉じた形の表現はありますか?
- n個の要素の特定のセット、および1とnの間の値kに対して、
- k個のアイテムのすべてのサブセット(組み合わせ)を取得します
- 各サブセットの製品を見つける
- それらすべての製品の合計を見つける
これはPythonで表現でき、計算は非常に簡単です。
from operator import mul
from itertools import combinations
from functools import reduce
def sum_of_product_of_subsets(list1, k):
val = 0
for subset in combinations(list1, k):
val += reduce(mul, subset)
return val
セットサイズが大きくなった場合にループを回避するために、閉じた形の式を探しています。
これはこの質問と同じではないことに注意してください。各グループの1つの要素を含むすべての組み合わせの積の合計-この質問は、デカルト積の積の合計に関するものです。サイズkの組み合わせのセットの積の合計を探しています。同じではないと思います。
明確にするために、set(a、b、c、d)の場合、次のようになります。
k = 4 --> a*b*c*d
k = 3 --> b*c*d + a*c*d + a*b*d + a*b*c
k = 2 --> a*b + a*c + a*d + b*c + b*d + c*d
k = 1 --> a + b + c + d
ただ表現を探しています。Pythonコードを具体的に提供する必要はありません。(実装例を提供したい場合は、どの言語でも説明できます。)