日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法之组合数学及其算法篇(三) ----- 容斥原理应用以及几个典型的递归关系

發布時間:2025/3/19 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法之组合数学及其算法篇(三) ----- 容斥原理应用以及几个典型的递归关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

容斥原理應用和典型的遞歸關系

  • 容斥原理應用
    • 前言
  • 錯位排列
  • 棋陣多項式
  • 禁位排列
  • 遞歸關系
    • Hanoi塔問題
    • 平面分割問題

容斥原理應用

前言

容斥原理是組合數學中的一個重要原理,它在計數研究中占有重要地位。但容斥原理所研究的計數是若干有限集的交、并或差的計數。

由于我們講的是應用,因此原理就不再仔細展開。我們在應用的時候要將某一類滿足某種性質的元素看成集合,這個是應用容斥原理的最基本的技巧。

錯位排列

定義:設集合S=(1,2,3,…,n},則S的排列數為n!。若其中有兩個排列12…n和 i1i2?in, 如果 i1≠1,i2≠2,?,in≠n 則稱排列ji2…1為12…n的一個錯位排列。即是說,一個錯位排列就是使得原排列的每個元素都不在原來位置的排列。簡稱為DnD_nDn?

  • 由規律我們得到遞推關系:Dn=(n?1)(Dn?1+Dn?2D_n =(n-1)(D_{n-1}+D_{n-2}Dn?=(n?1)(Dn?1?+Dn?2?
  • 由D1 = 0 , D2 = 1,所以D0 = 1 ,那么通過化簡我們有Dn=nDn?1+(1?)nD_n = nD_{n-1} +(1-)^nDn?=nDn?1?+(1?)n
  • 定理:對于n>=1 ,有Dn=n!(1?11!+...+(?1)n1n!)D_n = n!(1-\frac{1}{1!} + ...+(-1)^n\frac{1}{n!})Dn?=n!(1?1!1?+...+(?1)nn!1?)
    證明:
    證設S={1,2,…,n},S0為S的所有n!個排列的集合。令Aj表示排列1,2…,n中使j位置上的元素保持不動的排列的集合,j=1,2,…,n。則排列1,2,…,n的所有錯位排列必是在A1 ̄∩A2 ̄∩?∩An ̄\overline{A1}∩ \overline{A2}∩?∩\overline{An}A1A2?An.中的那些排列,故有。Dn=A1 ̄∩A2 ̄∩?∩An ̄D_n = \overline{A1}∩ \overline{A2}∩?∩\overline{An}Dn?=A1A2?An。而且
    Aj=(n?1)!,j=1,2,??,nAj=(n?1)!,j=1,2,··,nAj=(n?1)!,j=1,2,??,n
    ∣Ai∩Ai∣=(n?2)!,i,j=1,2,…,n,但i≠j∣Ai∩Ai∣=(n?2)!,i,j=1,2,…,n,但i\neq jAiAi=(n?2)!,ij=12ni?=j
    對于任意整數k且1≤k≤n,則有
    ∣An∩A2∩?∣Ak∣=(n?k)!∣An∩A2∩?∣Ak∣=(n?k)!AnA2?Ak=(n?k)!
    圖為(1,2,…,k)的k組合為C(n,k)C(n,k)C(n,k)個,應用容斥原理得到
    Dn=n!(1?11!+...+(?1)n1n!)證畢D_n = n!(1-\frac{1}{1!} + ...+(-1)^n\frac{1}{n!})證畢Dn?=n!(1?1!1?+...+(?1)nn!1?)

    棋陣多項式

    概念
    n個棋子在n×n的棋盤上的一種布局,并規定:每行每列有且只有一個棋子,這樣一種布局對應n個元素的某一排列。例如,下圖是一個4×4的棋盤,4個棋子在棋盤上的一種布局,如圖所示,其所對應的排列為2314。

    可以把棋盤C推廣到任意形狀。
    設為rk(C)為k個棋子按規定布置到棋盤C上的不同方案數設為r_k(C)為k個棋子按規定布置到棋盤C上的不同方案數rk?(C)kC

    禁位排列

    定義:是指在一個排列中禁止某些元素占據某些位置。


    證明:對于其證明我們是正難則方的思路先求落入禁區的,在求禁區的方案數需要用到容斥原理。
    若有n個棋子布入n×n的棋盤。設AiA_iAi?為i個棋子落入禁區的排列集合,i=1,2,…,n。

    若一個棋子落入禁區的方案數為r1r1r1,剩下的n-1個棋子為無限制的排列,故至少有一個棋子落入禁區的排列數為r1?(n?1)!r_1*(n-1)!r1??(n?1)!。兩個棋子落入禁區的方案數為r2r_2r2?,而其余n-2個棋子為無限制的排列,故至少有兩個棋子落入禁區的排列數為r2?(n?2)!r_2*(n-2)!r2??(n?2)!,依此類推。由容斥原理,n個棋子無一落入禁區的排列數為
    Qn=A1 ̄∩A2 ̄∩?∩An ̄=n!?r1?(n?1)!+r2?(n?2)!+?+(?1)?rn?0!Q_n=\overline{A1}∩ \overline{A2}∩?∩\overline{An} \\ =n!?r_1?(n?1)!+r_2?(n?2)!+?+(?1)^*r_n*0!Qn?=A1A2?An=n!?r1??(n?1)!+r2??(n?2)!+?+(?1)?rn??0! 證畢。

    而對于r1,r2,..,rnr_1,r_2,..,r_nr1?,r2?,..,rn?的值我們有由禁區組成圖形的棋陣多項式求出。

    遞歸關系

    定義:對于數列a1,a?2,a3,…,ana_1,a-2,a_3,…,a_na1?a?2a3?an? 把該數列中除了有限個數以外的任何數a,和它前面的一個或一些數關聯起來的方程叫做遞歸關系。為了能夠著手計算,必須知道數列中的一個或一些數,這樣的數叫做邊界條件

    Hanoi塔問題

    我們將n個盤從a柱移動到c柱上,需要移動的次數分析如下:

    令h(n)為n個盤從a柱移到c柱所需移動的盤次。顯然,當n=1時,只需移動一個盤次,故h(1)=1。當n=2時,先將上面的小盤移到b柱上;然后,將下面的大盤移到c柱上;最后再將b柱上的小盤移到c柱上,共計移動3個盤次,故h(2)=3。依此類推,總之,當有n個盤時,設法先將上面的n-1個盤移到b柱上,再將第n個盤從a柱移到c柱上,然后再把b柱上的n-1個盤設法移動到c柱上。于是我們得到以下遞歸關系
    h(n)=2h(n一1)+1,h(1)=1,n=2,3,….h(n)=2h(n一1)+1,h(1)=1,n=2,3,….h(n)=2h(n1)+1h(1)=1n=23.

    通過母函數求解后得到:
    h(n)=2n?1h(n)=2^n-1h(n)=2n?1

    平面分割問題

    1.問題的提出
    設有n條封閉曲線畫在平面上,而任何兩條封閉曲線恰好相交于兩點,且任何三條封閉曲線不相交于同一點,問這些封閉曲線把平面分割成的區域個數。
    2.問題的分析
    令a點為n條封閉曲線把平面分割成的區域個數。顯然,當n=1時, a1=2; 當n=2時, a2=4; 當n=3時, 。a3=8,?。 于是我們發現一個規律:若n-1條封閉曲線把平面分割成的區域個數為an-,,則第n條封閉曲線與這n-1條封閉曲線相交于2(n-1)個點,這2(n-1)個點把第n條封閉曲線截成2(n-1)段弧,這些弧把原來的2(n―1)個區域中的每個區域一分為2,故新增加的區域個數為2(n-1),如圖6.2所示,于是得到以下遞歸關系

    an=an?1+2(n?1),a1=2,a0=2,n=2,3a_n=a_{n-1}+2(n-1),a_1=2,a_0=2,n=2,3an?=an?1?+2(n?1),a1?=2,a0?=2,n=2,3

    通過母函數求解后得到:
    an=n(n?1)+2a_n=n(n-1)+2an?=n(n?1)+2

    總結

    以上是生活随笔為你收集整理的算法之组合数学及其算法篇(三) ----- 容斥原理应用以及几个典型的递归关系的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。