首页 > 其他分享 >浅谈卡特兰数

浅谈卡特兰数

时间:2023-08-12 14:13:01浏览次数:36  
标签:浅谈 合法 括号 序列 2n 卡特兰 dp

定义

先给一个通项公式 \(Cat(n)=\frac{C_{2n}^{n}}{n+1}\)。

卡特兰数是一个比较通用的模型,有很多的问题都与其有关,其中比较经典的是括号序列计数和二叉树计数。

经典的问题

一些描述

括号序列计数

给定 \(n\),求有多少个合法的长度为 \(2n\) 的括号序列。

二叉树计数

给定 \(n\),求有多少个合法的 \(n\) 个节点的二叉树。

朴素的做法

考虑 dp。

括号序列计数

先抽象一下问题,把 \((\) 抽象为 \(1\), \()\) 抽象为 \(-1\),我们设一个括号序列的对应值为抽象成数字后的序列的和,而合法的括号序列就要满足这个序列的所有前缀和都要是非负的,zu

设 \(dp_{i}\) 表示长度为 \(i\) 的合法括号序列个数,根据序列中第一个 \((\),枚举对应的 \()\) 括起来的范围,可以把这个序列分成 2 个部分,如下图:

可以看到,上文提到的两部分分别是 \(s_1\) 和 \(s_2\),显然,整个序列要是合法的,要求 \(s_1\),\(s_2\) 也是合法的,发现就是子问题了,可以直接 dp 做。

\(dp_i=\sum_{j=1}^i {dp_{i-j}\times dp_{j-1}}\)

二叉树计数

同上, \(dp_i\) 表示的是以 \(i\) 个节点的二叉树个数,显然通过二叉还是可以分成 2 部分,然后转移和上面的就一样了。

数学的做法

以括号序列为例,我们建立一个数学模型,考虑有后效性的东西,只有他们的对应值,发现对应值其实也是左括号和右括号的个数,发现是两维的,考虑把这个东西建立在平面直角坐标系上面,抽象成走路径问题,起点是 \((0,0)\),终点是 \((n,n)\),要求合法,所以左括号个数必须一直比右括号个数多,即 \(x\geq y\),转换为数学语言就是这条路径不能经过 \(y=x+1\) 这个函数。

至于为什么是 \(y=x+1\),因为 \(y=x\) 也是合法的,所以往上走一格判断不合法。

image

发现不好做,这个时候就可以使用第一个经典的技巧,正难则反,考虑用所有的情况减去不合法的情况,不合法的情况就是经过了 \(y=x+1\) 的情况,发现可以经过很多次,于是可以使用第二个技巧,使用标志物,把统计经过这条直线变成第一次经过这条直线的方案,发现还是不好统计,所以就请出第三个技巧,找双射,找到一个对应的情况,但是更好统计,比如上面的问题,就可以这样子搞:

考虑第一次过那条线的点,把路径以 \(y=x+1\) 为对称轴翻折上去,没错,就像将军饮马一样,这样子折线就被我们变成了直线,我们只需要把起点翻过去,在考虑新的起点到本来的终点的方案数量就是不合法的方案数量了。

翻着上去,起点是 \((-1,1)\),一共走 \(2n\) 步,选 \(n-1\) 步往上走,所以一共的方案就是 \(C_{2n}^{n-1}\),所以合法方案数量就是 \(C_{2n}^{n}-C_{2n}^{n}\) 套公式化简以下就是 \(\frac{C_{2n}^{n}}{n-1}\),这就是著名的卡特兰数。
二叉树计数是类似的,就不写了。

卡特兰数本身不难,但是一些看似没有关系的问题恰好就是卡特兰数的变形,学习卡特兰数让我学到了三个排列组合的技巧。

首先就是正难则反,一定有一个方向是不难的,其二是对于容易统计重复的东西,我们给他一个标志物,比如第一次,一定等等,其三就是找双射,让每一种方案都有对应的方案,而对应的方案更好统计。

对于有 2 个有后效性的东西,我们可以考虑放在平面直角坐标系上进行统计,就是数形结合,这些技巧都是很有用的。

标签:浅谈,合法,括号,序列,2n,卡特兰,dp
From: https://www.cnblogs.com/falling-flowers/p/17624633.html

相关文章

  • 浅谈背包
    引入背包问题,是大多数oier在学习动态规划(下文用dp代替)的过程中,最先接触到的问题。它看似简单,有蕴含着无穷的变化。本文便对作者接触过的背包问题做一个总结。背包问题,一般情况下指:你有\(n\)个物品和一个容量为\(m\)的背包,每个物品有重量\(w\)和价值\(v\),各个物品间可......
  • 隐私计算之浅谈联邦学习
    本文分享自天翼云开发者社区《隐私计算之浅谈联邦学习》 作者:l****n一、背景“数据孤岛”简单的讲,各组织都持有各自的数据,这些数据之间互有关系但又独立存储于各组织。出于安全性、合规性等方面考虑,各组织只能查询、使用己方数据,无法交换其它组织的数据。在联邦学习出现前,针对......
  • 浅谈根号分治
    浅谈根号分治一、问题引入  给定一个长度为\(n\)的序列,进行\(m\)次询问。每次询问给出两个数字\(x,y\)。对于每次询问,输出所有下标模除\(x\)等于\(y\)的元素的总和。  对于这个问题,我们发现他要维护的是一段离散的元素的和,而我们平时学的数据结构,如线段树等都只能维护一段......
  • 浅谈弧光保护在中低压开关柜中的应用
    未晓妃安科瑞电气股份有限公司上海嘉定201801摘要:近年来,中低压开关柜的使用越来越普遍。在此过程中,确保开关柜平稳运行至关重要。并在此基础上,阐述了由此产生的弧光和电弧事故的危险性,引入弧光保护及母线保护的特点必要性分析,阐述了弧光保护系统的原理和结构。工程实例证明,弧光保......
  • CGAL入门——浅谈CGAL
    CGAL官网https://doc.cgal.org/latest/Manual/index.html最近在学习CGAL,发现CGAL中文资料太少了,官网示例代码也很少注释,还加入了很多自定义的很少见过的名词,易读性略差,学习起来有点难度赶紧记录一下学习过程,怕以后忘了 1.简介CGAL(ComputationalGeometryAlgorithmsLibrar......
  • 浅谈项目架构设计
    整理自b站up主主要一点是最合适的是最好的,不必为了过于追求某项技术而冗余!一.功能性需求1.跟实际的业务需求是对应的!2.所使用的技术框架是不是够先进,文档是否完善,使用过程中容易排查到问题3.技术是否为开源的,够不够活跃,更新频率等4.成本:学习成本,使用成本,迁移成本,维护成本,要......
  • 浅谈AI浪潮下的视频大数据发展趋势与应用
    视频大数据的发展趋势是多样化和个性化的。随着科技的不断进步,人们对于视频内容的需求也在不断变化。从传统的电视节目到现在的短视频、直播、VR等多种形式,视频内容已经不再是单一的娱乐方式,更是涉及到教育、医疗、商业等各个领域。为了满足用户个性化的需求,视频大数据的分析和挖掘......
  • 浅谈 2-SAT
    SAT是适定性(Satisfiability)问题的简称。一般形式为k-适定性问题,简称k-SAT。而当\(k>2\)时该问题为NP完全的。所以我们只研究\(k=2\)的情况。而2-SAT问题一般指的是,有\(n\)个布尔变量\(x_1,x_2\dotsx_n\),现在有若干个二元的运算,是对于\(x_i,\negx_i,x_j\neg......
  • 浅谈PLC程序命名3大通用规则
    导读工程师在编写PLC程序时,可能需要对项目中的程序块、变量表、单一背景数据块、全局DB块等命名。在博途软件中支持中文和英文的命名。但是一旦程序量比较大,命名可能就会出现混乱的现象。针对命名,只要读者遵循相关命名规则就不易发生混乱。本文以博途软件为例进行探讨。01......
  • 浅谈伯努利数
    O.前言在翻洛谷日报的时候居然没看到伯努利数的讲解,于是有了这篇文章。想要看懂本文,你需要提前知道以下内容:二项式系数;幂级数;艾弗森括号;下降幂;第二类斯特林数。部分内容在文中给了对应的公式,故不放在前言内。I.伯努利数的定义:万恶之源\(m\)次幂的求和公式1.伯努......