Catalan卡塔兰数

卡塔兰数

  卡塔兰数组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (18141894)命名。

  卡塔兰数的一般项公式为 C_n = \frac{1}{n+1}{2n \choose n} = \frac{(2n)!}{(n+1)!n!}                     

  另类递归式:  h(n)=((4*n-2)/(n+1))*h(n-1);

  前几项为: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...

性质

  Cn的另一个表达形式为C_n = {2n\choose n} - {2n\choose n-1} \quad\mbox{ for }n\ge 1 

  所以,Cn是一个自然数;这一点在先前的通项公式中并不显而易见。这个表达形式也是André对前一公式证明的基础。(见下文的第二个证明。)

卡塔兰数满足以下递推关系

C_0 = 1 \quad \mbox{and} \quad C_{n+1}=\sum_{i=0}^{n}C_i\,C_{n-i}\quad\mbox{for }n\ge 0.

它也满足

C_0 = 1 \quad \mbox{and} \quad C_{n+1}=\frac{2(2n+1)}{n+2}C_n,

这提供了一个更快速的方法来计算卡塔兰数。

卡塔兰数的渐近增长为

C_n \sim \frac{4^n}{n^{3/2}\sqrt{\pi}}

它的含义是左式除以右式的商趋向于1当n → ∞。(这可以用n!的斯特灵公式来证明。)

所有的奇卡塔兰数Cn都满足n = 2k − 1。所有其他的卡塔兰数都是偶数。

应用

  组合数学中有非常多.的组合结构可以用卡塔兰数来计数。在Richard P. Stanley的Enumerative Combinatorics: Volume 2一书的习题中包括了66个相异的可由卡塔兰数表达的组合结构。以下用Cn=3和Cn=4举若干例:

  • Cn表示长度2n的dyck word的个数。Dyck word是一个有n个X和n个Y组成的字串,且所有的部分字串皆满足X的个数大于等于Y的个数。以下为长度为6的dyck words:
XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY
  • 将上例的X换成左括号,Y换成右括号,Cn表示所有包含n组括号的合法运算式的个数:
((())) ()(()) ()()() (())() (()())
  • Cn表示有n+1个叶子的二叉树的个数。

    

 

  • Cn表示所有不同构的含n个分枝结点的满二叉树的个数。(一个有根二叉树是满的当且仅当每个结点都有两个子树或没有子树。)

证明:

令1表示进栈,0表示出栈,则可转化为求一个2n位、含n个1、n个0的二进制数,满足从左往右扫描到任意一位时,经过的0数不多于1数。显然含n个1、n个0的2n位二进制数共有{2n \choose n}个,下面考虑不满足要求的数目.

考虑一个含n个1、n个0的2n位二进制数,扫描到第2m+1位上时有m+1个0和m个1(容易证明一定存在这样的情况),则后面的0-1排列中必有n-m个1和n-m-1个0。将2m+2及其以后的部分0变成1、1变成0,则对应一个n+1个0和n-1个1的二进制数。反之亦然(相似的思路证明两者一一对应)。

从而C_n = {2n \choose n} - {2n \choose n + 1} = \frac{1}{n+1}{2n \choose n}。证毕。

  • Cn表示所有在n × n格点中不越过对角线的单调路径的个数。一个单调路径从格点左下角出发,在格点右上角结束,每一步均为向上或向右。计算这种路径的个数等价于计算Dyck word的个数: X代表“向右”,Y代表“向上”。下图为n = 4的情况:                                                         
  • Cn表示通过连结顶点而将n + 2边的凸多边形分成三角形的方法个数。下图中为n = 4的情况:      
  • Cn表示对{1, ..., n}依序进出置换个数。一个置换w是依序进出栈的当S(w) = (1, ..., n), 其中S(w)递归定义如下:令w = unv,其中nw的最大元素,uv为更短的数列;再令S(w) =S(u)S(v)n,其中S为所有含一个元素的数列的单位元。
  • Cn表示集合{1, ..., n}的不交叉划分的个数. 那么, Cn 永远不大于第n贝尔数Cn也表示集合{1, ..., 2n}的不交叉划分的个数,其中每个段落的长度为2。综合这两个结论,可以用数学归纳法证明 that all of the free cumulants of degree more than 2 of the Wigner semicircle law are zero. This law is important in free probability theory and the theory of random matrices.
  • Cn表示用n个长方形填充一个高度为n的阶梯状图形的方法个数。下图为 n = 4的情况:

                                                                                          



  我总结了一下,最典型的四类应用:(实质上却都一样,无非是递归等式的应用,就看你能不能分解问题写出递归式了)
1.括号化问题。
  矩阵链乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种)
2.出栈次序问题。
  一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?
  类似:
  (1)有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈)
  (2)在圆上选择2n个点,将这些点成对连接起来,使得所得到的n条线段不相交的方法数。
3.将多边行划分为三角形问题。
  将一个凸多边形区域分成三角形区域的方法数?
  类似:一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果她
  从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路?
  类似:在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?
4.给顶节点组成二叉树的问题。
  给定N个节点,能构成多少种形状不同的二叉树?
  (一定是二叉树!
  先去一个点作为顶点,然后左边依次可以取0至N-1个相对应的,右边是N-1到0个,两两配对相乘,就是h(0)*h(n-1) + h(2)*h(n-2) +  + h(n-1)h(0)=h(n))
  (能构成h(N)个)

转载于:https://www.cnblogs.com/yxh-amysear/p/8260440.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue --- v-html、v-bind

v-html // 有时候,我们需要展示<strong>,但直接使用下面的语法并不会显示 <div id "app">{{name}}</div><script>let app new Vue({el:#app,data:{name:<strong>啦啦啦</strong>}}); </scritp> // 结果当然没让人失望此…

在树莓派是安装并配置NTP服务

我们都知道树莓派的小巧和省电节省空间等太多的优势&#xff0c;这里就不一一列举了&#xff0c;那么树莓派就需要长时间的运行&#xff0c;可以724的方式运行&#xff0c;那么我们就把树莓派当作一个小的服务器来运行&#xff0c;可以跑一些小的应用&#xff0c;例如可以在局域…

Oracle使用总结

1. 在ORACLE中Service Name即为数据库名称&#xff1b; 2. 在做删除操作时&#xff0c;需要加Commit进行操作提交&#xff1b; 3. 使用sqlldr将数据进行批量导入到ORACLE中&#xff1a; 3.1 Sqlldr命令的用法&#xff1a; sqlldr useridLoginName/PasswordTNSName controlC:\U…

ES5-17/18 错误信息、try_catch、严格模式

错误信息 语法错误 标识符名称&#xff08;变量、函数名&#xff09;不规范对关键字赋值基本语法错误&#xff0c;如分号打错 引用错误 变量、函数未声明给无法赋值的对象赋值var a 1 2 范围错误 数组长度为负数方法参数超出可行范围toFixed(-1) 类型错误 调用不存在…

vue --- v-text、v-show、v-if、v-else

v-text: <div id "app"><p v-text"msg"></p> </div> <script>let app new Vue({el:#app,data:{msg:Hello Vue}}) </script>// 可见v-text在某种程度上等价于 {{}}v-show: <div id "app"><div…

查找mac下腾讯视频下载地址

mac 腾讯视频下载的视频是不可见的&#xff0c;也许是因为版权原因吧。使用以下方法可以在文件中找到缓存的视频&#xff08;不过都是被断开的很多短视频&#xff09;。 在terminal输入&#xff1a; cd Library/Containers/ 然后ls查看。查看当前的所有文件夹&#xff0c;你会看…

JS 新建web sql 数据表

//新建web sql数据库数据表var tbName"tableName";var strSQL"create table if not exists tableName (id unique,th1,th2,th3)";function creatBDTable(strSQL,tbName){db openDB();db.transaction(function(tr) {tr.executeSql(strSQL,[],//SQL语句出成…

vue --- v-for、v-on、v-model、v-once

v-for: <div id "app"><ul><li v-for"item in list">{{item}}</li></ul> </div> <script>let app new Vue({el:#app,data:{list:[B,A,T]}}) </script>拿到索引index: <div id"app">&…

ES5-19 变量声命周期、垃圾回收原理、arguments

变量声命周期 垃圾回收 找出不再使用的变量释放其占用内存固定的时间间隔运行 解除由于闭包产生的对fn AO的引用 标记清除 排除全局变量、排除闭包引用的AO中的变量进入环境 → 离开环境常用 引用计数 引用计数为0时清除对循环引用的情况&#xff0c;如果不手动接触引用…

bzoj 1801: [Ahoi2009]chess 中国象棋【dp】

注意到一行只能放012个炮&#xff0c;我们只需要知道列的状态&#xff0c;不用状压行 所以设f[i][j][k]表示前i行有j列有1个炮&#xff0c;有k列有2个炮的方案数 然后分情况讨论转移就行了 #include<cstdio> #include<iostream> using namespace std; const int N1…

vue --- compoent妙用

首先利用写一个静态模板的组件 <div id "app"><my-arti></my-arti> </div> <script>Vue.component(my-arti,{template:<div style"border:1px solid black"><span>date:2019年06月14日</span><br>…

ES5-20 复习

3-1 变量单一声明方式String Boolean undefined Number nullundefined nulltypeof(null) ‘object’typeof(方法) ‘function’typeof() 是运算符&#xff0c;不是数据类型 报错0 -0 trueInfinity -Infinity falseNaN和谁都不等原始值没有属性 要打印属性、调用方法得经过基…

eclipse中去掉警告提示

有时候我们要去掉这些不必要的提示 下面我们来设置去掉这些警告提示 转载于:https://www.cnblogs.com/xiaostudy/p/9370016.html

vue --- vue-router

vue-router的CDN <script src "https://unpkg.com/vue-router2.5.3/dist/vue-router.js"></script>// 当然还需要导入vue的cdn <script src"https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></script>使用router-link(to)添加点击链…

django-restframework使用

安装restframework: pip install djangorestframework 修改项目settings.py: INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,rest_framework, ]修改项…

JSON基础与数据解析、JSON方法、AJAX初识

JSON JavaScript Object Notation js对象标记是对象&#xff0c;是轻量级数据交互的格式&#xff0c;不能有方法它基于 JavaScript 语法&#xff0c;但与之不同&#xff1a;JavaScript不是JSON&#xff0c;JSON也不是JavaScript映射用:隔开并列数据用,隔开映射的集合用{}包裹键…

iOS开发经验总结

在iOS开发中经常需要使用的或不常用的知识点的总结&#xff0c;几年的收藏和积累&#xff08;踩过的坑&#xff09;。 一、 iPhone Size 二、 给navigation Bar 设置 title 颜色 123UIColor *whiteColor [UIColor whiteColor];NSDictionary *dic [NSDictionary dictionaryWit…

http --- 缓存

Web缓存: // 是可以自动保存常见文档副本的HTTP设备. // 当Web请求抵达缓存时,如果本地有"已缓存的"副本,就可以从本地存储设备而不是原始服务器中提取这个文档.冗余的数据传输: // 有很多客户端访问一个流行的原始服务器页面时,服务器会多次传输同一份文档 // 每次…

Django 下添加左侧字段显示和搜索

在对应的apps下建立xadmin.py from .models import EmailVerifyRecord import xadminclass EmailVerifyRecordAdmin(object): list_display [code,email,send_type,send_time]//字段显示 search_fields [code,email,send_type]//搜索 xadmin.site.register(EmailVerify…

免费分享老男孩全栈9期视频,共126天

免费分享老男孩全栈9期视频&#xff0c;共126天。 及时保存避免失效&#xff1a;http://mihon.cn/article/26.html/ 转载于:https://www.cnblogs.com/mihon/p/9372881.html