文章目录

  • 一、正整数拆分
  • 二、无序拆分
    • 1、无序拆分 不允许重复
    • 2、无序拆分 允许重复

参考博客 :

  • 【组合数学】生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多项式系数相关 )
  • 【组合数学】生成函数 ( 线性性质 | 乘积性质 )
  • 【组合数学】生成函数 ( 移位性质 )
  • 【组合数学】生成函数 ( 求和性质 )
  • 【组合数学】生成函数 ( 换元性质 | 求导性质 | 积分性质 )
  • 【组合数学】生成函数 ( 性质总结 | 重要的生成函数 ) ★
  • 【组合数学】生成函数 ( 生成函数示例 | 给定通项公式求生成函数 | 给定生成函数求通项公式 )
  • 【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )
  • 【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )
  • 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )
  • 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 )
  • 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 2 | 扩展到整数解 )

一、正整数拆分


正整数拆分 涉及内容 :

  • 拆分定义与分类
  • 无序拆分
  • 有序拆分

一个正整数可以 拆分成若干正整数 的和 , 每种不同的拆分方法 , 就可以 看做一个方案 ;

按照拆分顺序进行分类 : 444 拆分成 111 和 333 , 444 拆分成 333 和 111 ;

  • 有序拆分 : 上述 222 个 正整数拆分 , 是 两种不同的拆分方法 ;
  • 无序拆分 : 上述 222 个 正整数拆分 , 是 同一种拆分方法 ;

按照是否重复进行分类 :

  • 允许重复 : 拆分时 , 允许拆分成若干个重复的正整数 , 如 333 拆分成 333 个 111 ;
  • 不允许重复 : 拆分时 , 拆分的正整数 不允许重复 , 如 333 拆分成 333 个 111 是错误的 , 只能拆分成 1,21,21,2 ;

正整数拆分可以按照性质 , 分为 444 类 ;

  • 有序重复
  • 有序不重复
  • 无序重复
  • 无序不重复

二、无序拆分


无序拆分基本模型 :

将 正整数 NNN 无序拆分成正整数 , a1,a2,⋯,ana_1, a_2, \cdots , a_na1​,a2​,⋯,an​ 是拆分后的 nnn 个数 ,

该拆分是无序的 , 上述拆分的 nnn 个数的个数可能是不一样的 ,

假设 a1a_1a1​ 有 x1x_1x1​ 个 , a2a_2a2​ 有 x2x_2x2​ 个 , ⋯\cdots⋯ , ana_nan​ 有 xnx_nxn​ 个 , 那么有如下方程 :

a1x1+a2x2+⋯+anxn=Na_1x_1 + a_2x_2 + \cdots + a_nx_n = Na1​x1​+a2​x2​+⋯+an​xn​=N

这种形式可以使用 不定方程非负整数解个数 的生成函数计算 , 是 带系数 , 带限制条件的情况 , 参考 : 组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )

无序拆分的情况下 , 拆分后的正整数 , 允许重复 和 不允许重复 , 是两类组合问题 ;

如果不允许重复 , 那么这些 xix_ixi​ 的取值 , 只能 取值 0,10, 10,1 ; 相当于 带限制条件 , 带系数 的 不定方程非负整数解 的情况 ;

如果 允许重复 , 那么这些 xix_ixi​ 的取值 , 就是 自然数 ; 相当于 带系数 的 不定方程非负整数解 的情况 ;

1、无序拆分 不允许重复

讨论 无序拆分 , 不允许重复的情况 , 该方式 等价于 带限制条件 , 带系数 的 不定方程非负整数解 的情况 ;

a1a_1a1​ 项对应的生成函数项 , x1x_1x1​ 取值 0,10,10,1 , 则对应的生成函数项是 (ya1)0+(ya1)1=1+ya1(y^{a_1})^{0} + (y^{a_1})^{1}= 1+ y^{a_1}(ya1​)0+(ya1​)1=1+ya1​

a2a_2a2​ 项对应的生成函数项 , x2x_2x2​ 取值 0,10,10,1 , 则对应的生成函数项是 (ya2)0+(ya2)1=1+ya2(y^{a_2})^{0} + (y^{a_2})^{1}= 1+ y^{a_2}(ya2​)0+(ya2​)1=1+ya2​

⋮\vdots⋮

ana_nan​ 项对应的生成函数项 , xnx_nxn​ 取值 0,10,10,1 , 则对应的生成函数项是 (yan)0+(yan)1=1+yan(y^{a_n})^{0} + (y^{a_n})^{1}= 1+ y^{a_n}(yan​)0+(yan​)1=1+yan​

将上述生成函数项相乘 , 则可得到完整生成函数 :

G(x)=(1+ya1)(1+ya2)⋯(1+yan)G(x) = (1+ y^{a_1}) (1+ y^{a_2}) \cdots (1+ y^{a_n})G(x)=(1+ya1​)(1+ya2​)⋯(1+yan​)

将上述生成函数写好之后 , 计算 展开 , yyy 的 NNN 次幂的系数 , 就是 正整数 NNN 的拆分方案数 ;

2、无序拆分 允许重复

讨论 无序拆分 , 允许重复的情况 , 该方式 等价于 不带限制条件 , 带系数 的 不定方程非负整数解 的情况 ;

a1a_1a1​ 项对应的生成函数项 , x1x_1x1​ 取值 0,1,⋯0,1, \cdots0,1,⋯ , 则对应的生成函数项是 (ya1)0+(ya1)1+(ya1)2=1+ya1+y2a1⋯(y^{a_1})^{0} + (y^{a_1})^{1} + (y^{a_1})^{2}= 1+ y^{a_1} + y^{2a_1}\cdots(ya1​)0+(ya1​)1+(ya1​)2=1+ya1​+y2a1​⋯

a2a_2a2​ 项对应的生成函数项 , x2x_2x2​ 取值 0,1,⋯0,1, \cdots0,1,⋯ , 则对应的生成函数项是 (ya2)0+(ya2)1+(ya2)2=1+ya2+y2a2⋯(y^{a_2})^{0} + (y^{a_2})^{1} + (y^{a_2})^{2}= 1+ y^{a_2} + y^{2a_2}\cdots(ya2​)0+(ya2​)1+(ya2​)2=1+ya2​+y2a2​⋯

⋮\vdots⋮

ana_nan​ 项对应的生成函数项 , xnx_nxn​ 取值 0,1,⋯0,1, \cdots0,1,⋯ , 则对应的生成函数项是 (yan)0+(yan)1+(yan)2=1+yan+y2an⋯(y^{a_n})^{0} + (y^{a_n})^{1} + (y^{a_n})^{2}= 1+ y^{a_n} + y^{2a_n}\cdots(yan​)0+(yan​)1+(yan​)2=1+yan​+y2an​⋯

将上述生成函数项相乘 , 则可得到完整生成函数 :

G(x)=(1+ya1+y2a1⋯)(1+ya2+y2a2⋯)⋯(1+yan+y2an⋯)G(x) = (1+ y^{a_1}+ y^{2a_1}\cdots) (1+ y^{a_2} + y^{2a_2}\cdots) \cdots (1+ y^{a_n}+ y^{2a_n}\cdots )G(x)=(1+ya1​+y2a1​⋯)(1+ya2​+y2a2​⋯)⋯(1+yan​+y2an​⋯)

上述生成函数可以根据 如下生成函数的常用取值 :

{an}\{a_n\}{an​} , an=1na_n = 1^nan​=1n ; A(x)=∑n=0∞xn=11−x\begin{aligned} A(x) & = \sum_{n=0}^{\infty} x^n = \frac{1}{1-x} \end{aligned}A(x)​=n=0∑∞​xn=1−x1​​

将 1+ya1+y2a1⋯1+ y^{a_1}+ y^{2a_1}\cdots1+ya1​+y2a1​⋯ 中的 ya1y^{a_1}ya1​ 换元成 xxx , 则可得到

1+x+x2+x3+⋯1 + x + x^2 + x^3 + \cdots1+x+x2+x3+⋯

对应的数列是 1n1^n1n

则上述 1+ya1+y2a1⋯=11−ya11+ y^{a_1}+ y^{2a_1}\cdots =\cfrac{1}{1-y^{a_1}}1+ya1​+y2a1​⋯=1−ya1​1​

最终化简结果 :

G(x)=(1+ya1+y2a1⋯)(1+ya2+y2a2⋯)⋯(1+yan+y2an⋯)G(x) = (1+ y^{a_1}+ y^{2a_1}\cdots) (1+ y^{a_2} + y^{2a_2}\cdots) \cdots (1+ y^{a_n}+ y^{2a_n}\cdots )G(x)=(1+ya1​+y2a1​⋯)(1+ya2​+y2a2​⋯)⋯(1+yan​+y2an​⋯)

=1(1−ya1)(1−ya2)⋯(1−yan)\ \ \ \ \ \ \ \ \ \ =\cfrac{1}{ (1-y^{a_1}) (1-y^{a_2}) \cdots (1-y^{a_n}) }          =(1−ya1​)(1−ya2​)⋯(1−yan​)1​

将上述生成函数写好之后 , 计算 展开 , yyy 的 NNN 次幂的系数 , 就是 正整数 NNN 的拆分方案数 ;

【组合数学】生成函数 ( 正整数拆分 | 无序 | 有序 | 允许重复 | 不允许重复 | 无序不重复拆分 | 无序重复拆分 )相关推荐

  1. 【组合数学】生成函数 ( 正整数拆分 | 重复有序拆分 | 不重复有序拆分 | 重复有序拆分方案数证明 )

    文章目录 一.重复有序拆分 二.不重复有序拆分 1.无序拆分基本模型 2.全排列 三.重复有序拆分方案数证明 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式 ...

  2. 【组合数学】生成函数 ( 正整数拆分 | 无序不重复拆分示例 )

    文章目录 一.正整数拆分总结 二.正整数拆分示例 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多 ...

  3. 【组合数学】生成函数 ( 正整数拆分 | 正整数拆分基本模型 | 有限制条件的无序拆分 )

    文章目录 一.正整数拆分基本模型 二.有限制条件的无序拆分 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 ...

  4. 两个有序顺序表la,lb合并为lc(不删除重复)。

    两个有序顺序表la,lb合并为lc(不删除重复). #include<stdio.h> struct LNode {int data[30];int last; }; int main() ...

  5. mysql 按日期拆分成多条记录_mysql性能优化2 设计规范 设计原则 结构优化 拆分 配置优化...

    一.MYSQL数据库设计规范 1.数据库命名规范 a.采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; b.命名简洁明确(长度不能超过30个字符); c.例如:us ...

  6. pandas使用duplicated函数删除dataframe中重复列名称的数据列、默认保留重复数据列中的第一个数据列(removing duplicate columns in dataframe)

    pandas使用duplicated函数删除dataframe中重复列名称的数据列.默认保留重复数据列中的第一个数据列(removing duplicate columns in dataframe) ...

  7. R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项)、randomSequence函数创建不含重复项的随机序列数据集、创建随机字符串

    R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项).randomSequence函数创建不含重复项的随机序列数据集.创建随机字符串 ...

  8. Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组、split函数水平(按列)拆分二维numpy数组

    Python使用numpy函数hsplit水平(按列)拆分numpy数组(返回拆分后的numpy数组列表)实战:水平(按列)拆分二维numpy数组.split函数水平(按列)拆分二维numpy数组 目 ...

  9. pandas删除数据行中的重复数据行、基于dataframe所有列删除重复行、基于特定数据列或者列的作何删除重复行、删除重复行并保留重复行中的最后一行、pandas删除所有重复行(不进行数据保留)

    pandas删除数据行中的重复数据行.基于dataframe所有列删除重复行.基于特定数据列或者列的作何删除重复行.删除重复行并保留重复行中的最后一行.pandas删除所有重复行(不进行数据保留) 目 ...

最新文章

  1. onvif规范 中文介绍
  2. 威纶和s7200通讯线_威纶触摸屏与s7-200通信实例
  3. java 弹性碰撞_球体弹性碰撞位置和速度计算算法
  4. linux启动日志服务命令,linux命令:syslog日志服务-系统缩减之增加日志服务功能...
  5. AtCoder Beginner Contest 185
  6. snmp - 简单网络管理协议
  7. 智慧运维:基于 BIM 技术的可视化管理系统
  8. Java-简单实现房屋出租系统
  9. 万能免费信息采集软件-免费网站信息内容数据采集软件
  10. SEO经典面试问题及答案
  11. 那些著名的黑客事件 六
  12. 第一周学习总结与体会
  13. 50个ospf经典问题
  14. USB Composite 组合设备之多路CDC实现
  15. 实验六系统安装与简单配置(Linux基础教程 第2版)虚拟机环境下安装龙蜥操作系统(Anolis OS) 8.4
  16. 本周大新闻|华为发布BB观影眼镜,Geenee AR试穿加入AI生成玩法
  17. 【Altium Designer 21】单个元器件更新对应PCB封装
  18. 博优商业管理系统SQL Anywhere(ASA) 数据库“File is shorter than expected -- transaction rolled back”错误修复
  19. 语法基础——PHP语法基础
  20. OC - Association 关联对象

热门文章

  1. 说说在MVC开发中,遇到的错误及解决方法(本文章是我在实际开发中总结出来的,希望对您有帮助)...
  2. js在firefox中的问题
  3. 石川es6课程---18、ES6 复习
  4. python错误 ImportError: No module named setuptools 解决方法[转]
  5. hdu6165(拓扑排序+tarjan缩点)
  6. FlatBuffers初探
  7. Oracle面试过程中常见的二十个问题
  8. Android ListView 横向滑动删除 Item
  9. 改变客户端访问时的方法名
  10. Html,xhtml,xml的定义和区别