1. 程式人生 > >ACM中的【數學知識】之【組合數學】(一) Polya定理的簡單理解 POJ 1286

ACM中的【數學知識】之【組合數學】(一) Polya定理的簡單理解 POJ 1286

因為數學渣,Polya定理不是很清楚,但其實際操作大概如下。

解釋下上圖。

N個位置,K種顏色放置。

x1,x2,x3,x4,……,xn

(x1,x2,x3……xn)∈{1 2 3 4 …… K}

放置總數為上圖

|G| 是【所有的(被定義的)置換(也就是變化的方式)】的個數

——被定義就是說,某變化為M,任意情況A經過變化M變為B,A和B算作同一種情況。

k就是K

c(f) 是【某種置換的迴圈節】:

——這是什麼意思的

比如說

3種顏色(K==3)

1 2 3 4 四個位置

我定義【旋轉變化】和【不變】是同一種情況(注意,不變也算是一種【變化】,因為不變之後等效於原來)

【不變】就是 【1 to 1】【2 to 2】【3 to 3】【4 to 4】有四個【】,所以c(f)算作4

【旋轉】分為幾種分別是

【轉一次】——【1 to 2】【2 to 3】【3 to 4】【4 to 1】這個【】可以合併為【 1 to 2 to 3 to 4 to 1】 所以 從c(f)=1;

【轉兩次】——【1 to 3】【2 to 4】【3 to 1】【4 to 2】這個【】可以合併為【 1 to 3 to 1】【2 to 4 to 2】 所以 從c(f)=2;

【轉三次】——【1 to 4】【2 to 1】【3 to 2】【4 to 3】這個【】可以合併為【 1 to 4 to 3 to 2 to 1】 所以 從c(f)=1;

PS:如果把【不變】不單獨算,而是算作【轉四次】的話

【轉四次】——【1 to 1】【2 to 2】【3 to 3】【4 to 4】這個【】不能合併  所以 從c(f)=4;

所以總可能數

就是

K^(1+2+1+4)/4==24

POJ 1286

除去上面的【旋轉】和【不變】

再多一個【翻轉】操作

對於n個數

n 為奇數

共 n 種翻轉,每種 的 c(f)==(n+1)/2

n為偶數

n/2 種 c(f)==n/2

n/2 種 c(f)==n/2+1

具體程式碼可自行度娘