四元数左乘右乘_【组合数学】从简单的计算机问题讲解Catalan数

锐腾君也已经好久没有出现了qwq

最近大学的朋友们忙着期末季,高中的朋友们也忙着1月份的选考/春考/期末考。大家也都忙碌了起来。

本周一,锐腾的一门课也迎来了期末考试。

先小小的安利一下,复旦学子如果还缺模块课选,可以考虑第五模块的《计算思维》哦,汪老师和黄老师讲课也很有意思,而且这门课也确实能学到许多东西。上课甚至可以和黄老师来一些神奇的互动(划掉)

这门课的期末其中一道考题是这样的。

对于
个元素进行入栈出栈操作,总共有多少种出栈序列?

可能有相当一部分读者并不明白这个问题的内容。但是并不影响大家来看我本篇文章。


本文大纲

1.从合法括号串引出Catalan计数问题

2.利用递推方法,求解Catalan计数问题

3.利用基本计数方法,求解Catalan计数问题

*4.从Dyck路问题再看Catalan计数问题

*5.简单的生成函数理论

*6.利用生成函数理论,求解Catalan计数问题

7.Catalan数的一些实际问题应用

阅读建议

对于数学基础较一般的读者可以略过4,5,6部分,读1,2,3,7部分,若第3部分读不懂,可以直接略去证明看结论。

对于有能力的读者,可以选读4,5,6部分。


从合法括号串引出Catalan计数问题

我们首先来看这样一个问题:

我们知道,电脑识别一些含有括号的表达式的时候,会自动进行配对。但是它在内部是如何进行配对的呢?

例如我们对下面这个含括号的表达式而言

(a+(b-c)*2)^(d+e)

我们要判断它的括号结构,其实只需要单独抽出括号,即:(())()

这种只含有左括号和右括号的表达式,我们称之为括号串

现在我们要研究的是,什么样的括号串才是合法的。且对于长度相同的括号串,合法的有括号串有多少?

首先,我们的左括号,必然要有右括号和它配对,也就是说,无论我们读到这个括号串的哪个位置,我已经读到过的右括号数不能超过左括号数

比如我们对于1对左右括号,我们有1种合法括号串:()

对于2对左右括号,我们有2种合法括号串:(()) ; ()()

对于3对左右括号,我们有5种合法括号串:((())) ; ()(()) ; ()()() ; (())() ; (()())

接下来我们要探究的问题就是,对于

对左右括号,它应该有多少种合法的括号串?

这类计数问题被称为Catalan计数问题,它的解被称为Catalan数。我们约定

对左右括号,有
种合法的括号串。

为了方便起见,我们考虑0对括号串,它唯一对应了一种合法括号串,即空字符串。因此我们认为


利用递推方法,求解Catalan计数问题

一个和自然数相关的命题我们当然希望能够用自然数的工具解决。递推方法不失为一种好的解决自然数相关命题的办法,我们不妨来尝试一下。

首先我们观察一下

时的合法括号串

比如 (())()

我们可以将其拆分成两个大的结构 (()) ()

这两个大的结构中,每一部分都满足:除了结尾处外,无论数到哪个位置,左括号的数量一定严格大于右括号。

这样的结构对于我们来说,刚刚好就是将括号向下套娃再向上回来,回到了地面的那一步,是所有括号串中最基本的结构类型。我们将其称为本原括号串

7fe96c12d266f2b9443ab8aef997a946.png
本原括号串的形象解释:你以为我在第五层?实际上我在负二层哒!

我们回到原问题

我们直接考虑所有的合法括号串可能有点难,但是从本原括号串出发考虑问题可能会简单些。

我们假定对

对括号里,本原括号串数有
种。

本原括号串去掉第一个左括号和最后一个右括号就是一个

对括号的合法括号串,反过来也一样。因此,我们有

c6ad590cce23dadf13ea941e021dbf82.png
本原括号串和合法括号串的对应关系

我们来考虑

对括号中合法括号串的构成。它一定是由若干个本原括号串拼成的。但我们不关心它具体由几个本原括号串,我们只需要把它的第一个本原括号子串提出来,剩余部分一定就是对应的一个合法括号串。

fdd444ab3e6a0b4b725f2b014538355a.png
将大合法字符串分拆成一些小的合法字符串

若第一个本原括号串只用了

对括号,那么这种类型的合法括号串就应该有
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值