群的定義
給定一個集合 \(G=\{a,b,c\cdots\}\) 和集合上的二元運算 "\(*\)",如果滿足以下條件:
(1)封閉性。對於任意的 \(a,b \in G,a*b\in G\) 成立。
(2)結合律。對於任意 \(a,b,c \in G,a*(b*c)=(a*b)*c\) 成立。
(3)存在單位元。 \(G\) 中存在一個元素 \(e\),使得對於 \(G\) 中任意元素 \(a\) ,都有 \(a*e=e*a=a\),元素 \(e\) 為單位元素。
(4)存在逆元。對於 \(G\) 中任意元素 \(a\),恆有一個 \(b \in G\) ,使得 \(a*b=b*a=e\),則元素 \(b\) 為元素 \(a\) 的逆元,記作 \(a^{-1}\)。
則稱集合 \(G\) 是運算 "\(*\)" 下的一個群
置換群
置換,就是給我們一個 \(n\) 個數的排列 $1 , 2 ,\cdots n $ ,我們通過置換得到 \(1 \sim n\) 的對映 \(p_1,p_2,p_3\cdots p_n\)
它們一一對應:\(\binom{1\ 2\ 3\ ...n}{p_{1}\ p_{2} \ p_{3} ...p_{n}}\)
置換實際上就表示為元素位置的變化
集合 \(S\)上的所有置換關於置換的乘法滿足封閉性、結合律、有單位元(恆等置換,即每個元素對映成它自己)、有逆元(交換置換表示中的上下兩行),因此構成一個群
這個群的任意一個子群即稱為置換群
有一種特殊的置換叫做迴圈置換
把 \(m\) 階迴圈記為 \(\binom{a_{1}\ a_{2} ...\ a_{m-1} \ a_{m}}{a_{2}\ a_{3} ...\ a_{m} \ a_{1}}\)
特別的,當 \(m=2\) 時,\(2\) 階迴圈 \((i,j)\) 叫做 \(i\) 和 \(j\) 的對換或換位
Burnside引理
定義 \(G\) 為一個置換群,定義其作用於 \(X\),如果 \(x,y\in X\) 在 \(G\)作用下可以相等即存在 \(f\in G\) 使得 \(f(x)=y\) 則定義 \(x,y\) 屬於一個等價類,則不同的等價類的數量為:
\(|X/G|=\dfrac{1}{|G|}\sum_{g\in G} X^g\)
其中, \(X^g\) 為 \(X\) 在 \(g\) 作用下的不動點的數量,即滿足 \(g(x)=x\)
簡單來說,就是每個置換的不動點的個數的平均值就是不同的方案數
舉一個例子
如圖所示,\(2×2\) 方格中每個格子可以選擇染上\(2\) 種顏色(紅色或白色),那麼總共是 \(2^4=16\) 種情況
現在要問,如不旋轉、順時針旋轉 \(90\) 度、逆時針旋轉 \(90\) 度、旋轉 \(180\) 度後相同的均算成同一種方案,問總共有多少種不同的方案
可以把四種操作分別看成四種置換
分別統計這四種置換下不動點的個數
\(1\)、不旋轉,所有的元素均為不動點,一共有 \(16\) 個
\(2\)、順時針旋轉 \(90\) 度,不動點有 \(1,2\)
\(3\)、逆時針旋轉 \(90\) 度,不動點有 \(1,2\)
\(4\)、旋轉 \(180\) 度,不動點有 \(1,2,11,12\)
答案為 \(\frac{16+2+2+4}{4}=6\)
Polya 定理
對於每一種置換,我們一定可以把它表示為迴圈的形式
定義迴圈的迴圈節為迴圈的個數
設 \(k\) 為顏色種類,\(m(f)\) 為置換 \(f\) 的迴圈節
在置換群中,等價類個數(方案數)等於所有置換 \(f\) 的 \(k^{m(f)}\) 的平均數,即
\(\dfrac{1}{|G|}\sum_{g\in G}m^{c(g)}\)
對於每一個迴圈,如果想讓這個迴圈中有不動點,那麼這個迴圈中所有元素的顏色應該是相同的
而不同的迴圈之間是沒有影響的,所以一個迴圈的答案就是 \(m^{c(g)}\)
同樣是上面的例子
\(1、\)不旋轉,\(f_1 = \binom{1234}{1234} = (1)(2)(3)(4), C(f) = k ^ {m(f)} = 2 ^ 4 = 16\)
\(2\)、順時針旋轉 \(90\) 度,\(f_2 = \binom{1234}{2341} = (1,2,3,4), C(f) = k ^ {m(f)} = 2 ^ 1 = 2\)
\(3\)、逆時針旋轉 \(90\) 度,\(f_1 = \binom{1234}{4123} = (1,2,3,4), C(f) = k ^ {m(f)} = 2 ^ 1 = 2\)
\(4\)、旋轉 \(180\) 度,\(f_1 = \binom{1234}{3412} = (1,3)(2,4), C(f) = k ^ {m(f)} = 2 ^ 2 = 4\)
答案為 \(\frac{16+2+2+4}{4}=6\)
例題
P4980 【模板】Pólya 定理
這道題中一共有 \(n\) 種不同的置換,分別是整體平移 \(1 \sim n\) 個單位
假設平移了 \(i\) 個單位,那麼要平移 \(lcm(i,n)\) 步才能回到起點
那麼迴圈節為 \(\frac{in}{lcm(i,n)}=gcd(i,n)\)
就可以直接套用 \(polya\) 定理
\(ans=\frac{1}{n}\sum\limits_{i=1}^n n^{gcd(i,n)}\)
進行一下莫比烏斯反演,答案就為 \(\sum\limits_{d|n}n^d\varphi(n/d)\)
P1446 [HNOI2008]Cards
因為有使用顏色的限制所以不能直接套用 \(polya\) 引理
而要列舉每一種置換下不動點的個數
因為題目中的洗牌法並不存在單位元,所以強制加入一種所有牌都不變的洗牌法
對於每一個迴圈,他們內部的位置的染色必須是相同的
所以單獨考慮每個迴圈染哪種顏色,可以通過一個類似揹包的過程實現
週末晚會
Irena和Sirup正準備下個週末的Party。為這個Party,他們剛剛買了一個非常大的圓桌。他們想邀請每個人,但他們現在不知道如何分配座次。Irena說當有超過K個女孩座位相鄰(即這些女孩的座位是連續的,中間沒有男孩)的話,她們就會說一整晚的話而不和其他人聊天。 Sirup沒有其他選擇,只有同意她。然而,作為一名數學家,他很快地痴迷於所有可能方案。 題目說明: N個人圍繞著圓桌坐著,其中一些是男孩,另一些是女孩。你的任務是找出所有合法的方案數,使得不超過K個女孩座位是連續的。 迴圈同構會被認為是同一種方案。對於100%的資料N,K < = 2000;mod 100000007
可以把迴圈看成 \(n\) 種置換
那麼要統計的就是每一種置換下不動點個數的平均數
如果 \(n \leq k\) ,那麼就沒有任何限制,可以直接套一個 \(polya\) 引理
否則,就要用 \(dp\) 去統計方案
設 \(f[i]\) 為序列的首尾都放男孩,並且不超過 \(k\) 個女孩的座位是連續的方案數
轉移也很簡單, \(f[i]=\sum_{j=i-k-1}^{i-1}f[j]\)
統計答案的時候要從 \(1\) 到 \(n\) 列舉每一種置換 \(i\),那麼迴圈節就是 \(gcd(i,n)\)
通過旋轉這個迴圈節可以得到其它迴圈節
這些迴圈節是完全相同的,所以只需要統計一個迴圈節的答案即可
那麼貢獻就是 \(\sum_{j=gcd(i,n)-k}^{gcd(i,n)} f[j] \times (gcd(i,n)-j+1)\)
後面乘上的部分是因為我強制了第一個選男生,但實際上第一個位置是可以選女生的
我可以把後面的每一個女生都旋轉到前面來
P4128 [SHOI2006] 有色圖
圖的同構問題
\(Polya\) 定理是用來解決點置換的,但是這道題要求的是邊置換
那麼就考慮邊的兩個端點分別在哪個迴圈中
分為兩類:
\(1\)、邊的兩個端點在同一迴圈中
設迴圈的長度為 \(b\)
如果端點之間的間距不同,那麼兩條邊一定不在一個等價類中
又因為是在迴圈中,所以間距 \(x\) 也可以看成間距 \(b-x\)
那麼等價類的個數就是 \(\left\lfloor\frac{b}{2}\right\rfloor\)
\(2\)、邊的兩個端點在不同迴圈中
設這兩個迴圈的長度分別為 \(b_1,b_2\)
每一個邊的迴圈的大小都是 \(lcm(b_1,b_2)\)
那麼邊的等價類的個數就是 \(\frac{b_1b_2}{lcm(b_1,b_2)}=gcd(b_1,b_2)\)
設點的迴圈的長度為 \(b_1,b_2,b_2 \cdots b_k\)
那麼最終的答案就是
現在的問題就是如何列舉 \(b\)
因為 \(n\) 的範圍比較小,所以可以考慮 \(dfs\) 從大到小加數
對於每一個列舉出來的 \(b\) ,我們還要知道具體有多少置換是這樣的
首先對於所有的點進行全排列,就是一個 \(n!\)
又因為每一個迴圈內部都是迴圈同構的,所以要除掉 \(b_i\)
而且我們強行給長度相同的迴圈規定了順序
所以對於長度為 \(i\) 的迴圈,如果它出現了 \(s_i\) 次,還要給最後的結果除掉 \(s_i!\)
要除以的是給指數取模的時候要模 \(phi\) ,而不能模 \(mod\)