解析组合技巧
来源:互联网 发布:联合大数据 编辑:程序博客网 时间:2024/05/17 00:10
介绍
解析组合的主要思想是利用数学分析的方法来分析组合对象的性质,主要用于“组合类“的计数问题,它的最基本形式类似初等组合数学里面的母函数方法。
我们考察如下问题:
考虑一个
n+2 边的凸多边形M ,每个顶点标注为0…n+1 (逆时针)。一个三角剖分是将M 分为一系列内部不相交的三角形。问:有多少种剖分方法?
这是一个典型的组合计数问题,由于对于任意三角剖分使得
记
所以通过泰勒展开式可以的到
解析组合思想
事实上我们上面的例子所用的方法就是传统的组合生成函数法,我们先通过组合直观得到了递推式
定义(组合类):一个组合类是一个可数集合
定义(计数序列):组合类
定义(类等价):两个组合类
定义(OGF):计数序列
我们接下来定义几个简单组类合构造算子(
- 笛卡尔积:
C=A×B={(a,b)∣a∈A,b∈B} ,其大小函数定义为|(a,b)|C=|a|A+|b|B 。 - 不交并:
C=A+B=(A×{□})∪(B×{△}) 。这里□,△ 大小为0 ,且C 的大小函数继承自原类。 - 序列:
C=SEQ(B)={ϵ}+B+(B×B)+(B×B×B)+⋯ ,这里ϵ 大小为0 。
利用这些算子,我们构造如下复杂的算子:
周期循环:
重集:
幂集:
主定理
组合算子和计数函数方程有如下对应:
这些对应直接验证即可,或参考:Page 27 of [1]
一个OGF应用的例子
对任意正整数
n ,它的一个划分是指一个无序数组(x1,x2,⋯,xk),xi∈N+ 使得x1+⋯+xk=n (例如1+2+1 和2+2 是不同划分,但和1+1+2 是相同的)。问:n 一共有多少种不同的划分?
我们记
显然,我们有:
至此,我们已经得到了
参考文献
[1]. Philippe Flajolet and Robert Sedgewick. Analytic Combinatorics. Cambridge University Press 2009.
- 解析组合技巧
- 组合数计算技巧
- 组合数取模深度解析
- 组合模式解析
- 电脑组合键使用技巧
- 电脑组合键使用技巧
- mybatis数据库组合查询技巧
- Leetcode分类解析:组合算法
- C#操作JSON(组合,解析)
- 解析邮件营销技巧
- JSON解析技巧
- 反编译技巧解析
- Gson 解析小技巧
- 指针阅读技巧解析
- 使用fastjson解析技巧
- unity jeson 解析技巧
- 组合应用Property Broker调试技巧
- 排列三技巧两码的组合
- [省选前题目整理][POJ 3468]A Simple Problem with Integers(线段树区间修改)
- 统计软件第六次作业
- 实例理解const用法
- Araleii & Bill的冠名权争夺战【找规律】
- Java构造和解析Json数据的两种方法详解二
- 解析组合技巧
- opencv中cvLoadImage函数批量读入大量图像报错
- 替换Json字符串里key对应的value值
- Java中sleep和wait方法的异同点
- 关于一个《十六进制转十进制》的小程序
- 关于NSLocalizedString(@"Foo %@",nil) 使用 NSLocalizedString实现App文本的本地化
- BaseAdapter
- [LeetCode][165][Compare Version Numbers]
- BOM文件头