不定方程非负整数解个数

问题

先从一个问题引入:假如一个湖里有4种鱼,而我总共钓上来了10条鱼,请问鱼的组合共有多少种可能?(注意这个问题里某种鱼的条数可以为0)

更一般地,我们可以假设有r r种鱼,且一共钓到了n条,那可能的结果数就是满足:

x1+x2++xr=n x 1 + x 2 + ⋯ + x r = n

的非负整数向量 (x1,x2,,xr) ( x 1 , x 2 , ⋯ , x r )的个数。生活中经常会碰到类似的问题,所以就称呼为“不定方程非负整数解个数”问题。

解法

要计算非负整数向量的个数,我们可以先考虑整数向量(x1,x2,,xr) ( x 1 , x 2 , ⋯ , x r )的个数。我们假设有n个连续的数值1排成一行:

11111 1 1 1 ⋯ 1 1

注意,总共有n-1个间隔,我们需要将r-1个加号放到这些间隔中。例如,如果 n=8,r=3 n = 8 , r = 3,那么选择
1+1111+111 1 + 1 1 1 1 + 1 1 1

对应解 x1=1,x2=4,x3=3 x 1 = 1 , x 2 = 4 , x 3 = 3

结论1

共有Cr1n1 C n − 1 r − 1个不同的正整数向量(x1,x2,,xr) ( x 1 , x 2 , ⋯ , x r )满足

x1+x2++xr=n xi>0,i=1,,r x 1 + x 2 + ⋯ + x r = n   x i > 0 , i = 1 , ⋯ , r

为了得到非负整数解(而不是正整数解)的个数,注意,x1+x2++xr=n x 1 + x 2 + ⋯ + x r = n的非负整数解个数与y1+y2++yr=n+r y 1 + y 2 + ⋯ + y r = n + r的正整数解个数是相同的(令yi=xi+1,i=1,,r y i = x i + 1 , i = 1 , ⋯ , r)。因此得到结论2

结论2

共有Cr1n+r1 C n + r − 1 r − 1个不同的非负整数向量(x1,x2,,xr) ( x 1 , x 2 , ⋯ , x r )满足

x1+x2++xr=n x 1 + x 2 + ⋯ + x r = n

所以回到最开始的问题,总共有C310+41=C313=286 C 10 + 4 − 1 3 = C 13 3 = 286中可能的情况


版权声明:本文为u012074597原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。