У этой операции есть название? А:существует ли выражение в закрытой-форме?
Я могу выразить это на 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
Я просто ищу выражение в закрытой форме, чтобы избежать цикла в случае, если размер набора становится большим.
Обратите внимание, что это НЕ то же самое, что этот вопрос:Сумма произведений по всем комбинациям с одним элементом из каждой группы--этот вопрос касается суммы-произведений-декартова произведения. Я ищу сумму-произведений-множества комбинаций размера k; Я не думаю, что они одинаковы.
Для ясности, для набора(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. (Любой язык будет иллюстративным, если вы хотите предоставить пример реализации.)