Chapter Chapter Chapter
Chapter 7 77 7 數學方法 數學方法 數學方法 數學方法( ( ( (Math Math Math Math) ) ) )
●Section1 數論基礎(Basic Number Theory)
數學是科學的皇后,數論是數學的皇后。 ——高斯
§1-1 整除,質數,互質及因式分解
為了定義除法,有除法原理:若a,b為整數,則存在唯一的一組整數q,r,使得a=bq+r,
且0≤r<|b|,稱a除以b的商為q,餘數為r。而對於整數a,b定義b整除a若且唯若存在整數 t使a=bt,記為b|a,此時亦稱b為a的因數,a為b的倍數。
定義質數為一大於一之正整數p,滿足除了1與p以外沒有其他因數。則有算術基本定 理:對每一個大於1的整數n,一定存在相異質數p1,p2,…,pk,使得n=p1r1p2r2...pkrk ,這個表 示法,在不考慮順序下是唯一的,而此種表示法即n之因式分解。
若a,b,c為整數,而a|b且a|c,則稱a為b,c之公因數,而b,c公因數中最大的的一個為 其最大公因數,記為(b,c)。而若b|a且c|a,則稱a為b,c之公倍數,而b,c正公倍數中最小的 一個稱為b,c之最小公倍數,記為[b,c]。又若(b,c)=1,則稱b,c互質。
對於正整數n,定義歐拉函數φ(n)為小於或等於n的正整數中與n互質的數的數目,則 有 = ⋅
∏
p質數 n
p - p
n n
,
1 1 )
ϕ( 。
§1-2 模運算
在數論中,常常我們處理的許多問題都必須考慮數字除以某數字的餘數。為了便利討論 的進行,我們定義同餘符號”≡”如下:a≡b(mod m)代表a–b是m的倍數,稱為a與b對模m 同餘,也可寫作a≡m b。模運算有以下幾個性質:
(1) 若a≡b(mod m),c≡d(mod m),則a+c≡b+d(mod m) (2) 若a≡b(mod m),c≡d(mod m),則a–c≡b–d(mod m) (3) 若a≡b(mod m),c≡d(mod m),則ac≡bd(mod m)
(4) 若ac≡bc(mod m),則a≡b(mod m/(c,m)),若(c,m)=1則a≡b(mod m).
(5) 若(a,m)=1,則存在唯一c使ac≡1(mod m),其中c被稱作a對模m的逆a-1
在資訊競賽中,模運算通常對我們的幫助是在某些要求輸出答案除m的餘數的題目中,
我們可以由這些性質知道如果計算過程只牽涉到加減乘,則可以直接全部在模m下操作。而 如果牽涉到除法,則必須另外將跟m不互質的部份提出,對於剩下跟m互質的部份則可以利 用性質 4 與 5 進行除法運算。儘管較為麻煩,但仍是寫大數之外的另一種選擇。
§1-3 幾個著名的數論定理
費馬小定理(Fermat's little theorem):對所有整數a及質數p,有ap-a是p的倍數。此定理亦 可表示為對所有整數a及質數p且(a,p)=1,有ap-1≡1(mod p)。
歐拉-費馬定理(Euler-Fermat theorem):費馬小定理之推廣,對任意整數a,m,若(a,m)=1,
則有aφ(m) ≡1(mod m)。
威爾遜定理(Wilson's theorem):對於任意整數p,p是質數若且唯若(p-1)! ≡1(mod p)。
中國剩餘定理(Chinese remainder theorem):對於任意兩兩互質之整數n1,n2,…,nk,同餘方程 組x≡a1(mod n1), x≡a2(mod n2),…,x≡ak(mod nk)必有解,且其所有解對模n1n2…nk同餘。
§1-4 幾個重要的數論演算法
(1) 歐幾里得輾轉相除法(Euclidean algorithm):在之前的章節已介紹過,此處不多加贅 述。除了求兩數的最大公因數外,其重要應用尚包括解同餘方程、求a對模m的逆(相 當於解ax+my=1)等。
(2) 篩法(Sieve of Eratosthenes):亦已於之前的章節介紹,此處不多加贅述。此法除了可 建立質數表,另一應用是計算表格中每格之數論性質,例如計算每個數各有幾個質 因數、因數和、因數個數、φ函數值…等。
(3) 對模m求逆的方法:如果要在每次詢問時求逆,則較好的作法為用輾轉相除法在
O(lgm)時間內求出。而如果模m不大,也可以事先建好一個紀錄每個數的逆的表格,
直接硬爆是O(m2);而對每個數用輾轉相除法是O(mlgm);而也可以利用費馬小定理
得到一個O(m)的作法:對於每個還沒求出逆的數字k,求出k,k2,…kn直到kn=1,則
可以一次算出k,k2,…,kn-1每個數的逆,可算出總時間是O(m)。
(4) Miller-Rabin 質數檢驗法:如果要檢驗一個數字n是不是質數,一個直覺的作法是 拿2 ~ sqrt(n)的每個數字去試除n,但如此O(sqrt(n))的時間花費偶爾依然無法滿足我 們的需求,於是就有了這一個基於隨機測試的演算法。不妨設n為奇質數,則令 n-1=2s×d,d為奇數。由費馬小定理知an-1≡1(mod p),又1在模p下開根號的結果一 定是1或-1,則考慮an-1,a(n-1)/2,…,ad,以下兩的條件必有其一成立:(1)此數列中 至少有一個-1、(2) ad=1。故若存在a使此兩條件皆不滿足,則n必非質數。可惜的 是,如果存在a使這兩個條件之ㄧ滿足,n仍有可能是合數,故不能直接拿這個測試 的結果當判斷依據。但可證明對任意合數n,有至少3/4的a使條件不滿足。故在測 試k次之後,錯誤機率僅有4-k,在測試足夠多次的條件下,此法仍為相當可信之檢 驗法。
●Section 2 代數基礎 ( Basic Algebra )
§2-1 矩陣的基本定義、運算與性質
矩陣是一個重要的代數工具,其在解決一些機率、期望值、解線性方程組、線性不等式 組或賽局問題甚至是計數問題上有許多的應用。
矩陣(matrix)即一個有m列(row),n行(column)的表格,其中每個數字皆為實數,表示為:
n mn m m
n n
m
a a
a a
A A
×
×
=
=
L M O M
L
1
1 11
,或A=[aij]m×n。另外可定義單位矩陣
n n
In
×
=
1 0
0
0 1
0
0 0
1
L M O M
L
。
則可定義基本運算:
加減法:Am×n ±Bm×n =Cm×n =[aij ±bij]m×n,則加法有交換律、結合律等。
純量乘:cAm×n =Bm×n =[caij]m×n
乘法 : m p
n k
kj ik p
m p n n
m B C a b
A ×
× =
×
× × = =[
∑
× ]~ 1
,則乘法有結合律,但沒有交換律,AB≠≠≠≠BA 乘方 : 14 24 L4 34
個 k k
n
n A A A
A× = × × × ,則有指數律。
反矩陣:若對方陣(m=n之矩陣)A存在矩陣B使AB=In,則稱A為可逆的。另可證明B唯一 且此時BA=In。記B=A-1。
轉置(transpose):AmT×n =Bn×m =[aji]n×m
行列式:對方陣A=[aij]n×n,定義其行列式值如下:
∑ ∏
=
=
=
σ
σ
之排列
任一{1~ } 1 (i) 1
1 11
) sgn(
) det(
n
n
i i,σ nn
n
n
a a
a
a a
A
K M O M
L
,其中sgn(σ)在奇排列時為-1,偶排列為 1
∑
=
− +
= n
i
ij ij j
i a B
1
) det(
) 1
( ,其中Bij為A去除第i列及第j行後所成矩陣 則取行列式值有幾個性質如下:
det(AB) = det(A)det(B)
det(A’) = c det(A) (A’為A將某一行或某一列全部乘c倍)
det(A’) = det(A) (A’為A將某一行全部加上乘c倍的另一行的值,或列作一樣的運算) det(A’) = -det(A) (A’為A將某一行跟另一行交換,或某一列跟另一列交換)
(註:以上三種運算方法即為矩陣的行運算或列運算)
A可逆若且唯若det(A)≠0,此時
[
ij]
n n ji B
A A
× +
− = (−1) det( )
) det(
1 1 ,
其中Bij為A去除第i列及第j行後所成矩陣
§2-2 高斯消去法(Gaussian Elimination)及其應用
對於一個線性方程組:
= +
+ +
= +
+ +
= +
+ +
n n nn n
n
n n
n n
b x a x
a x a
b x a x
a x a
b x a x
a x a
L M
L L
2 2 1 1
2 2
2 22 1 21
1 1
2 12 1 11
,可視為一矩陣之方程式Ax=b
如果左邊的矩陣A是單位矩陣I,則x = b,故我們求解線性方程組的目的就是要將A經 由一些變換之後變成I 。而這些變換就是上一節所提到的矩陣列運算,共有三種:把兩行交 換、把一行乘上c倍、把一行加上另一行的c倍。其實這些操作可以視為是大家相當熟悉的 加減消去法,只是用矩陣的語言來描述而已。
高斯消去法的演算法架構如下:依序處理每個變數,在處裡變數xi時,選一個j ≥ i使係
數aji不為0,此時可以將此行與第i行交換,即有aii不為0。此時將第i列乘上1/aii倍,則
係數aii變為1。再對其他任一列,設為第k列,將第k列減去第i列的aki倍,即可將第i列
之外的所有xi係數消去。重複n次後A即變成單位矩陣。故我們得到了一個解線性方程組的 演算法,所花費時間O(n3)。
上述的三種矩陣列運算各有一個與其對應的變換矩陣,操作列運算的意義即為在等號兩 側分別乘上變換矩陣,故仍可保留等號成立之性質。
而高斯消去法除了解線性方程外,還有許多應用。如求行列式值:如果直接使用行列式 之定義或使用降階法來計算行列式值,則所需耗費時間為O(n!),難以負荷。而因為我們可以 準確掌握矩陣列運算對行列式值的影響(上一節所介紹之性質),故我們可以再作高斯消去法時 計算,最後變成單位矩陣時即可算出原矩陣之行列式直,僅需O(n3)之時間。另一個應用是求 反矩陣:上一節所述之反矩陣公式在實作上因為需要進行多次之求行列式值運算,是相當不 實際的。又在高斯消去法過程中,每一步都相當於乘上一個變換矩陣,故若我們在高斯消去 法過程每一步同時也對一個單位矩陣I套用。則操作完後矩陣A變成I,即這些變換的過程相 當於乘上矩陣A-1,故此時原來的矩陣I將變為A-1,得到一個O(n3)的反矩陣求法。
另外值得一提的是:高斯消去法的相關操作不一定要在實數上進行,也有可能是在某個 特定的模m下求線性方程組之解或行列式值、反矩陣等,則同樣的作法依然適用,僅需將消 去過程中乘上1/aii倍改為乘上aii對模m的逆即可。
如果在高斯消去法的計算過程中在某一行找不到非0的係數,此時方程組必無解或有無 窮多組解,此時方程組的n個係數向量a1,a2,…,an存在一種比例使其和為0向量,彼此線性 相依;反之則稱其線性獨立(linearly independent)。
例題《First Knight》(NTUJ0803, ICPC4297)
給定m*n (m,n ≦ 40)的地圖,某個人從(1,1)開始移動,給定他在地圖上每個格子時,下一
步會往上下左右走的機率(走到地圖外的機率是0,對於每個格子,往右及往上的機率至少 有一個不是0),若他走到(m,n)即停止移動,求他停止時間的期望值。
§2-3 拉格朗日插值多項式 (interpolation polynomial in the Lagrange form)
有時候我們會需要從一些給定的資料點(x1,y1),(x2,y2),...,(xn,yn)去推出通過這些點的n-1次 多項式。一個方法是假設其各個係數,列出一個線性方程組並使用上一節所提到的方法解決,
而在某些時候如果我們不需要解出完整的係數,只需要求出在某個x值的多項式值時,也可 以採用這個方法:
∑
== n
i i
iQ x
y x
P
1
) ( )
( ,其中
) (
) )(
( ) (
) ( ) )(
( ) ) (
(
1 1
1
1 1
1 ,
1 i i i i i i n
n i
i n
i j
j j i
i
i x x x x x x x x
x x x
x x x x x x
x x x x
Q − − − −
−
−
−
= −
−
= −
+
−
+
−
≠
=
∏
LL LLQi(x)為一個n-1次的多項式使Qi(xi) = 1且對所有i ≠ j,有Qi(xj) = 0。故將Qi(x)以yi加權 求和後即可得欲求之P(x)。
§2-4 牛頓法(Newton’s Method)
在某些問題中我們會需要去求一個方程式f(x)=0的解,如果f(x)是一些簡單的函數,像 一次函數、二次函數等,則我們可以簡單的直接由公式解出。但大部分的情況不是這樣,那 要怎麼辦呢?一個簡單而容易實作的方法是二分搜尋法:由勘根定理,若f(a)>0、f(b)<0,則 在a,b間必有一點c使f(c)=0。所以我們可以將區間一再二分,取d=(a+b)/2,若f(d)<0則a,d
間有根;f(d)>0則d,b間有根,重複到所需精度即可。而在本節中將介紹另一種方法:牛頓法。
右圖為牛頓法執行過程示意圖,做法如 下:首先猜測一個接近根r的點x0,求過 (x0,f(x0))之切線L0,交x軸於一點x1;再取過 (x1,f(x1))之切線L1,交x軸於x2,重複迭代直 至答案收斂至所需精度即可。
即迭代方程式如下:
) (
) (
1
n n n
n f x
x x f
x + = − ′ ,
其中 f′(x)為f(x)之導函數,即在f(x)在x點之 切線斜率。
可以證明牛頓法在f在r附近的導函數值不太小且二階導函數值不太大時將迅速收歛到 r,即此法亦為一種解方程式之方法。此方法亦可推廣到求解一般的方程組,但方法較為複雜 就不再這裡多加敘述。
●Section 3 組合計數 ( Enumerative Combinatorics )
§3-1 基本原理
加法原理(addition principle):將要計數的事情分成n類彼此兩兩不相交,每類有Ci種方 法,則總共有
∑
Ci 種方法。乘法原理(multiplication principle):將要計數的事情分成n步彼此不互相影響,每步有 Ci種方法,則總共有
∏
Ci 種方法。容斥原理(inclusion and exclusion principle):狄摩根定律的推廣,設S1,S2,…,Sn為有限集 合,則有以下兩條式子:
∑ ∑ ∑
<
<
−
<
− +
−
∩
∩ +
∩
−
=
i i j k i
i n k
j i j
i
j i i
i
i S S S S S S S
S
I
U
... ( 1) 1∑ ∑ ∑
<
<
−
<
− +
−
∪
∪ +
∪
−
=
i i j k i
i n k
j i j
i
j i i
i
i S S S S S S S
S
U
I
... ( 1) 1對應:若S,T為有限集合,而 f :S→T為一對一映成函數,即f為S與T之一個一一對 應關係,則S =T 。
接著介紹幾個基本的數,包括n個數字中選k個數字的組合數
)!
(
!
! k n k
n k
Ckn n
= −
= ,及n
個數字中選k個數字作排列的排列數
)!
(
! k n Pkn n
= − ,k種分別有n1,n2,…,nk的物品共有
!
!...
!
)!
...
(
2 1 1
k k
n n n
n
n + + 種排列方式,及x1+x2+…+xk=n共有Ckn+k−1組非負整數解等結果。
還有一個值得注意的結果是帕斯卡原理:Ckn =Ckn−−11+Ckn−1,這個性質可以由加法原理得 到(n個數選k個=選1,並在剩下n-1個選k-1個+不選1,在剩下n-1個選k個),提供了一個 O(n2) 簡單計算出組合數的方法。
§3-2 遞迴關係(recurrence relation)
在數學問題中,遞迴關係是一個遞迴定義序列的方法,其中序列的每一項都定義為其前 幾項的一個函數,例如xn+1 =rxn(1−xn)。而因為序列的首幾項無法由此關係定義,故我們需 要去另外特別指定這個序列的前幾項的初始值。經常,我們可能會需要求出此序列某幾項的 值,或著是需要推出序列的一般式,這時我們就需要一些數學方法的協助。
若要求出一個線性齊次遞迴關係的某一項的值,一個簡單有效的方法是使用矩陣相乘:
譬如對於遞迴關係
+
=
+ +
=
− +
− +
n n n
n n n n
b a b
b a a a
5 2 3
1 1
1
1 ,我們可以利用矩陣來改寫這個遞迴關係,則所求項
之值即為:
⋅
=
⋅
=
− +
+
1 0 1 1
! 1
5 1 0
0 0 1
1 2 3
5 1 0
0 0 1
1 2 3
b a a
b a
a
b a
a n
n n
n
n n n
,則我們可以用快速的矩陣相乘方法在
O(lgn)時間內求得
n
5 1 0
0 0 1
1 2 3
,即可求出an+1,an,bn+1。
而對於求數列一般項的問題,對於一般的序列,有時候我們會需要對遞迴關係進行一些 代數變形,變成我們解的出來的關係,較為複雜,就不在這裡多做介紹。這裡只介紹一個簡 單的方法來解線性齊次遞迴關係的一般項,以費氏數列Fn+2 = Fn+1+Fn,F0 =F1 =1為例,求解 過程如下:我們先猜測Fn =rn代入,則有rn+2 =rn+1+rn,可得r2 =r+1(此方程即此遞迴式的 特徵方程),解得 1, 2
2 5
1± =ϕ ϕ
=
r ,則Fn =c1ϕ1n+c2ϕ2n對所有實數c1,c2均為可行的答案,最 後只要將F0,F1代入求出c1,c2值即可。
例題《Tower》(NTUJ0720, ICPC4387)
a1=1, a2=c, an=2a2an-1-an-2 (n>2),給定c,n,m ≦ 109,求(a12+a22+...+an2)%m。
§3-3 生成函數(generating functions)
生成函數在計數問題上,是一個強力的工具,其意義即將計數的問題,轉換成函數再使 用代數的工具去解決。對一個數列{a0,a1,a2,…},定義其一般型生成函數(ordinary generating function)為f(x)=a0+a1x+a2x2+a3x3+…,而其指數型生成函數(exponential generating function)為
! ...
3
! 2
! ) 1
(
3 3 2 2 1
0+ + + +
= ax a x a x a
x
f ,其中指數型生成函數主要用於排列問題。
x ax
f = −
1 ) 1
( =
∑
n n nx a x
f( )
) 1
1 ( ) 1
( +
= − k x x
f
∑
+
=
n
xn
k k x n
f( )
ex
x
f( )= =
∑
n n
n x x
f( ) !
xr
x
f( )= n
n
n x x r
f
∑
= )
( ,其中
!
) 1 )..(
2 )(
1 (
n
n r r
r r n
r= − − − +
) ( ) ( )
(x g x h x
f = n
n n
k
k n
kb x
a x
f
∑ ∑
=
= −
0
)
( ,ak,bk分別為g(x),h(x)所對應數列
) ( ) (x g x
f = ′ n
n
n x
g n x
f( )=
∑
( +1) +1∫
= g x dx x
f( ) ( ) =
∑
−n
n n
n x x g
f( ) 1
以下以費氏數列為例,簡單的介紹怎麼使用生成函數。
設f(x)為費氏數列之一般型生成函數,則 =
∑
= + +∑
∞ + == − −
∞
= 2
2 1 0
) (
1 )
(
i
i i i i
i
ix x F F x
F x
f
) ( )
( 1
1 2
0 2 0
x f x x xf x
F x x F x
i i i i
i
i + = + +
+
∑ ∑
∞=
∞
=
,即 2
1 ) 1
(x x x
f = − − ,為費氏數列之生成函數。而
由部分分式分解,有
− −
= −
−
= −
−
= −
) 1 ( ) 1 5 ( 1 ) 1 )(
1 (
1 1
) 1 (
2 2 1
1 2
1
2 x x x x
x x x
f ϕϕ
ϕ ϕ ϕ
( )
ϕ∑
∞=
+ + −
=
0
1 2 1
5 1
1
i
i i
i ϕ x
ϕ ,即有
(
1 1 21)
5
1 + +
−
= i i
Fi ϕ ϕ ,用另一種方式求出了費氏數列的一般項。
例題《Chocolate》(PKU1322, ICPC2522)
總共有c種不同顏色的巧克力,每次隨機選出一顆(選取出每種巧克力的機率皆1/c),如果 桌上有一顆該顏色之巧克力,則把選出那顆及桌上那顆一起吃掉;反之則將其放到桌上,
問取出n顆巧克力後,桌上有m顆巧克力的機率有多大?(桌上初始為空)
§3-4 卡特蘭數(Catalan Number)
考慮一系列網格如左下圖,要從網格左下角的(0,0)走到右上角的(n,n),只能往左或往上 走而中途不跨越對角線,此種走法的方法數定義為卡特蘭數Cn,其前幾項如下:{1, 1, 2, 5, 14, 42, … }。
為了求出卡特蘭數的遞迴關係,我們考慮以下的方法(中下圖):考慮第一次碰到對角線的 點,我們可以把路徑拆成碰到前及碰到後共兩段,而在碰到這個點之前所有點均無碰到對角 線,故可以將碰到前的那段刪去第一步及最後一步,則這兩條路徑均為符合中途不跨過對角 線之路徑,且網格大小之和為n-1,易檢驗其為一一對應關係,故可得遞迴式如下:C0=1,
∑
= −+ = n
i
i n i
n CC
C
0
1 ,這個遞迴式也提供了一個 O(n2)的方法來計算C0~Cn。
接著我們考慮卡特蘭數的生成函數f(x),觀察其遞迴式,不難發現其遞迴式與多項式相乘 的關係 (
∑ ∑
=
= −
n
n n
i
i n
ib x
a x
h x g
0
) ( )
( ) 十分相近,故我們可以得到函數關係 f(x)=xf(x)2+1,
解得 x
x x
f 2
4 1 ) 1
( = − − (另一根在x→0時不收斂)。
其實除了遞迴關係外,卡特蘭數也是可以求出封閉表達式的,方法如下:不跨越對角線 的走法數 = 所有走法數- 跨越對角線的走法數。而跨越對角線的走法數可以用一個對應來 計算(如右上圖),考慮第一次跨越對角線的點(即第一次碰到虛線的點),將該點之後的路徑對 虛線反射(灰線),則這是一個從(0,0)到(n-1,n+1)的走法,可驗證此為一一對應,故
= +
− −
=
n n n
n n n
Cn n 2
1 2
1 1
2
2 。值得注意的是在此公式運算中會使用到除法,故通常需要寫 模下的除法或大數運算,較為麻煩,但仍為一種在 O(n)計算C0~Cn的方法。
在組合計數的很多問題中都會遇到卡特蘭數,譬如以下幾個都與卡特蘭數等價:
(1) n個節點可產生的二元樹個數
(2) 在正n邊形中,以三角形分割多邊形的方法數 (3) n對括號可產生的合法匹配數
(4) 族繁不及備載
而在這些問題中,有時把2改成3或其他的數字可以得到另一個數列,稱為廣義卡特蘭 數,其公式為
+ n
kn kn 1
1 ,在這裡不多加介紹。
§3-5 Pólya 計數定理
底下介紹一個解決一類著色問題的方法。首先,我們定義群(group)的概念,群是一個代 數結構,包含了一個集合G及一個操作∗,而一個群必須具有以下幾個性質:
(1)(Closure) ∀x,y∈G,x∗y有定義且x∗y∈G
(2)(Associativity) ∀x,y,z∈G,(x∗y)∗z=x∗(y∗z)=x∗y∗z (3)(Identity element) ∃1∈G使∀x∈S,x∗1=1∗x=x
(4)(Inverse element) ∀x∈G,∃y∈G使x∗y= y∗x=1
例如(Ζ,+)、(Q−{0},×)、Sn=(σn,o )都是群(σn為所有排列所成集合,”。”為合成運算),
值得注意的是一個群不一定要滿足交換律,若滿足則稱之為交換群(abelian group)。σn的元 素稱為一個置換(例如排列3241,可視為一個將1對到3,2到2,…的對應,記作
1 4 2 3
4 3 2 1
或是(134)(2) ),可以證明一個置換可表示為許多個互不相交的循環的乘積(如剛才的(134)、
(2)),其中每個循環稱做一個循環節。如果群G的元素皆屬於σn,或著說G是Sn的子群
(subgroup),則稱G為一置換群(permutation group)。一個置換群的例子是四個格子的旋轉:
四個置換為{(1)(2)(3)(4)、(1234)、(13)(24)、(1432)},分別對應到轉0o、90o、180o、270o。 接著介紹這節所要解決的問題:欲使用k種顏色將一個有n個元素的集合A著色,我們 想要求的是本質不同的塗色方法數。而什麼是本質不同呢?我們給定一個對於這n個元素的
置換群G,如果塗色方法X可經由這置換群的某個元素變換為塗色方法Y,則X與Y是本質
相同的。故我們的問題即為計算在這樣的著色方式下,對於置換群G的等價類(equivalence class)的個數。
Burnside引理:設置換群G作用在一個有限集合X上(即所有塗色方法),則X在G下的
等價類的個數為
∑
∈G g
G1 (g)
χ ,其中χ(g)為集合X在置換g作用下的不動點個數。
例子:考慮在2*2的方格上塗上黑白兩色,置換群G為之前提到的旋轉0o、90o、180o、 270o,則共有六種本質不同的方法: 。而使用Burnside引理計算過 程如下,轉0o之不動點共16個(全部皆不動);90o及270o之不動點皆2個 ;180 o之 不動點共4個 ,故本質不同的方法數為(16+2+4+2)/4 = 6。
儘管Burnside引理可用於計算等價類個數,但是其計算的重點在於如何有效的計算
)
χ(g ,若我們直接枚舉所有可能的塗色方法,則其所耗費的時間是可觀的,故底下介紹了一 個定理以幫助我們有效的計算χ(g)。
定理:若使用k種顏色為有限集合A著色,那麼對於一個置換g,在g下不變的塗色方 法數為χ(g)=kC(g),其中C(g)為g的循環節數。(因為每個循環皆需要塗相同的顏色才能不 變,故方法數為kC( g))
此定理將計算不動點數轉換成了計算循環節數,將其代入Burnside引理即得Pólya定理:
Pólya定理:若使用k種顏色為有限集合A著色,則所有著色方法在G下的等價類的個
數為
∑
∈G g
g
kC
G
)
1 (
,其中C(g)為g的循環節數。
對於先前的例子,四個置換分別有4,1,2,1個循環節,故使用Pólya定理即可得到塗色方 法數為1( 4 1 2 1)
k k k
k + + + ,解決了這類型的計數問題。