【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )

简介: 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )

文章目录

一、使用生成函数求解不定方程解个数

1、带限制条件

2、带系数



参考博客 :


【组合数学】生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多项式系数相关 )

【组合数学】生成函数 ( 线性性质 | 乘积性质 )

【组合数学】生成函数 ( 移位性质 )

【组合数学】生成函数 ( 求和性质 )

【组合数学】生成函数 ( 换元性质 | 求导性质 | 积分性质 )

【组合数学】生成函数 ( 性质总结 | 重要的生成函数 ) ★

【组合数学】生成函数 ( 生成函数示例 | 给定通项公式求生成函数 | 给定生成函数求通项公式 )

【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )

【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )





一、使用生成函数求解不定方程解个数


不定方程的解个数 :


x 1 + x 2 + ⋯ + x k = r x_1 + x_2 + \cdots + x_k = rx

1


+x

2


+⋯+x

k


=r


x i x_ix

i


 为自然数 ;


之前通过组合对应的方法 , 已经解决 , 其解个数是 C ( k + r − 1 , r ) C(k + r - 1 , r)C(k+r−1,r)



不定方程解的个数 , 推导过程参考 : 【组合数学】排列组合 ( 多重集组合数 | 所有元素重复度大于组合数 | 多重集组合数 推导 1 分割线推导 | 多重集组合数 推导 2 不定方程非负整数解个数推导 ) 二、多重集组合 所有元素重复度大于组合数 推导 2 ( 不定方程非负整数解个数推导 )



上述情况下 , x i x_ix

i


 的取值都是没有上限的 , 如果 x i x_ix

i


 取值受限 , 如 x 1 x_1x

1


 取值必须满足 2 ≤ x 1 ≤ 5 2 \leq x_1 \leq 52≤x

1


≤5 条件时 , 就不能使用上述公式进行计算 , 这里需要 使用到生成函数求解 ;





1、带限制条件


x 1 + x 2 + ⋯ + x k = r x_1 + x_2 + \cdots + x_k = rx

1


+x

2


+⋯+x

k


=r


如果 x i x_ix

i


 取值受到约束 , l i ≤ x i ≤ n i l_i \leq x_i \leq n_il

i


≤x

i


≤n

i


 , 则对应的 生成函数项的 y yy 次幂值从 l i l_il

i


 到 n i n_in

i


 ;


对应的生成函数项是 y l i + y l i + 1 + ⋯ + y n i y^{l_i} + y^{l_i + 1} + \cdots + y^{n_i}y

l

i


+y

l

i


+1

+⋯+y

n

i




完整的生成函数是 :


G ( y ) = ( y l 1 + y l 1 + 1 + ⋯ + y n 1 ) ( y l 2 + y l 2 + 1 + ⋯ + y n 2 ) ⋯ ( y l k + y l k + 1 + ⋯ + y n k ) G(y) = ( y^{l_1} + y^{l_1+1} + \cdots + y^{n_1} )( y^{l_2} + y^{l_2+1} + \cdots + y^{n_2} ) \cdots ( y^{l_k} + y^{l_k+1} + \cdots + y^{n_k} )G(y)=(y

l

1


+y

l

1


+1

+⋯+y

n

1


)(y

l

2


+y

l

2


+1

+⋯+y

n

2


)⋯(y

l

k


+y

l

k


+1

+⋯+y

n

k


)



将上述生成函数结果乘出来 , y r y^ry

r

 前的系数 , 就是不定方程 的解的个数 ;




2、带系数


p 1 x 1 + p 2 x 2 + ⋯ + p k x k = r p_1x_1 + p_2x_2 + \cdots + p_kx_k = rp

1


x

1


+p

2


x

2


+⋯+p

k


x

k


=r


x i ∈ N x_i \in Nx

i


∈N , 非负整数解 , 对 x i x_ix

i


 不设置上限 ;



带系数的函数非负整数解 , 生成函数的项的基本的 底是 y p i y^{p_i}y

p

i


 , 幂的取值范围是 0 , 1 , 2 , ⋯ 0 , 1, 2, \cdots0,1,2,⋯ ,


每个生成函数项是 ( y p i ) 0 + ( y p i ) 1 + ( y p i ) 2 + ( y p i ) 3 + ⋯ (y^{p_i})^0 + (y^{p_i})^1 + (y^{p_i})^2 + (y^{p_i})^3 + \cdots(y

p

i


)

0

+(y

p

i


)

1

+(y

p

i


)

2

+(y

p

i


)

3

+⋯ ,


化简后的项是 1 + y p i + y 2 p i + y 3 p i + ⋯ 1 +y^{p_i} + y^{2p_i} + y^{3p_i} + \cdots1+y

p

i


+y

2p

i


+y

3p

i


+⋯



将所有的 k kk 项相乘 , 就是对应的生成函数 :


G ( y ) = ( 1 + y p 1 + y 2 p 1 + y 3 p 1 + ⋯ ) ( 1 + y p 2 + y 2 p 2 + y 3 p 2 + ⋯ ) ⋯ ( 1 + y p k + y 2 p k + y 3 p k + ⋯ ) G(y)=(1+y^{p_1} + y^{2p_1} + y^{3p_1 + \cdots})(1+y^{p_2} + y^{2p_2} + y^{3p_2 + \cdots}) \cdots (1+y^{p_k} + y^{2p_k} + y^{3p_k + \cdots})G(y)=(1+y

p

1


+y

2p

1


+y

3p

1


+⋯

)(1+y

p

2


+y

2p

2


+y

3p

2


+⋯

)⋯(1+y

p

k


+y

2p

k


+y

3p

k


+⋯

)



该方程的非负整数解个数是 y r y^ry

r

 前的系数 ;


目录
相关文章
|
SQL 存储 缓存
Paimon与Spark
Paimon与Spark
701 1
|
存储 JSON 小程序
【小程序云开发】不用后端也能构建完整的微信小程序
本文介绍了如何从零开始学习和掌握微信小程序云开发,包括云函数、云数据库和HTTP触发等重要概念。通过详细的步骤和示例,读者将学会如何创建和部署云函数,以及如何使用云数据库来存储和管理小程序的数据。同时,本文还介绍了如何通过HTTP触发器实现小程序与外部API的数据交互,从而为小程序开发提供更灵活、高效的后端解决方案。无论您是初学者还是有一定经验的开发者,本文都将帮助您轻松掌握微信小程序云开发,并为您的小程序开发项目提供更多可能性。
2839 0
|
搜索推荐 API 数据安全/隐私保护
探讨淘宝商品 API 接口:运用及收益
淘宝商品API接口为开发者和企业提供了一种强大的工具,能够高效获取和利用淘宝平台上的商品数据,涵盖名称、价格、描述、图片等。该接口具有丰富的数据资源、实时性、灵活性和高安全性,广泛应用于电商平台建设、价格比较、数据分析和移动应用开发等领域,为企业带来提高效率、降低成本、增加收入和提升用户体验等多方面收益。
254 4
对接声网rtc-restful-api
对接声网rtc-restful-api
152 1
|
Java 应用服务中间件 Apache
Servlet概述及接口
Servlet概述及接口
222 0
|
存储 SQL 运维
好的数据模型最终都为业务而生
数智·泛零售」04课,奇点云高级数据模型架构专家天启结合实践经验分享《泛零售数据中台实施之模型设计》。
1831 0
好的数据模型最终都为业务而生
|
分布式数据库 Hbase
Ambari部署HBase
Ambari部署HBase
219 0
Ambari部署HBase
|
设计模式 Java
浅谈JAVA设计模式之——装饰模式(Decorator)
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
267 0
浅谈JAVA设计模式之——装饰模式(Decorator)
|
安全 Linux 测试技术
Linux之rm -rf 安全删除
新建自定义删除脚本:vim /usr/bin/safe_remove !/bin/bash TRASH_DIR="/tmp/user/${USER}/.trash"mkdir -p $TRASH_DIR RMPATH="" 遍历rm命令参数(e.
2728 0
|
Java Kotlin
Kotlin伴生对象与静态成员
一、解释 每个类可以对应一个伴生对象 伴生对象的成员全局独一份 伴生对象的成员类似于Java的静态成员 二、Java中 调用kotlin类的方法需要加上 @JvmStatic 调用kotlin类的成员变量需要加上 @JvmField 三、形如java.
1350 0