1. 程式人生 > >polya計數學習小結

polya計數學習小結

最近半個月以來一直在看《組合數學》,馬馬虎虎也算翻完了,理解的也很淺,接下來的一個月中,我將把主要精力放在做數學題上同時鞏固總結這一
個月以來所學的數論組合數學知識。那就先從Polya計數法開始吧。
Burnside定理:
首先介紹一下有關置換群的一些知識。
置換:
設X是一個有限集。取X為包含前n個整數的集合{1,2,3...,n},X的每一個置換a1,a2,a3,..,an可視為X到其自身定義的一個一對一的函式。如{1,2.3}
的一個置換可為{2,1,3}。
置換群:
如果Sn中的置換的非空子集G滿足如下三條性質,則定義它為X的一個置換的群,簡稱置換群:
1.(合成元素的封閉性)對G中所有置換f與g,f與g的合成f·g也屬於G。
2.(結合律)對G中的置換f,g,k,有(f * g) * k == f * (g * k);
3.(單位元)Sn中的恆等置換E屬於G。
4.(逆元的封閉性)對G中的每一個置換f它的逆f'也屬於G。
鋪墊工作做完,下面正式介紹Burnside定理。
考慮用紅藍兩色將一個正方形的4個頂點進行著色正方形可旋轉翻轉,置換群為G,C是著色集合,問不等價著色數。
由於適當選取f和c,可使得f*c = c,所以定義G(c)為使著色c保持不變的G中的所有置換的集合,定義C(f)為在f作用下使色c保持不變的所有置換的集
合。稱G(c)為穩定核。
定理1:
對於每一種著色c,c的穩定核G(c)是一個是置換群,且對G中的任意置換f與g,g*c = f*c當僅當f'·g屬於G(c).
證明:
G(c)是置換群證明略。
對X中的第i個元素,f*c(i) = c(k),g*c(k) = c(h)且(f·g) * c(i) = c(h),所以關係g * (f*c) = (g·f) * c ,又
f' * g * c = f' * (g*c) = f'* (f*c) = (f'·f) * c = c;
所以f'·g屬於G(c),假設f'·g屬於G(c)
f'·g * c = c;
f' * f * c = c;
所以g*c == f*c;
定理1得證。
推論1:
設c為C的一種著色,那麼與c等價的著色數等於 |G|/|G(c)|;
證明:
設f是G中的一個置換,根據定理1,滿足f*c = g*c的置換g實際就是|f·h,h(-G(c)|中的置換。g的個數就等於h的個數|G(c)|。對於每一個f存在
|G(c)|個置換,其作用在c上跟f有同樣效果。總共|G|個置換,所以與c等價的著色數等於|G|/|G(c)|。
推論得證。
Burnside定理:
N(G,C) = SUM(C(f))/|G|.C中不等價的著色數等於使著色通過G中的置換保持不變的著色的平均數。
證明:
思路採取兩種不同方法進行計數,然後計數結果相同。所計的數是f*c = c的對偶(f,c)的個數。
計數法一,累加每一個f保持著色不變的著色數即 SUM(C(f))。
計數法二,由推論1|G(c)| = |G|/(與c等價的著色數),所以結果為SUN(|G|/(與c等價的著色數)),又因為
在同一等價類中,兩種著色對求和貢獻了同樣的量,每個等價類總貢獻是|G|。即結果可簡化為N(G,C)×|G|。
定理得證!
由於在實際應用中,SUM(C(f))的計算經常會比較困難,為解決這一問題著名的polya計數出現了。


Polya計數公式:
Burnside定理之所以能夠計數不等價著色數,與它能夠計算C(f)有關,而C中的原色不變是f保持的,通過考慮置換的迴圈結構計算可變得容易簡便。
例:
f = (1 2 3 4 5 6 7 8)
6 8 5 4 1 3 2 7
對於{1,2,..8}上的置換,1-6-3-5-1(4-迴圈),餘下整數保持不變,我們記為[1 6 3 5],即f = (1 2 3 4 5 6 7 8)
6 2 5 4 1 3 7 8
據此根據合成運算可將f因子分解成f = [1,6,3,5]·[2,8,7]·[4].推廣之對於X上任一置換f都有
f = [i1,i2...ip]·[j1,j2..jp]·[l1,l2...lp]
將此定義為f的迴圈因子分解。
定理2:
設f為X上的一個置換,假如用k種顏色對X的元素進行著色,令C是X的所有著色集合,置換f的新迴圈因子分解中迴圈的個數是#(f),
則f保持c終於顏色不變的個數為|C(f)| = k^#(f).
證:
要滿足f*c == c,則迴圈因子分解後每個迴圈中個元素的的顏色數必然相同,#(f)個迴圈,每個迴圈的顏色都有k中選擇,所以總共著色數為k^#(f)。
證畢。
根據定理2,我們可以得到
polya公式(simple版)

N(G,C) = SUM(k^#(f)) / |G|

這樣我們只要知道G中個置換的迴圈因子分解個數,即可求出C中不等價著色數。
為了對更一般的著色集C求出不等價的著色是數,我們對G中的置換引進一個生成函式。
假設f的迴圈因子分解成e1個1-迴圈,e2個2-迴圈,en個n-迴圈,滿足1*e1 + 2*e2 + ... +n*en == n,我們稱n元組(e1,e2,e3...en)是f的型
記為type(f) = (e1,e2,..,en),
同時設我們引入一個n個不定元,z1,z2,z3...zn,定義
mon(f) = (z1^w1)(z2^e2) ...(zn^en)
得到生成函式
SUN(mon(f)) = SUM((z1^w1)(z2^e2) ...(zn^en))
合併上是同類項,(z1^w1)(z2^e2) ...(zn^en)的係數等於型為(z1^w1)(z2^e2) ...(zn^en)的G中f的個數。G的迴圈指數定義
P(G)(z1,z2,...zn) = SUM((z1^w1)(z2^e2) ...(zn^en)) / |G|;
由上定理其實即可得到
定理3:
N(G,C) = P(G)(k,k,...,k)

利用定理3,要求C中不等價著色數,我們只要知道G中各型別的置換的個數即可。但這仍然可能很難應用。我們希望能有某種有效的方法計算更一般的
著色集C。下面我們將用G的迴圈指數求出當使用的各顏色次數為指定個數時不等價的著色數。
在f迴圈因子分解中有e1個一階迴圈,e2個二階迴圈。。。en個n階迴圈。為簡便起見,假設只有兩種顏色,色r,色b,根據定理3可得
P(G)(r+b,r^2+b^2,...r^n+b^n)中(r^p)(b^q)的係數為p個元素著r色,q個元素著b色的不等價著色數。由此我們可推出:
Polya公式(final版!)
X是一個集合元素,G是X的一個置換群,{u1,u2,..,u3}是k種顏色的一個集合,C是X的任意著色集並且G是C上的一個置換群,那麼根據各顏色的數目,
C的不等價著色數的生成函式石油迴圈指數P(G)(z1,z2,..,zn)通過做變數代換
zj = u1^j + u2^j + ... + uk^j (j = 1...n)
而得到的表示式是
P(G)(u1+...uk,u1^2+...+uk^2,...,u1^n+...+uk^n)
上式中(u1^p1)(u2^p2)...(uk^pk)的係數等於X中的p1個元素著顏色u1,.....,pk個元素著顏色uk的C中不等價著色數。

相關推薦

polya計數學習小結

最近半個月以來一直在看《組合數學》,馬馬虎虎也算翻完了,理解的也很淺,接下來的一個月中,我將把主要精力放在做數學題上同時鞏固總結這一 個月以來所學的數論組合數學知識。那就先從Polya計數法開始吧。 Burnside定理:首先介紹一下有關置換群的一些知識。 置換:設X是一個

Polya計數 學習筆記

置換 基本概念 置換是相對與群(當然我們討論的是有限群= =)而言的一種操作。 通常我們這樣來表示 (1a12a23a3⋯⋯nan)(123⋯na1a2a3⋯an) 它的意義是對於新的排列,編號為aiai的元素將被編號為ii的元素所取代(不是位置)

burnside引理+polya計數小結

WC上wwwwodddd講的整數和多項式相關裡面最後又burnside引理的一部分 被生成函式調戲瘋了的我突然斷線重連 坐在禮堂最後一排的沙發位上和老黃人瘋狂口糊 不過聽課的時候想的不是很細,重新整理了一發 大概就是 本質不同的方案數=1置換個

置換群&Polya計數簡易版學習筆記

置換群&Polya計數簡易版學習筆記 前言 這個定理其實我學了蠻久的,就是一直一直沒有掌握,原因是太抽象,而且證明也沒怎麼理解,今天看了Candy?大佬的部落格,結合自己少得可憐的抽象代數知識,總算是搞懂了一點點,趕緊來發一波blog 問題引入 抽象的東西自然要把

纏中說禪學習小結圖譜

提醒 模式 www 趨勢 包括 包含 表示 小結 一中 1,筆,頂分型+至少1根K線+底分型=筆,頂與底之間的其它波動可以忽略不計。但一定要是相鄰的頂與底! 2,線段,三筆為一線段:一個線段,除非是缺口,否則必須由至少上下上或下上下的三折所組成。 只要互相相鄰的上或下不

React學習小結(二)

display lin body -a 頁面 return 有時 borde size 一、組件的嵌套 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UT

React學習小結(三)

color render pro sed nbsp 合數 白雪 方式 內部 一、React數據的傳輸 1、屬性和狀態是react中數據傳遞的載體 2、屬性是聲明以後不允許被修改的東西 3、屬性只能在組件初始化的時候聲明並傳入組件內部,並且在組件內部通過this.props

OC學習小結之ios運行過程詳解

for cat 用戶 with res nbsp c學習 launch cati 1)ios核心類 UIView 視圖,屏幕上能看得見的東西都是視圖,例如:按鈕、文本標簽、和表格等 UIViewController:內部默認有個視圖(UIView),負責管理UIView的

python學習小結

www 技術 二維 學習 設計 格式 name 字符串 循環 1學習的課程名字叫什麽 python:前端初識html,後臺基礎flask 2怎麽輸出一句話,用代碼舉例 輸出用:print 例如: 3使用終端工具怎麽運行 Python代碼 例如我要運行題目2的程序,我的py文

POJ 2409-Let it Bead(Polya計數)

algorithm target lib tails link mod art typedef data- 題目地址:POJ 2409 題意:給一個包括s個珠子的項鏈,用c種顏色對其染色,問存在多少個不同的項鏈。 思路:和上一篇POJ 1286幾乎相同。 #i

組合數學及其應用——polya計數

固定 更多 符號 .com 過程 嘗試 容易 高中 立方體 在處理類似下面的問題中,一般的計數方法會出現問題:假如你要用紅、藍兩種顏色給一個正四面體的四個頂點著色,試問存在多少種不同的著色方案? 在高中我們常用的方法是模擬塗色過程,分情況討論,然後基於分步乘法原理

抽象類和接口學習小結

write 普通 繼承 調用 抽象方法 實例 add 一個 抽象 區別:1.本質區別是抽象類描述這個類是什麽,而接口則是描述這個類可以做什麽功能。2.接口的方法都是publice3.抽象類被繼承時,子類要實現父類所有抽象方法,要overwrite關鍵字4.抽象類可以包含字段

201671010130 2016-2017-2 《Java程序設計》第二周學習小結

博客 返回 由於 程序 使用 spa family 浮點 multi 學習Java第三章小結 本周我學會了: 首先是解決關於解決運行程序前出現了錯誤提示“editor dose not contain a main type”程序無法運行”的問題,通過網友的博客http:

201671010130 2016-2017-2 《Java程序設計》第四周學習小結

ext ray size 強制 什麽 分離 rar nic 相減 第四周學習小結 本次實驗鞏固了上次實驗分隔數並求和的題,目前這個題有兩種做法,一種是不斷對數10求余,余數保存在sum中,然後左移一位,直到余數為零。另一種就是將數字強制轉換成一個字符串數組String s

C++第四周學習小結

str 利用 strong 忘記 c++ 記得 頭文件 動手 獲取 本周小結: ①學會了簡單的輸入輸出 ②要記得加對應的頭文件,否則編譯會出錯 ③不能只拘泥於已學的知識,要學會自己尋找解決問題的辦法,自己動手獲取新知識,善於利用資源 下周計劃: 跟上老師的進度的同時要主動預

javascript高級程序設計學習小結1

高級程序設計 十進制 下載 延時 窗口 bool dom fine 包含 1. 一個完整的javascript實現由三部分組成:核心(ECMAScript)、文檔對象模型(DOM)以及瀏覽器對象模型(BOM),ECMAScript就是對標準規定的如語法、類型、語句、關鍵字、

javascript高級程序設計學習小結3

har cte url all view call 進行 擁有 發送請求 DOM2級只是在DOM1級的基礎上通過增加新方法和新屬性來增強既有類型,Node類型的變化: localName(不帶命名空間前綴的節點名稱), namespaceURI(命名空間URI或者null)

2017 ACM區域賽現場賽 青島站 E (polya計數

amp mod 循環 等價 img cout es2017 範圍 知乎 題目鏈接(暫無) 吐槽:這場比賽感覺對我感覺還算友好,雖然Q群知乎上命題方已經被噴死了,C語言上機題還有字符串題有大腿隊友輕松搞定,網絡流恰是我能想出來的,E本來也應該是在能力範圍內,不過因為之前沒寫過

201671010130 2016-2017-2 《Java程序設計》第十二周學習小結

滾動 截取 所有 成員變量 創建組 常用組件 按鈕 容器 學習小結 抽象窗口工具箱(Abstract Window Toolkit, AWT)包含在java.awt包中提供了許多用來設計GUI的組件類和容器類 組件在容器(比如JFrame)中的位置和大小是由布局管理器來決

文本查詢程序——標準庫學習小結

出現的次數 mes ati clu insert res static stat 文件 程序:允許用戶在一個給定文件中查詢單詞,查詢結果是單詞在文件中出現的次數及其所在行的列表。如果一個單詞在一行中出現多次,此行只列出一次。 #include <iostream&g