我正在寻找总共 N 的整数分区数,其中有多个部分 S,最大部分正好是 X,但没有枚举所有部分。
例如:所有 100 的分区有 10 个部分和 42 作为最大部分。
我没有找到解决这个问题的定理或划分恒等式,我怀疑这是一个不容易从已知定理推导出来的非平凡问题(例如 Nijenhuis 和 Wilf 1978,Andrews et al. 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)