• 一个优美的恒等式以及证明


    一个优美的恒等式

    [sum_{i+j+k=n}{i+jchoose i}{j+kchoose j}{k+ichoose k}=sum_{r=0}^n{2rchoose r} ]

    证明

    本证明由三人合作完成,博主觉得非常优美,于是放在了这里。

    证明硬拆右式行不通,考虑构造

    对于

    [{i+jchoose i} ]

    构造一个长度为(i+j)的序列(S),由(i)(a)(j)(b)组成;

    接着对于

    [{j+kchoose j},{k+ichoose k} ]

    等价于

    [{i+kchoose i},{j+kchoose j} ]

    两者独立贡献。

    此时考虑对序列(S'leftarrow a+S+b),这样就有(i+1)(a)(j+1)(b),接着给序列中的每个字符标上指数,令(a)的指数和与(b)的指数和(=k)。对于所有的指数,均为非负整数

    由插板法不难得出(a)(b)的指数分配的方案贡献({i+kchoose i},{j+kchoose j})

    接下来将序列(S')变换成(S''):将(a^x ightarrow (acdots a)b)(b^y ightarrow (bcdots b)a),注意括号里分别有(x+1)(y+1)项,且括号并不出现在序列(S'')中。然后删除(S'')中第一个字符((a))。

    通过这步操作,(|S''|=2n+3)(a,b)的数量分别为(n+1)(n+2),且一组方案(S' ightarrow S'')满足单射

    我们采取这样的策略还原出(S'):初始时(S')为空,给(S'')的开头补上字符(a),这里只假设一种情况,另一种同理。如果(S'')的开头为(a),则一直删除(S'')的第一个字符,直到第一个字符为(b),为了方便起见称呼这个字符(b)终止点,给(S')的末尾加上一个(a^x)(x)为刚刚删除(a)的个数(-1),然后把(S'')开头的终止点(b)删掉。继续操作下去,如果剩余的(S'')全部(a)或者(b),则不存在(S')对应(S'')。反之即为所求的(S')

    接下来归纳证明该构造的方案数等价于右式。

    对于(n=0)时显然成立;

    对于(n>0)时,记左式(=f(n))

    显然(S''=cdots ba),考虑倒数第三个字符,如果其为(b),则一定存在(S')与该(S'')对应(如果倒数第三个字符(b)为终止点,最后两个也可以被消除),此时剩余(2n)个字符和(n)(a)(b),方案数为(2nchoose n)

    如果为(a),假设是终止点,则最后的(ba)可以被消除,否则最后的(b)将成为终止点,仅剩一个(a)无法被消除,不存在(S')对应。所以必然不为终止点。此时必然有倒数第四个字符为(b),即(S''=cdots baba)。不难发现前面省略号的方案转化成(f(n-1))的情形。由于归纳,(f(n-1)=sum_{r=0}^{n-1}{2rchoose r})成立。

    [f(n)=f(n-1)+{2nchoose n}=sum_{r=0}^n{2rchoose r} ]

    成立

    综上,左式(=f(n)=)右式,证毕。

  • 相关阅读:
    合并二叉树
    剑指 Offer 68
    剑指 Offer 42. 连续子数组的最大和
    C语言 递归实现迷宫寻路问题
    C语言数据结构 统计英文文字每个“单词”出现次数
    C语言 双链表的频度排序管理
    C语言 插入排序使链表递增
    c语言 简单的天数计算器
    数据结构 链表的头插法逆置
    C语言 删除指定的单词
  • 原文地址:https://www.cnblogs.com/ac-evil/p/14111240.html
Copyright © 2020-2023  润新知