从一组n个元素中取k个元素的乘积之和

时间:2011-11-14 07:57:09

标签: combinatorics dynamic-programming discrete-mathematics polynomial-math

给定具有S元素的n集和k整数。我需要找到所有n选择k对的产品总和。也就是说,如果是S = {1,2,3,4} and k = 2,那么我正在寻找P = 1*2 + 1*3 + 1*4 + 2*3 + 2*4 +3*4。请注意,产品对构成了集合 - 从一组k元素中获取n个不同的元素。我可以制定一个简单的动态编程版本:

P(n,k) = a_{n}P(n-1,k-1) + P(n-1,k)

也就是说,选择n-1元素并选择k-1并添加a_{n},同时省略a_{n}。是否有一些很好的理论可以找到解决上述问题的封闭式解决方案?我对高级数学有点缺乏,虽然编程让我很兴奋。我能够得出上述的DP,但无法进入一个我希望有的封闭形式!

2 个答案:

答案 0 :(得分:4)

我不知道它是否真的有用,但我发现你正在描述elementary symmetric polynomials

此外,本文似乎对您有用:

Computing Elementary Symmetric Polynomials with a Sub-Polynomial Number of Multiplications

答案 1 :(得分:0)

给定n,k,因为你已经定义了它们:

要求总和的产品数量#(n,k)由

给出

(n,k)= C(n + k-1,k-1),其中C(a,b)是组合函数,即

     a objects selected b at a time. 

此外,#(n,k)= k *#(n-1,k) - (n-1)*#(n,k-1)。