卡特兰数及其应用

简介: 卡特兰数及其应用

前言

A和B是两个毫不相关的集合,但是集合的个数可数。只要能找到某一个映射 f ,让A集合里的一个样本x只对应B集合里的一个样本y;同时能找到一个映射g,让B里的某一个样本只对应A里的某一个样本。其中,f,g,A,B毫无关系,可以得到A的集合数量等于B的集合数量。

卡特兰数

卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。其前几项为:
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 47 7638700,
1767263190, 6564120420, 24466267020, 91482563640,
343059613650, 1289904147324, 4861946401452,...

卡特兰数公式

k(0)= 1,k(1)= 1时,如果接下来的项满足:
k(n)= k(0) k(n- 1)+ k(1) k(n- 2)+ ... + k(n- 2) k(1) + k(n- 1) k(0)
或者
k(n)= c(2n,n)- c(2n, n-1)
或者
k(n)= c(2n,n)/(n + 1)
就说这个表达式,满足卡特兰数,常用的是范式1和2,3几乎不会使用到

括号模型

什么叫括号模型:左右两边括号数量相等的情况下,有多少种合法情况

括号类型的违规和违法可以转换成卡特兰数的计算。

任何一个不合法的括号序列,存在一个最短前缀,其中最短前缀的右括号数量比左括号多一个

A集合是所有不合法的情况数,B集合中,有n+1个右括号,n-1个左括号,其中所形成的所有样子统称为B集合。

任何一个不合法的A集合元素中的x,通过某个映射,都能对应到B集合中的某个元素y。

这个映射就是:从最短前缀的下一个括号开始全部取反。
在这里插入图片描述
所以,n个左括号和n个右括号不合法的数量 == n+1个右括号和n-1个左括号形成的所有样子。

所以不合法的数量就是:一共2n个括号,选n+1个右括号。

k(n)= c(2n,n)- c(2n, n-1)

n个左括号和n个右括号的合法数量:

一共2n个括号,选n个括号放左括号 减去 一共2n个括号,选n+1个括号放右括号

或者

一共2n个括号,选n个括号放左括号 减去 一共2n个括号,选n-1个括号放左括号
在这里插入图片描述

卡特兰数相关应用

数字进出栈的方式

n个数字要进栈,一定要进n个数,出n个数,一共有多少进出栈的方式?

公司股票走势问题

假设某个公司股票的波动和走势只有两种情况,要么是往上45度,要么就是往下45度。问多少次交易过后,不会跌到X轴以下。
在这里插入图片描述

二叉树的组成方式

一共有N个无差别的结点,有多少种组成二叉树的方式?
在这里插入图片描述
在这里插入图片描述

等势(希尔伯特旅馆)

整数跟偶数的数量一样多?
任何一个整数*2都是偶数,任何一个偶数/2都是整数,互相建立了一一映射关系,所以数量就是一样多的。

长度不一样的两条线段上面点的个数一样多?比如长度为5和长度为10的两条线段上面的点的个数一样多?
在这里插入图片描述
长度为0的线段会有无数个点?
在这里插入图片描述

相关文章
|
2月前
|
算法
lanqiao OJ 1366 spfa最短路
lanqiao OJ 1366 spfa最短路
26 0
|
6月前
|
C++
【洛谷 P1706】全排列问题 题解(全排列)
该问题要求按字典序输出从1到n的所有不重复排列。输入为整数n,输出为每行一个的数字序列,每个数字占5个宽度。样例输入3,输出6行全排列。代码使用C++,通过`next_permutation`函数生成所有排列。注意n的范围是1到9。
53 0
一个求公约数和公倍数的有趣求法
一个求公约数和公倍数的有趣求法
65 0
poj 1990 MooFest 树状数组
题意就是有N头牛,每头牛都有一个坐标和声调值(x, v),两头牛之间通讯要花费的能量是他们的距离乘以最大的一个音调值,现在要任意两头牛之间都相互通讯一次,求总共需要花费多少能量?
52 0
|
机器学习/深度学习
卡特兰数
卡特兰数
93 0
容斥原理 (两个例题)
容斥原理 (两个例题)
157 0
AcWing 246. 区间最大公约数 (gcd性质 线段树)
AcWing 246. 区间最大公约数 (gcd性质 线段树)
115 0
AcWing 246. 区间最大公约数 (gcd性质 线段树)