L14 – Counting with Generating Functions: Combinations, Permutations, and Partitions

Discrete Mathematics2026年4月19日发布 芮和
14.8K 700
7,131字
30–45 分钟

Catalan Numbers

EXAMPLE: The nnth Catalan number is Cn=1n+1(2nn)C_n = \frac{1}{n+1}\binom{2n}{n}.

  • Catalan number: Cn+1=k=0nCkCnkC_{n+1} = \sum_{k=0}^n C_k C_{n-k}, C0=1C_0 = 1
  • Let C(x)=n=0CnxnC(x) = \sum_{n=0}^\infty C_n x^n be the generating function of the sequence of Catalan numbers.
  • n=0Cn+1xn=n=0(k=0nCkCnk)xn=C(x)2\sum_{n=0}^\infty C_{n+1} x^n = \sum_{n=0}^\infty \left(\sum_{k=0}^n C_k C_{n-k}\right) x^n = C(x)^2
  • xn=0Cn+1xn=n=0Cn+1xn+1=C(x)1x \sum_{n=0}^\infty C_{n+1} x^n = \sum_{n=0}^\infty C_{n+1} x^{n+1} = C(x) – 1
  • xC(x)2=C(x)1x C(x)^2 = C(x) – 1
  • C(x)=1±14x2xC(x) = \frac{1 \pm \sqrt{1-4x}}{2x}
  • 14x=(14x)12=n=0(12n)(4x)n=12x2x2\sqrt{1-4x} = (1-4x)^{\frac{1}{2}} = \sum_{n=0}^\infty \binom{\frac{1}{2}}{n} (-4x)^n = 1 – 2x – 2x^2 – \dots
  • C(x)=1+14x2xC(x) = \frac{1 + \sqrt{1-4x}}{2x}? No, because it gives a negative sequence.
  • C(x)=114x2x=12x(1n=0(12n)(4x)n)=n=01n+1(2nn)xnC(x) = \frac{1 – \sqrt{1-4x}}{2x} = \frac{1}{2x} \left(1 – \sum_{n=0}^\infty \binom{\frac{1}{2}}{n} (-4x)^n\right) = \sum_{n=0}^\infty \frac{1}{n+1}\binom{2n}{n} x^n

Counting Permutations with GFs

QUESTION: Let k>0,N1,,Nkk > 0, N_1, \dots, N_k \subseteq \mathbb{N}. For every n0n \geq 0, let ana_n be the number of nn-combinations of [k][k] with repetition where every i[k]i \in [k] appears NiN_i times.

  • an=|{(n1,,nk):n1N1,,nkNk,n1++nk=n}|a_n = \left|\{(n_1, \dots, n_k): n_1 \in N_1, \dots, n_k \in N_k, n_1 + \dots + n_k = n\}\right|
    • ana_n is the number of ways of distributing nn unlabeled objects into kk labeled boxes such that NiN_i objects are sent to box ii. (Type 2 distribution problem)

THEOREM: n=0anxn=i=1kniNixni\sum_{n=0}^\infty a_n x^n = \prod_{i=1}^k \sum_{n_i \in N_i} x^{n_i}.

  • i=1kniNixni=n1N1xn1n2N2xn2nkNkxnk\prod_{i=1}^k \sum_{n_i \in N_i} x^{n_i} = \sum_{n_1 \in N_1} x^{n_1} \cdot \sum_{n_2 \in N_2} x^{n_2} \dots \sum_{n_k \in N_k} x^{n_k}
    =n=0(n1N1,,nkNk,n1++nk=n1)xn= \sum_{n=0}^\infty \left(\sum_{n_1 \in N_1, \dots, n_k \in N_k, n_1+\dots+n_k=n} 1\right) x^n
    =n=0anxn= \sum_{n=0}^\infty a_n x^n

EXAMPLE: Let ana_n be the # of ways of distributing nn identical books to 5 persons such that person 1, 2, 3, and 4 receive 3\geq 3, 2\geq 2, 4\geq 4, 6\geq 6 books, respectively. a20=?a_{20} = ?

  • an=|{(n1,,n5):n13,n22,n34,n46,n50,n1++n5=n}|a_n = \left|\{(n_1, \dots, n_5): n_1 \geq 3, n_2 \geq 2, n_3 \geq 4, n_4 \geq 6, n_5 \geq 0, n_1 + \dots + n_5 = n\}\right|
  • N1={3,4,}N_1 = \{3,4, \dots\};
    N2={2,3,}N_2 = \{2,3, \dots\};
    N3={4,5,}N_3 = \{4,5, \dots\};
    N4={6,7,}N_4 = \{6,7, \dots\};
    N5={0,1,2}N_5 = \{0,1,2 \dots\}
  • n=0anxn=i=15niNixni\sum_{n=0}^\infty a_n x^n = \prod_{i=1}^5 \sum_{n_i \in N_i} x^{n_i}
    =(x3+)(x2+)(x4+)(x6+)(1+x+)= (x^3 + \dots)(x^2 + \dots)(x^4 + \dots)(x^6 + \dots)(1 + x + \dots)
    =x31xx21xx41xx61x11x=x15(1x)5= \frac{x^3}{1-x} \frac{x^2}{1-x} \frac{x^4}{1-x} \frac{x^6}{1-x} \frac{1}{1-x} = \frac{x^{15}}{(1-x)^5}
    =x15n=0(5n)(1)nxn= x^{15} \sum_{n=0}^\infty \binom{-5}{n} (-1)^n x^n
    • a20=(55)(1)5=(5+515)=126a_{20} = \binom{-5}{5} (-1)^5 = \binom{5+5-1}{5} = 126

QUESTION: Let k>0,N1,,Nkk > 0, N_1, \dots, N_k \subseteq \mathbb{N}. For every n0n \geq 0, let ana_n be the number of nn-permutations of [k][k] with repetition where every i[k]i \in [k] appears NiN_i times.

  • an=n1N1,n2N2,,nkNk,n1+n2++nk=nn!n1!n2!nk!a_n = \sum_{n_1 \in N_1, n_2 \in N_2, \dots, n_k \in N_k, n_1+n_2+\dots+n_k=n} \frac{n!}{n_1!n_2!\dots n_k!}
    • ana_n is the number of ways of distributing nn labeled objects into kk labeled boxes such that NiN_i objects are sent to box ii for all i[k]i \in [k]. (Type 1 distribution problem)

THEOREM: n=0ann!xn=i=1kniNixnini!\sum_{n=0}^\infty \frac{a_n}{n!} x^n = \prod_{i=1}^k \sum_{n_i \in N_i} \frac{x^{n_i}}{n_i!}.

  • i=1kniNixnini!=n1N1xn1n1!n2N2xn2n2!nkNkxnknk!\prod_{i=1}^k \sum_{n_i \in N_i} \frac{x^{n_i}}{n_i!} = \sum_{n_1 \in N_1} \frac{x^{n_1}}{n_1!} \cdot \sum_{n_2 \in N_2} \frac{x^{n_2}}{n_2!} \dots \sum_{n_k \in N_k} \frac{x^{n_k}}{n_k!}
    =n=0(n1N1,n2N2,,nkNk,n1++nk=nn!n1!n2!nk!)xnn!= \sum_{n=0}^\infty \left(\sum_{n_1 \in N_1, n_2 \in N_2, \dots, n_k \in N_k, n_1+\dots+n_k=n} \frac{n!}{n_1!n_2!\dots n_k!}\right) \frac{x^n}{n!}
    =n=0ann!xn= \sum_{n=0}^\infty \frac{a_n}{n!} x^n

EXAMPLE: Find an={s{1,2,3,4}n:s has an even number of 1s}a_n = \left\{s \in \{1,2,3,4\}^n: s \text{ has an even number of 1s}\right\}

  • an=a_n = # of nn-permutations of {1,2,3,4}\{1,2,3,4\} with repetition where 1 appears an even number of times
  • N1={0,2,4,}N_1 = \{0,2,4, \dots\}, N2=N3=N4={0,1,2,}N_2 = N_3 = N_4 = \{0,1,2, \dots\}
  • n=0ann!xn=(1+x22!+x44!+)(1+x1!+x22!+)3\sum_{n=0}^\infty \frac{a_n}{n!} x^n = \left(1 + \frac{x^2}{2!} + \frac{x^4}{4!} + \dots\right) \left(1 + \frac{x}{1!} + \frac{x^2}{2!} + \dots\right)^3
    =ex+ex2e3x= \frac{e^x + e^{-x}}{2} \cdot e^{3x}
    =e4x+e2x2= \frac{e^{4x} + e^{2x}}{2}
    =12n=0((4x)nn!+(2x)nn!)= \frac{1}{2} \sum_{n=0}^\infty \left(\frac{(4x)^n}{n!} + \frac{(2x)^n}{n!}\right)
  • ann!=12(4nn!+2nn!)\frac{a_n}{n!} = \frac{1}{2} \cdot \left(\frac{4^n}{n!} + \frac{2^n}{n!}\right)
    • an=4n+2n2a_n = \frac{4^n + 2^n}{2}

Stirling Number S2(n,j)S_2(n,j)

EXAMPLE: Show that S2(n,j)=1j!i=0j(1)i(ji)(ji)nS_2(n,j) = \frac{1}{j!} \sum_{i=0}^j (-1)^i \binom{j}{i} (j-i)^n // (Type 3 distribution problem)

  • S2(n,j)=S_2(n,j) = the # of ways of distributing nn labeled objects into jj unlabeled boxes s.t. no box is empty
  • an=T(n,j)a_n = T(n,j) be the # of ways of distributing nn labeled objects into jj labeled boxes s.t. no box is empty.
  • an=S2(n,j)j!a_n = S_2(n,j) \cdot j!
  • N1=N2==Nj={1,2,}N_1 = N_2 = \dots = N_j = \{1,2, \dots\}
  • n=0ann!xn=i=1jniNixnini!\sum_{n=0}^\infty \frac{a_n}{n!} x^n = \prod_{i=1}^j \sum_{n_i \in N_i} \frac{x^{n_i}}{n_i!}
    =i=1j(x1!+x22!+)= \prod_{i=1}^j \left(\frac{x}{1!} + \frac{x^2}{2!} + \dots\right)
    =i=1j(ex1)= \prod_{i=1}^j (e^x – 1)
    =(ex1)j= (e^x – 1)^j
    =i=0j(1)i(ji)e(ji)x= \sum_{i=0}^j (-1)^i \binom{j}{i} e^{(j-i)x}
    =i=0j(1)i(ji)n=0(ji)nn!xn= \sum_{i=0}^j (-1)^i \binom{j}{i} \sum_{n=0}^\infty \frac{(j-i)^n}{n!} x^n
    =n=01n!i=0j(1)i(ji)(ji)nxn= \sum_{n=0}^\infty \frac{1}{n!} \sum_{i=0}^j (-1)^i \binom{j}{i} (j-i)^n x^n
ann!=1n!i=0j(1)i(ji)(ji)n\frac{a_n}{n!} = \frac{1}{n!} \sum_{i=0}^j (-1)^i \binom{j}{i} (j-i)^n
an=i=0j(1)i(ji)(ji)na_n = \sum_{i=0}^j (-1)^i \binom{j}{i} (j-i)^n
S2(n,j)=1j!i=0j(1)i(ji)(ji)nS_2(n,j) = \frac{1}{j!} \sum_{i=0}^j (-1)^i \binom{j}{i} (j-i)^n

THEOREM: n=0pj(n)xn=xji=1j11xi\sum_{n=0}^\infty p_j(n) x^n = x^j \prod_{i=1}^j \frac{1}{1-x^i} // (Type 4 distribution problem)

  • pj(n)=pj1(n1)+pj(nj)(nj)p_j(n) = p_{j-1}(n-1) + p_j(n-j) \quad (n \geq j) // the last entry is 1; otherwise
  • Qj(x)=n=0pj(n)xnQ_j(x) = \sum_{n=0}^\infty p_j(n) x^n
    =n=0(pj1(n1)+pj(nj))xn= \sum_{n=0}^\infty \left(p_{j-1}(n-1) + p_j(n-j)\right) x^n
    =n=j(pj1(n1)+pj(nj))xn= \sum_{n=j}^\infty \left(p_{j-1}(n-1) + p_j(n-j)\right) x^n
    =n=jpj1(n1)xn+n=jpj(nj)xn= \sum_{n=j}^\infty p_{j-1}(n-1) x^n + \sum_{n=j}^\infty p_j(n-j) x^n
    =xQj1(x)+xjQj(x)= x Q_{j-1}(x) + x^j Q_j(x)
  • Qj(x)=x1xjQj1(x)=Q_j(x) = \frac{x}{1-x^j} Q_{j-1}(x)= \dots
    =xj1(1xj)(1x2)Q1(x)= \frac{x^{j-1}}{(1-x^j)\dots(1-x^2)} Q_1(x)
    =xj1(1xj)(1x2)x1x= \frac{x^{j-1}}{(1-x^j)\dots(1-x^2)} \frac{x}{1-x}
    =xji=1j11xi= x^j \prod_{i=1}^j \frac{1}{1-x^i}

EXAMPLE: What is the number of ways of distributing 20 unlabeled objects into 5 unlabeled boxes such that no box is empty? That is, p5(20)=?p_5(20) = ?

  • n=0p5(n)xn=x5i=1511xi\sum_{n=0}^\infty p_5(n) x^n = x^5 \prod_{i=1}^5 \frac{1}{1-x^i}
    =x5(1+x++x20+)i=1= x^5 \underset{i=1}{{(1 + x + \dots + x^{20} + \dots)}}
    (1+x2++x20+)i=2\underset{i=2}{{(1 + x^2 + \dots + x^{20} + \dots)}}
    (1+x3++x18+)i=3\underset{i=3}{{(1 + x^3 + \dots + x^{18} + \dots)}}
    (1+x4++x20+)i=4\underset{i=4}{{(1 + x^4 + \dots + x^{20} + \dots)}}
    (1+x5++x20+)i=5\underset{i=5}{{(1 + x^5 + \dots + x^{20} + \dots)}}
    =x5+x6++70x19+84𝒙20+= x^5 + x^6 + \dots + 70x^{19} + \boldsymbol{84x^{20}} + \dots
  • p5(20)=84p_5(20) = 84
© 版权声明

相关文章

70 条评论

  • 奶香芋
    奶香芋 游客

    这种分布问题直接套公式就行了?

    中国上海
    回复
  • 袜子总失踪
    袜子总失踪 读者

    这符号量,简直在给大脑做压力测试。

    中国辽宁
    回复
  • 血煞狂刀
    血煞狂刀 游客

    这类题要是没生成函数得写多少行。

    中国湖北
    回复
  • 潜意识的低语
    潜意识的低语 游客

    那个 $p_5(20)$ 的结果 84 是怎么从那个大乘积里算出来的?

    中国福建
    回复
  • 孤影刀狂
    孤影刀狂 读者

    以前为了搞定 $S_2$ 熬了几个通宵,结果最后少写了个负号,差点没把书给撕了。

    中国北京
    回复
  • 风车转转乐
    风车转转乐 游客

    数学这玩意,看的时候觉得自己懂了,笔一拿直接懵。

    中国江苏
    回复
  • 樱桃红唇
    樱桃红唇 游客

    $binom{-5}{5}$ 怎么变 $binom{9}{5}$ 的?这步没看懂。

    中国河南
    回复
  • 不败帝王
    不败帝王 游客

    所以最后 p5(20) 是 84 种分法?感觉比硬枚举快多了。

    越南
    回复
    • 泡泡小章鱼
      泡泡小章鱼 游客

      枚举得死人,这方法虽然看着唬人但确实省事。

      中国福建@ 不败帝王
      回复
  • 鹦鹉学舌
    鹦鹉学舌 游客

    S2(n,j) 那个容斥原理的求和式子背了忘忘了背,太折磨。

    中国北京
    回复
  • 初阳语
    初阳语 游客

    之前做括号匹配题用过卡特兰数,没想到还能这么推。

    中国重庆
    回复
  • WanderingAura
    WanderingAura 游客

    纯路过,这符号密度劝退我了 😂

    中国山东
    回复
    • 晴空下
      晴空下 游客

      符号炸裂我直接跳过去,真是眼花缭乱

      中国甘肃@ WanderingAura
      回复
  • 超弦观测员
    超弦观测员 游客

    那个分书例题里,为什么可以直接把几个级数乘起来?

    中国山西
    回复
    • 呆萌考拉
      呆萌考拉 游客

      那个x∑Cₙ₊₁xⁿ = C(x)−1不就是错位相减嘛,把级数展开就明白了

      中国贵州@ 超弦观测员
      回复
  • 旧时光收藏家
    旧时光收藏家 游客

    看着挺简洁,自己推一遍全是坑。

    日本
    回复
  • 毛球小狗狗
    毛球小狗狗 读者

    所以卡特兰数选减号是因为加号会让常数项变无穷大?

    日本
    回复
  • 绘画艺术家
    绘画艺术家 读者

    手算那个 126 的时候差点把阶乘搞错,太容易粗心了。

    日本
    回复
  • 画皮妖
    画皮妖 游客

    当年考组合数学就栽在生成函数上,现在看还是头大。

    韩国
    回复
  • 虚拟镜像
    虚拟镜像 游客

    这推导步骤跳得有点快,中间那步平方展开没看懂。

    中国北京
    回复
    • 旧人旧事
      旧人旧事 读者

      其实就是柯西乘积,搜一下那个公式就明白了。

      中国河南@ 虚拟镜像
      回复
  • 暗夜猎龙
    暗夜猎龙 游客

    生成函数搞组合真挺神的,不过手算起来还是容易漏项

    中国北京
    回复
  • 小猴吱吱
    小猴吱吱 读者

    指数型生成函数这波操作太秀了

    中国重庆
    回复
    • 不发声的鲸
      不发声的鲸 读者

      这操作确实绝了

      中国北京@ 小猴吱吱
      回复
  • 噼啪噼
    噼啪噼 读者

    p5(20)=84这步算得挺巧

    中国广东
    回复
    • 光速逃离
      光速逃离 读者

      这步确实挺巧妙的

      中国山东@ 噼啪噼
      回复
  • 夜之秘使
    夜之秘使 读者

    这段推导思路挺清晰

    韩国
    回复
  • 水泥管道
    水泥管道 读者

    生成函数推卡特兰数那几步太丝滑了

    中国湖北
    回复
  • 梦回之翼
    梦回之翼 读者

    卡特兰数那个正负号取舍讲得挺细

    日本
    回复
  • 星芒隐者
    星芒隐者 读者

    偶数个1那步展开真绝

    中国湖南
    回复
    • 生活实验室
      生活实验室 读者

      看到那步我直接愣住了

      中国台湾@ 星芒隐者
      回复
  • 奶味小云
    奶味小云 读者

    Stirling数那堆求和看着头晕

    中国陕西
    回复
    • HollowHowl
      HollowHowl 读者

      同感,递推式绕来绕去

      菲律宾@ 奶味小云
      回复
  • 星海漫步
    星海漫步 读者

    最后整数分拆那个84怎么来的,看半天才看懂

    日本
    回复
  • 三峡云崖
    三峡云崖 读者

    Type 1到4的分布问题分类确实清晰

    中国河南
    回复
    • 屁桃君
      屁桃君 读者

      同感,分类特别清楚

      中国浙江@ 三峡云崖
      回复
  • 午夜飞行
    午夜飞行 读者

    用指数型母函数处理排列问题那块,展开太丝滑了

    中国辽宁
    回复
  • Luminous Tide
    Luminous Tide 读者

    这个递推公式挺好用

    澳大利亚
    回复
  • 鹦鹉先生
    鹦鹉先生 读者

    看到Catalan数就头大

    韩国
    回复
  • 反向摸鱼
    反向摸鱼 读者

    那个分书例题算出来 126,心算差点没跟上

    印度尼西亚
    回复
  • JellybeanJoy
    JellybeanJoy 读者

    p₅(20)=84这个数是不是也能递推出来?想验证下

    中国上海
    回复
  • Velvet Moonbeam
    Velvet Moonbeam 读者

    感觉这种代数操作像变魔术,结果对但过程摸不着头脑

    中国湖北
    回复
  • 反重力工程师
    反重力工程师 读者

    Stirling数那个推导过程有点绕,得拿笔算几遍

    美国
    回复
  • 旧日云烟
    旧日云烟 读者

    生成函数太牛了,直接把求和变成乘积

    中国北京
    回复
    • 脸滚键盘
      脸滚键盘 读者

      同感,这转换太绝了

      中国山东@ 旧日云烟
      回复
  • 薄荷喵呜
    薄荷喵呜 读者

    长推导直接跳过,只看结论了😂

    欧洲
    回复
  • OmegaStriker
    OmegaStriker 游客

    不是说Catalan数能数二叉树吗,这跟生成函数咋对应上的?

    中国湖北
    回复
  • value18
    value18 读者

    离散数学要是考这个,我直接交白卷

    中国广东
    回复
    • 东皇
      东皇 读者

      我也怕考到这种题目啊

      中国山东@ value18
      回复
  • HarbingerOfDoom
    HarbingerOfDoom 游客

    有没人用这个算过实际问题?比如括号匹配那种经典题

    中国陕西
    回复
  • 小资生活
    小资生活 读者

    p5(20)居然才84,直觉以为会更多

    中国广东
    回复
  • 沉睡之海
    沉睡之海 读者

    懂了,C(x)选减号是因为展开后系数得非负,加号会出负数序列😂

    日本
    回复
  • 秋水无尘
    秋水无尘 读者

    那个x∑Cₙ₊₁xⁿ = C(x)−1是怎么推的?卡在这步了

    中国广西
    回复
    • 黑曜石贤者
      黑曜石贤者 读者

      应该是把 $sum C_n x^n$ 往后移一项,然后减掉 $C_0$。

      韩国@ 秋水无尘
      回复
  • BerryBubble
    BerryBubble 读者

    a20=126这步要是手算得算到明年

    美国
    回复
    • 空之咏叹
      空之咏叹 读者

      直接上计算器,别折磨自己

      中国浙江@ BerryBubble
      回复
  • 小兔软糖
    小兔软糖 读者

    之前上组合数学被生成函数折磨过,现在看还是头皮发麻

    中国贵州
    回复
  • 武旦风华
    武旦风华 游客

    这个递推式Cₙ₊₁=ΣCₖCₙ₋ₖ,是不是意味着每一步都在拆解结构?

    中国上海
    回复
  • 翠微亭
    翠微亭 读者

    看这堆求和符号直接劝退,我连C(x)是啥都没搞明白

    中国福建
    回复
  • 芝士奶盖茶
    芝士奶盖茶 游客

    看这堆符号,我直接晕了

    韩国
    回复
    • 星辰捕手
      星辰捕手 游客

      我看完差点没站稳,求个简化步骤

      中国广东@ 芝士奶盖茶
      回复
  • 蕙质兰心
    蕙质兰心 读者

    这个生成函数的收敛半径怎么算的?有人有步骤吗,能不能举个具体例子

    中国北京
    回复
  • 灵狐幻影
    灵狐幻影 读者

    Catalan数那步变号搞了好久才明白

    中国安徽
    回复
  • 无敌战狂
    无敌战狂 游客

    这公式一看就头大,竟然还能这么简洁 😂

    中国上海
    回复