Сумма-из-Произведения подмножеств

У этой операции есть название? А:существует ли выражение в закрытой-форме?

  • Для данного набора из n элементов и значения k между 1 и n,
  • Возьмем все подмножества (комбинации)из 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

Я просто ищу выражение в закрытой форме, чтобы избежать цикла в случае, если размер набора становится большим.

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

9
задан Community 23 May 2017 в 12:25
поделиться