• 错排递推式推导


    今天听课讲容斥,提到错排,突然发现错排公式什么的好像已经忘了233

    努力地回忆了一下,算出前几项,终于还原出了那个递推式↓

    f(n)=(n-1)*(f(n-1)+f(n-2))

    根据人赢的教导,只要思(yi)考(yin)下错排的构造就能记住了

    然后就认(meng)认(you)真(yi)真(yang)地思(yi)考(yin)了下

    用自己的理解把这玩意儿整理了一下↓

    先加一点平时我们说的错排通常是指1~n的排列a,满足a(i)≠i,

    其实脑补一下,它也可以看成A,B两个集合,|A|=|B|,对于每一个Ai,都对应唯一Bi,不同Ai对应Bi不同,现在强行改变对应方式,仍然是一对一,但是每一个Ai对应的Bi都不再是之前那个Bi,问方案数。

    假设要构造f(n),

    首先,必须满足a(n)≠n,则第n位只能取1~n-1,且第n位取1~n-1的任何一个数都是等价的

    令g(n)为前n位排好的方案数.

    那么f(n)=g(n-1)*(n-1),

    因为此时前n-1位数字不是1~n-1,而是1~n中除去任意一个x(x∈[1,n-1])的方案数,所以显然g(n-1)≠f(n-1)

    对于每一个k(k属于[1,n-1])

    存在前n-1位的构造根据第n个的摆放可以分成两种情况:

    1) n放在第k位,k放在第n位,剩下n-2的数满足n-2的错排,方案数为f(n-2)

    2) n不放在第k位,那么剩下n-1的数满足n-1的错排,方案数为f(n-1)

    要满足两种情况不重复,就必须满足1~n-1的任意一种错排方案的前n-2个数的排列一定不等于任意一种1~n-2的错排方案

    (很绕的一句话,不过显然是对的,因为假设存在相等,那么第n-1位只能放n-1,不满足错排)

    所以g(n-1)=f(n-1)+f(n-2)

    f(n)=(f(n-1)+f(n-2))*(n-1)

    所以就证好了

    其中初值还是很容易确定的,因为肯定要结合实际意义的嘛

    f(0)=1   不放

    f(1)=0   只有一个数,一个位置,显然不成立

    错排公式的原型长这样→f(n)=n![1/0!-1/1!+1/2!-1/3!+1/4!+...+(-1)^n/n!],可以通过容斥,递推式各种方法求,这里就不证了ww

    【写的有漏洞的,欢迎路过大神吐槽】

    2016-08-06 16:48:00

    Ending.

  • 相关阅读:
    复合文档(Compound Document)读写栗子
    JavaScript修改IE注册表
    mysql_real_connect 端口号说明
    _beginthreadex创建线程,立即执行?
    Access 是/否 字段
    JavaScript格式化日期输出
    STM32-串行SPI nor
    全球唯一标识符:GUID在线生成
    如何交叉编译Python到ARM-Linux平台(转)
    CMOS Sensor的调试经验分享(转)
  • 原文地址:https://www.cnblogs.com/wry0112/p/5744399.html
Copyright © 2020-2023  润新知