【发布时间】:2012-09-15 03:37:45
【问题描述】:
我正在寻找总共 N 的整数分区数,其中包含多个部分 S,最大部分正好是 X,但没有枚举所有部分。
例如:100的所有分区,10个部分,42个为最大部分。
我没有找到解决这个问题的定理或划分恒等式,我怀疑这是一个不容易从已知定理推导出来的重要问题(例如 Nijenhuis 和 Wilf 1978、Andrews 等人 2004、Bona 2006) :
例如:N 中恰好 S 部分的分区数等于 N 中恰好 S 为最大部分的分区数。
这个问题与我的研究有关,远远超出纯数学。
更新:下面回答了这个问题,但我想发布我用来实现它的 Python 脚本。我可能会推动它通过 Cython 以获得一些速度。
n = 100 # the total
s = 10 # number of parts
x = 20 # largest part
print Partitions(n,length=s,max_part=x).cardinality() # Sage is very slow at this
def parts_nsx(n,s,x):
if n==0 and s==0:return 1
if n<=0 or s<=0 or x<=0:return 0
if n>0 and s>0 and x>0:
_sum = 0
for i in range(0,s+1):
_sum += parts_nsx(n-i*x, s-i, x-1)
return _sum
print parts_nsx(n,s,x)
【问题讨论】:
标签: integer combinatorics number-theory