相关疑难解决方法(0)

子集的乘积和

这个操作有名字吗?而且:有一个封闭形式的表达吗?

  • 对于给定的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
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)

algorithm combinatorics

9
推荐指数
2
解决办法
5055
查看次数

标签 统计

algorithm ×1

combinatorics ×1