1. 程式人生 > >Polya定理

Polya定理

組合數學 復合函數 left right 可能 映射 定義 使用 多少

  Burnside和Polya定理都是高級計數的工具。對於一般計數問題,可以用排列組合來統計,但是對於更復雜的問題,比如對n個點用m種顏色染色,並且認為這n個點可以相互轉移,即第一個點的位置可以與第二個點互換等等,求最多有多少種不同的染色(兩種染色不同,當且僅當兩者在空間上存在相同位置的兩點顏色,且無法通過允許的轉移從前者轉移到後者)。

  組合數學提供了強悍的Burnside和Polya定理來對這種復雜情況的可能數進行計數。

基礎知識

  我們將允許的轉移以下列方程表示出來:

  (1 2 3 4 5)

  (2 3 4 5 1)

  對於任意輸入值,我們先在上面方框裏找到對應的下標(如果值未上方標識出來,那麽返回值就是輸入值,即等值轉換),並用該下標在下面方框裏找到映射值。實際上可以發現置換是一個函數,因為每個輸入值通過轉移可以轉換為另外一個確定的值。我們將其記作t。

  對於定義域和值域均落在集合V上的所有置換的集合,稱為V上的置換類。(事實上這個類是一個群,但是我們不細講)

  可以發現上面的輸入值x轉移得到的值均為上方括號該值出現的後一位(最後一位後面就認為是首位),其構成了一個循環,我們用(1 2 3 4 5)來簡單標記,稱這樣的置換為循環。

  由於置換是函數,因此我們可以進行復合操作,即對於置換f與g,我們記fg為二者的復合函數(轉移),而(fg)(x)=f(g(x))。若f與g是循環,其也可以寫作(f1 f2 ... fn)(g1 g2 ... gm)。

定理:任意一個置換都可以拆解成為若幹個不相交循環。比如(1 2 3)(4 5)等價於下面的置換:

  (1 2 3 4 5)

  (2 3 1 5 4)

  對於指定值x,若置換f滿足f(x)=x,那麽稱f是x不動置換,相應的稱x是f的不動點,由所有x的不動置換組成的集合稱為x不動置換類。

  置換可以直接作用於向量,對於向量(a1,a2,...,an),我們記f(a1,a2,...,an)=(af(1),af(2),...,af(n))

核心定理

  現在來描述問題。有n個點和m種顏色,問有多少種不同的染色的可能。並且提供一個[1,n]上的置換類G,當且僅當兩個染色方案a與b,對於所有G中的置換g,都滿足g(a)<>b,才認為兩個染色方案不同。而每個染色方案可以用向量來表示(c1,c2,...,cn)。其中ci表示第i個點所上的顏色。並且我們稱相同的染色方案(向量)為等價類。

Polya定理:記置換G={a1,...,ak},在[1,m]^n上,不同的向量數目為$ L=\left(\sum_{i=1}^k{m^{l\left(a_i\right)}}\right)/|G| $。其中l(ai)表示置換ai可以展開為循環的節數,比如(1 2)(3 4)(5)就是3節循環。

  註意使用這兩個定理,要保證G中不含重復的置換。(兩個置換相同與函數相同的定義一致)。

Polya定理