【有限制的 Pólya+矩陣快速冪】poj2888

神題神題~~被他折磨了一下午,不過大大加深了我對 Pólya 和 Burnside 的理解。

 

初學 Pólya 和 Burnside 的時候發現數學太重口味了,背了個公式草草走人,今天爲了做這道題可是費了血本把組合數學的書翻出來看,哎,都怪組合數學課上YY去了。

 

 花了1個小時的時間強啃,總算是有了些收穫,小小的總結下。

 

首先是幾個名詞:

1.着色方案;

2.置換,置換羣;

3.不動置換,對於某個着色方案,置換之後仍爲自己的置換,叫不動置換;

4.穩定核,對於某種着色方案的不動置換的集合。

 

對於所有着色方案,有些是同構的,而且同構是具有傳遞性的,比如a和b同構,b和c同構,那麼a和c是同構的。

一個比較直觀的想法:所有本質不同的着色方案=∑(1/和該方案同構的方案數)。

 

因此求出每個方案與之同構的方案數就是當前的任務。

定理:與方案同構的方案數=(置換羣個數)/(穩定核個數);

 

這是怎麼得出來的?

假設 f 爲一個置換,c 爲一個着色方案,g 爲 c 的一個不動置換。

∵g*c=c,f*c=f*c

∴ f*g*c=f*c

可以得,f 和 f*g 這兩個置換作用在 c 上的效果是一樣的。

所以和 f 置換效果一樣的置換一共有(c的穩定核個數)個,對於置換羣中每一個置換作用在 c 上產生的新着色方案,這些新着色方案與 c 同構,且每一個新着色方案都被重複計算了 (穩定核個數)次,所以

定理:與 c 的方案數=(置換羣個數)/(穩定核個數) 得證。

 

再一步步帶上去,可得

所有本質不同的着色方案=∑((穩定核個數)/(置換羣個數)){所有着色方案}。

 

一一計算每一個着色方案的穩定核個數是不可取的,相反的,考慮每一個置換會是多少個着色方案的不動置換,這樣就變成了我們最熟悉的式子:∑C(g)/|G|。

對於最普通的着色問題,式子就可以簡化成:∑MP(g)/|G|。

 

現在回到這道題:每個置換實際上相當於是把這個環平均分成很多份(鏈)然後相鄰的鏈相等就算同構。

我們需要計算的是每一個置換會是多少個着色方案的不動置換,因爲是不動置換,所以分成的很多鏈式相等的,因此我們只需要考慮一條短鏈的情況就可以了。

問題轉化成爲:一條長度爲L的鏈,相鄰兩個珠子顏色有限制,求方案數。

 

對於L很大的情況,這就是個經典的矩陣連乘的題目了。

 

因爲N比較大,考慮使用歐拉函數進行優化,枚舉置換的循環節個數L,那麼和他等價的置換羣一共有 phi(N/L)種,我們需要枚舉的僅僅是N的約數個數,算法複雜度爲 O(N0.5logNM3)。

 

 

發佈了69 篇原創文章 · 獲贊 15 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章