这个操作有名字吗?而且:有一个封闭形式的表达吗?
我可以在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
Run Code Online (Sandbox Code Playgroud)
我只是在寻找封闭的表单表达式,以便在设置大小变大时避免循环.
请注意,这与此问题不同:产品与所有组合的总和与每个组中的一个元素 - 该问题是关于笛卡尔积的乘积和.我正在寻找大小为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 …Run Code Online (Sandbox Code Playgroud)