作业帮 > 综合 > 作业

一道有关排列组合的问题(求正整数s分成n个正整数的方法数)

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/12 07:47:27
一道有关排列组合的问题(求正整数s分成n个正整数的方法数)
首先,对于不定方程
x(1)+x(2)+...+x(n)=s (s>=n>=1)
的正整数解的个数为 C(s-1,n-1)=C(s-1,s-n) 种
但是,如果规定x(1)
你的两个问题在数学界早有人探索过了.叫做拆分数问题.是组合数学研究的课题.
你的第一个问题等价于将整数s拆分为n个正整数的拆分数.关于这个问题有几个定理:
1.将整数r拆分为k个正整数的拆分数,等价于将r拆分为最大数为k的拆分数.证明略,你有兴趣可以去搜索下费勒斯图像.
2.将整数r拆分为重复度不超过k的拆分数,等价于将r拆分为不能被k+1整除的拆分数.可以用母函数证明.
所以你的第一个问题可以等价成将s拆分为最大数为n的拆分数,或者将s-n拆分为最大数不超过n的拆分数.
关于该拆分数的编程上的计算方法目前有很多,但是据我所知,在数学上目前还没有公式可以表示.递推公式也没有.
你的第二个问题中的k很容易求,这个k叫做一般拆分数,记做p,例如p(5)=7.
有如下递推关系:
p(n)=p(n-1)+p(n-2)-p(n-5)-p(n-7)+...+(-1)^(m-1)*p(n-1/2*m(3m+或-1)),这个也可以用母函数证明.一句多余的话,母函数是组合数学中的重要工具.
还有关于拆分数的穷举,在数学上也没有有效的办法,还是需要借助计算机.
如果你希望获得关于拆分数穷举的程序或者算法,可以再联系我.本人是学计算机的.