前言
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的线段会有无数个点?