又看了一遍《组合数学》(讲得真好)
Orz。
对稳定核
G
(
c
)
G(c)
G(c)的理解:
∀
f
∈
G
(
c
)
\forall f\in G(c)
∀f∈G(c),有
f
∗
c
=
c
f*c=c
f∗c=c。
而对于
∀
f
∈
G
\forall f\in G
∀f∈G,若
f
∗
c
=
g
∗
c
f*c=g*c
f∗c=g∗c,则
f
−
1
∘
g
f^{-1}\circ g
f−1∘g必然在
G
(
c
)
G(c)
G(c)中,而任意两个不同置换得到的
g
g
g不同,这说明了
g
g
g的个数就是
G
(
c
)
G(c)
G(c)。
于是可以得到:对于任意一种颜色 c c c,共有 ∣ G ( c ) ∣ |G(c)| ∣G(c)∣个置换使得染色方案 c c c不变,有 ∣ G ( c ) ∣ |G(c)| ∣G(c)∣个置换使得 c c c变为 c 1 c_1 c1,有 ∣ G ( c ) ∣ |G(c)| ∣G(c)∣个方案使得 c c c变为 c 2 … c_2\dots c2…,与 c c c等价的染色数就是 ∣ G ∣ ∣ G ( c ) ∣ |G|\over |G(c)| ∣G(c)∣∣G∣,并可以推出同一等价类中的染色方案的稳定核大小相等。
计数满足 f ∗ c = c f*c=c f∗c=c的 ( f , c ) (f,c) (f,c)的个数,分别从两种角度考虑,并令其相等。
对每一个等价类
L
L
L,
∑
c
∈
L
∣
G
(
c
)
∣
=
∣
G
∣
\sum_{c\in L}|G(c)|=|G|
∑c∈L∣G(c)∣=∣G∣
设等价类个数为
l
l
l,那么
∑
L
∑
c
∈
L
∣
G
(
c
)
∣
=
l
∗
∣
G
∣
\sum_L\sum_{c\in L}|G(c)|=l*|G|
L∑c∈L∑∣G(c)∣=l∗∣G∣
所以
l
=
1
∣
G
∣
∑
L
∑
c
∈
L
∣
G
(
c
)
∣
=
1
∣
G
∣
∑
f
∈
G
∣
C
(
f
)
∣
l=\frac 1{|G|}\sum_L\sum_{c\in L}|G(c)|=\frac 1{|G|}\sum_{f\in G}|C(f)|
l=∣G∣1L∑c∈L∑∣G(c)∣=∣G∣1f∈G∑∣C(f)∣
至于Polya定理,就是用来计算
C
(
f
)
C(f)
C(f)的,记
f
f
f置换的循环个数为
k
k
k,颜色数为
m
m
m,则
C
(
f
)
=
m
k
C(f)=m^k
C(f)=mk。
对于一个圆置换,移动 i i i步的置换,1要移动 n g c d ( i , n ) \frac n{gcd(i,n)} gcd(i,n)n次回到1(最小的k使得 k i ≡ 0 ( m o d n ) ki\equiv0~(mod ~n) ki≡0 (mod n)),所以循环个数为 n n g c d ( i , n ) = g c d ( i , n ) \frac n{\frac n{gcd(i,n)}}=gcd(i,n) gcd(i,n)nn=gcd(i,n)。这可以用来方便地计算 C ( f ) C(f) C(f),对于 n n n较大的情况,可以枚举gcd然后乘 φ \varphi φ。
补充:
除了常见的旋转和翻转置换,还存在对于颜色变换的置换(比如颜色
i
→
i
+
d
i\rarr i+d
i→i+d的循环置换)。
2
∗
n
2*n
2∗n个对位置的置换和
m
m
m个对颜色的置换组合,构成了大小为
2
∗
n
∗
m
2*n*m
2∗n∗m的置换群(容易验证几个置换群的性质),经过同样的证明可以得出此种情况下染色方案的等价类个数依然等于每种置换的不动点数的平均值。
但是注意此时同一个循环内的颜色不一定相同,是经过置换的,假设循环大小为
k
k
k,颜色分别为
(
a
1
,
a
2
,
.
.
.
a
k
)
(a_1,a_2,...a_k)
(a1,a2,...ak),颜色置换为
d
d
d,那么有
a
1
+
d
=
a
2
,
a
2
+
d
=
a
3
,
.
.
.
,
a
k
+
d
=
a
1
a_1+d=a_2,a_2+d=a_3,...,a_k+d=a_1
a1+d=a2,a2+d=a3,...,ak+d=a1,可推出应有
k
∗
d
≡
0
m
o
d
m
k*d\equiv0\bmod m
k∗d≡0modm,由此可得
d
d
d的取值有
g
c
d
(
k
,
m
)
gcd(k,m)
gcd(k,m)种。
例:HDU 6427 Problem B. Beads