现在的位置: 首页 > 综合 > 正文

组合数学学习之错位排列(持续更新)

2012年10月18日 ⁄ 综合 ⁄ 共 788字 ⁄ 字号 评论关闭

全错位排列有三种解法,嘿嘿,那我就要一探究竟!

一、递推

        假设排列是1,2,3,4···n个数,Dn表示n个数的全错位排列的方法数。D1 = 0、D2 = 1

        那么对于第1个位置,假设由k去占。现在就有两种情况:

       1)、1和k互换了位置,k占1的位置,1占k的位置:那么此时相当于1和k位置确定,只需要讨论Dn-2的排列数。

       2)、1没有占k的位置,而是占了其它的位置:那么此时相当于只确定了k的位置,需要讨论Dn-1的排列数。

       但是有(n-1)个数需要讨论,所以可以得到下面的递推式:

       

       然后等价变形为(两边同时处以n!,然后再移项整理):

       

       然后展开递推式就可以得到错位排序的通项公式了。  

二、容斥原理

        记N(a1,a2,···,an)为n个数都没排错的方法数,那么对于以下情况,可以得到一些结论:

        a1排对,记N(a1)=(n-1)!。因为a1已经排对了,那么还剩下(n-1)个位置让其它数排,所以有(n-1)!的排法。

        a1、 a2排对,记N(a1,a2)=(n-2)!

        a1、a2、a3排对,记N(a1,a2,a3)=(n-3)!

        ·

        ·

        ·

        a1,a2,···,an排列错位,记为N(a1,a2,···,an)=(n-n)!

       推广一下,对于任意t个数,可得下面的等式:

        

        那么如何求Dn呢?可知n个数的排列方法数为n!。由容斥原理,用总的排列数,减去排对的数,得到的就是排错的数,可得下面的公式:

        

整理一下一或者二的等式,便可以得到Dn的通项公式了:

   

三、利用母函数球递推关系(有点复杂,就是代数法喽)

下面是一些练习题:Hdu 2048 神、上帝和老天爷

参考资料:

     《应用组合数学》F.S Roberts

     《容斥原理在错位排列中的应用》 廖虎

抱歉!评论已关闭.