這是群論
置換群是群論的一種:
必須要知道的:
理解一下
這里置換就是旋轉同構的表示,方案就是“染色方案”
m種置換,假如所有可能的方案,每種同構的方案都算了m次。(每種置換都有一次),那么直接除以m即可。
但是有的方案並沒有被計算m次。例如旋轉同構的11111只計算了1次。
為了都出現m次,保證能直接除法,就把少算的加上,最后除以m
burnside引理的思想就是這樣。
更具體地,我們稱不動點表示一個置換下置換前后不動的方案。
顯然對於每個置換的不動點,那么這個不動點會在總方案中少出現一次(起碼這個置換不會多一次),就要補上1
所以,
本質不同的“染色方案”,就是每個置換下不動點的個數除以置換數。
polya定理相當於一個輔助。
對於每個置換下的不動點個數提供了計算方法:
=顏色^環個數
環就是一個連等式。移動到的位置和自身必須相等。
當然,這只是對於顏色可以隨便填的情況可以直接算。
對於不能隨便填的情況,polya定理也給我們提供了思路:每個環每個環相對獨立地考慮。
例題:
[ACM] POJ 2409 Let it Bead (Polya計數)
基礎題。
置換只有n種旋轉(包括元置換),和翻轉。
對於翻轉,奇偶討論一下環個數即可。
旋轉i次,環個數gcd(n,i),環長都是n/gcd(n,i)
ax=0 mod y 所以ax=ty=lcm(x,y) 所以a=lcm(x,y)/x=y/gcd(x,y)
每個環都相等,所以環個數:gcd(n,i)
統計不動點之和。再除以置換數
如果都是這樣的題就沒有意思了
出題人會在置換的枚舉和不動點的計算上設計麻煩。
1.置換的枚舉優化:一些置換本質上是一樣的:環的種類個數都一樣。對於旋轉同構可以枚舉gcd,對於n!的完全置換,可以自然數拆分(n不能太大<=80)
因為本身統計不動點也是和環有關系。環的組合就少了很多
2.不動點的枚舉:一般還是考慮從環入手,環內部的,環之間的有時都要考慮。題目的一些要求會對每個環內顏色的填法,不是非常無腦,就要額外進行特殊處理了。經常用到dp
靈活統計
hdu 5868 Different Circle Permutation
上一題的弱化版。
[HNOI2008]Cards
好題。比較靈活運用了burnside引理和polya定理的思想。
[HNOI2009]圖的同構記數
上題削弱版。
相當於每個邊有兩種顏色。有或者沒有。
配贈福利:
二維旋轉同構(旋轉一行或者一列,共n×m種置換)
對於右移i個,下移j個:
環個數n×m/lcm(n/gcd(i,n),m/gcd(j,m))
枚舉a=n/gcd(i,n)和b=m/gcd(j,m)
方案數乘上:phi(a)phi(b)
復雜度:O(約數個數×約數個數)
大概一個環長這樣子: