前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【组合数学】不定方程解个数问题 ( 多重集r组合数 | 不定方程非负整数解个数 | 生成函数展开式中 r 次幂系数 | 给定范围/系数 情况下不定方程整数解个数 )

【组合数学】不定方程解个数问题 ( 多重集r组合数 | 不定方程非负整数解个数 | 生成函数展开式中 r 次幂系数 | 给定范围/系数 情况下不定方程整数解个数 )

作者头像
韩曙亮
发布2023-03-27 16:22:11
8660
发布2023-03-27 16:22:11
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

多重集 r 组合数 生成函数计算方法

此处引入 不定方程的解 和 生成函数系数问题 , 帮助解决问题 ;

以下三个值是等价的 :

① 多重集

S = \{n_1 \cdot a_1 , n_2 \cdot a_2 , \cdots , n_k \cdot a_k \}

r-

组合数

② 不定方程

x_1 + x_2 + \cdots + x_k = r (x_i \leq n_i)

的非负整数解个数 ;

③ 生成函数

G(y) = (1+y+y^2 + \cdots + y^{n_1}) (1+y+y^2 + \cdots + y^{n_2})\cdots (1+y+y^2 + \cdots + y^{n_k})

展开后

y^r

的系数 ;

生成函数中

y

的幂从

0

n_i

,

1

y^0

;

x_i

对应的是多重集中的 , 指定某元素

a_i

的个数 ;


多重集 r 组合数题目

题目 : 计算

S=\{3 \cdot a , 4 \cdot b , 5 \cdot c\}

的 10-组合数 ;

分析 : 以下 三个 数 是等价的 ;

  • 1>多重集
S=\{3 \cdot a , 4 \cdot b , 5 \cdot c\}

10-

组合数 ;

  • 2>
  • 3>生成函数
G(y) = (y^0 + y^1 + y^2 + y^3) (y^0 + y^1 + y^2 + y^3 + y^4) (y^0 + y^1 + y^2 + y^3 + y^4 + y^5)

展开式中的

y^{10}

的系数 ;

解 :

① 展开上述生成函数 :

G(y) = (y^0 + y^1 + y^2 + y^3) (y^0 + y^1 + y^2 + y^3 + y^4) (y^0 + y^1 + y^2 + y^3 + y^4 + y^5)

② 其中

y^0 = 1

,

y^1 =y

, 替换 :

= (1 + y + y^2 + y^3) (1 + y + y^2 + y^3 + y^4) (1 + y + y^2 + y^3 + y^4 + y^5)

③ 先将前两项

(1 + y + y^2 + y^3) (1 + y + y^2 + y^3 + y^4)

计算出来 :

(1 + y + y^2 + y^3) (1 + y + y^2 + y^3 + y^4)
=1 + y + y^2 + y^3 + y^4 + y(1 + y + y^2 + y^3 + y^4) + y^2(1 + y + y^2 + y^3 + y^4) + y^3(1 + y + y^2 + y^3 + y^4)
=1+2y + 3y^2 + 4y^3 + 4y^4 + 3y^5 + 2y^6 + y^7

④ 将 ③ 结果代入到 ② 中 :

G(y) = (1+2y + 3y^2 + 4y^3 + 4y^4 + 3y^5 + 2y^6 + y^7) (1 + y + y^2 + y^3 + y^4 + y^5)

⑤ 上式全部展开没有意义 , 这里我们只统计 y^10 的组合 :

  • 1> 其中
3y^5

y^5

可以乘出一个

3y^{10}
  • 2> 其中
2y^6

y^4

可以乘出一个

2y^{10}
  • 3> 其中
y^7

y^4

可以乘出一个

y^{10}

⑥ 最终结果相加 :

y^{10}

前的系数为 6 ;


不定方程解个数 x 取值范围为 ( 0 ~ n )

该情况下 值 与 多重集 的组

r-

组合数是等价的 ; 此时的多重集中每个元素的个数 是限定在

0

到 某个数

n

之间的 ;

这是是之前的多重集排列公式无法计算的情况 , 此处使用生成函数可以统计 多重集 的

r-

组合数 ;

以下三个值是等价的 :

① 不定方程

x_1 + x_2 + \cdots + x_k = r (x_i \leq n_i)

的解个数 ;

② 多重集

S = \{n_1 \cdot a_1 , n_2 \cdot a_2 , \cdots , n_k \cdot a_k \}

r-

组合数

③ 生成函数

G(y) = (1+y+y^2 + \cdots + y^{n_1}) (1+y+y^2 + \cdots + y^{n_2})\cdots (1+y+y^2 + \cdots + y^{n_k})

展开后

y^r

的系数 ;

生成函数中

y

的幂从

0

n_i

,

1

y^0

;

x_i

对应的是多重集中的 , 指定某元素

a_i

的个数 ;


不定方程解个数 x 取值范围为 自然数 ( 0 ~ ∞ ) 符合多重集组合公式计算情况

该情况下 值 与 多重集 的组

r-

组合数是等价的 ; 此时的多重集中每个元素的个数 是无限的 或者 大于 等于

r

;

该情况下的多重集组合问题 , 可以使用组合公式 , 多重集 的

r-

组合 , 其有

k

种元素 每种个数大于等于

r

或 无限 ; 使用公式

C(r + k - 1, r)

以下三个值是等价的 :

① 不定方程

x_1 + x_2 + \cdots + x_k = r ( 0 \leq x_i)

的解个数 ;

② 多重集

S = \{\infty \cdot a_1 , \infty \cdot a_2 , \cdots , \infty \cdot a_k \}

r-

组合数

③ 生成函数

G(y) = (1+y+y^2 + \cdots )^k

展开后

y^r

的系数 ;

生成函数中

y

的幂从

0

n_i

,

1

y^0

;

x_i

对应的是多重集中的 , 指定某元素

a_i

的个数 ;


不定方程解个数 x 取值范围 ( 给定一个范围 )

该情况下 多重集的组合 问题就该退出舞台了 , 只剩下 不定方程解 和 生成函数的系数 了 ,

x_i

的取值有可能是负的 ;

以下两个值是等价的 :

① 不定方程

x_1 + x_2 + \cdots + x_k = r ( l_i \leq x_i \leq n_j)

的解个数 ;

② 生成函数

G(y) = (y^{l_1} + \cdots + y^{n_1})(y^{l_2} + \cdots + y^{n_2})\cdots(y^{l_k} + \cdots + y^{n_k})

展开后

y^r

的系数 ;

③ 多重集问题在这里就不太适用了 ,

x

取值有可能是负数 ;

生成函数中

y

的幂从

i

j

;


不定方程解个数 x 取值范围 ( 给定一个范围 并带系数 )

以下两个值是等价的 :

① 不定方程

p_1x_1 + p_2x_2 + \cdots + p_kx_k = r ( l_i \leq x_i \leq n_j)

的解个数 ;

② 生成函数

G(y) = ((y^p_1)^{l_1} + \cdots + (y^p_1)^{n_1})((y^p_2)^{l_2} + \cdots + (y^p_2)^{n_2})\cdots((y^p_k)^{l_k} + \cdots + (y^p_k)^{n_k})

展开后

y^r

的系数 ;

③ 多重集问题在这里就不太适用了 ,

x

取值有可能是负数 ;

注意不定方程带系数的情况下 , 生成函数中需要使用

y^{系数}

替代

y

, 生成函数中

y^{系数}

的幂从

i

j

;


不定方程解的题目 带限制的情况

题目 : 求方程

x_1 + x_2 + x_3 + x_4 = 15

的整数解个数 , 其中

x_1 \geq 1 , x_2 \geq 2 , x_3 \geq 4 , x_4 \geq 4

;

分析 :

  • 1>不要直接求解 : 直接列出生成函数 , 就将问题复杂化了 ;
  • 2> 换元转化 : 这里可以将其转为 非负整数解的个数来计算 ;
  • 3> 多重集组合数 : 此时就等价于 多重集
S = \{\infty \cdot a_1 , \infty \cdot a_2 , \cdots , \infty \cdot a_k \}

r-

组合数 , 使用 多重集组合数公式

C(r + k - 1, r)

计算 ;

解 :

① 换元准备 :

  • 1> 令
y_1 = x_1 - 1

, 此时

y_1

的取值范围是

N

( 自然数 ) ;

  • 2> 令
y_2 = x_2 - 2

, 此时

y_2

的取值范围是

N

( 自然数 ) ;

  • 3> 令
y_3 = x_3 - 4

, 此时

y_3

的取值范围是

N

( 自然数 ) ;

  • 4> 令
y_4 = x_4 - 4

, 此时

y_4

的取值范围是

N

( 自然数 ) ;

② 换元过程 :

  • 1> 使用
y_1 + 1

替换

x_1

;

  • 2> 使用
y_2 + 2

替换

x_2

;

  • 3> 使用
y_3 + 4

替换

x_3

;

  • 4> 使用
y_4 + 4

替换

x_4

;

x_1 + x_2 + x_3 + x_4 = 15
(y_1 + 1) + (y_2 + 2) + (y_3 + 4) + (y_4 + 4) = 15
y_1 + y_2 + y_3+y_4 + 11 = 15
y_1 + y_2 + y_3+y_4 = 4

③ 求

y_1 + y_2 + y_3+y_4 = 4

(

y_i

是自然数 ) , 非负整数解个数 ; 相当于求

S = \{\infty \cdot a_1 , \infty \cdot a_2 , \infty \cdot a_3, \infty \cdot a_4 \}

4-

组合数 , 根据公式

C(r + k - 1 , r)

计算 :

C(4 + 4 - 1 , 4) = C(7,4) = \dbinom{7}{4} = \cfrac{7!}{(7-4)!4!} = \cfrac{7 \times 6 \times 5 \times 4 \times 3 \times 2 \times 1}{4 \times 3 \times 2 \times 1 \times 3 \times 2 \times 1} = 35

解这 整数解 个数的问题 : ① 如果

x_i

的取值范围是 自然数 或 可以转化成 自然数的 , 那就用 多重集 组合公式计算 ; ② 如果

x_i

的取值范围是一个闭区间 , 直接生成函数 展开 , 计算

y^r

的系数是多少 , 该系数就是整数解个数 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
    • 多重集 r 组合数 生成函数计算方法
      • 多重集 r 组合数题目
        • 不定方程解个数 x 取值范围为 ( 0 ~ n )
          • 不定方程解个数 x 取值范围为 自然数 ( 0 ~ ∞ ) 符合多重集组合公式计算情况
            • 不定方程解个数 x 取值范围 ( 给定一个范围 )
              • 不定方程解个数 x 取值范围 ( 给定一个范围 并带系数 )
                • 不定方程解的题目 带限制的情况
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档