圖染色(Coloring)
染色數(Coloring Index)
圖的染色分為點染色(vertex coloring)和邊染色(edge coloring)
點染色指的是構造映射 \(f_k\colon V(G)\mapsto \left\{\;1,2,\ldots k\;\right\}\),一個合法的染色(proper coloring) 則要求映射滿足 \(\forall xy\in E(G)\Rightarrow f_k(x)\neq f_k(y)\),記 \(k\) 為這個染色方案的染色數(chromatic number)。通常我們只關心最小的染色數,記作 \(\chi(G)\)
下面討論的染色都指的是proper coloring
邊染色則是類似地構造 \(f_k\colon E(G)\mapsto \left\{\;1,2,\ldots k\;\right\}\),proper的則要求滿足 \(\forall e_1,e_2\in E(G),\; e_1\cap e_2\neq\varnothing\Rightarrow f_k(e_1)\neq f_k(e_2)\)
類似地定義 \(\chi\prime (G)\) 為最小的邊染色數
關於染色最經典的問題就是著名的“四色定理”的證明。定理的證明非常長.....有興趣也不會去看的
團(clique)和獨立集(independent set)
團的定義為 \(G\) 的完全子圖,即 \(H\subseteq G\) 且 \(2||H||=|H|(|H|-1)\)
定義clique number為最大團的大小,記為 \(\omega(G)=\max \left\{\;H \text{ is a clique}\mid H\subseteq G\;\right\}\)
定義反團(co-clique)為 \(\overline G\) 的團,即 \(G\) 的一個獨立集。同樣定義 co-clique number 為最大獨立集的大小,記為 \(\alpha(G)\)
容易有如下數量關系:
- \(\alpha(G)\cdot \chi(G)\geqslant |G|\)
- \(n-\alpha(G)\geqslant \chi(G)-1\)
- \(\chi(G)\geqslant \omega(G)\)
- \(\binom{\chi(G)}{2}\geqslant ||G||\)
1直接由每個獨立集染上同一種顏色得到
2的意思是給最大的獨立集染上一種顏色,剩下的點用 \(\chi(G)-1\) 種顏色染
3的意思是團內部的顏色互不相同
4的意思是同色點之間不能連邊,因此至多連 \(\binom{\chi(G)}{2}\) 條邊
圖的色多項式
對圖 \(G\) 用 \(k\) 種顏色染色(我們認為每個節點都不一樣)的方案數是關於 \(G\) 和 \(k\) 的函數,我們不妨記作 \(F(G,k)\)
對 \(|G|\) 進行歸納。當 \(|G|=1\) 的時候 \(F(G,k)=k\)
設當 \(|G|<n\) 時成立,則 \(|G|=n\) 的時候,考慮 \(xy\in E(G)\)
只有兩種情況:
- \(x,y\) 同色,此時可以把 \(x,y\) 收縮成一個點而不改變方案數
- \(x,y\) 異色,此時就是 \(F(G,k)\)
於是 \(F(G,k)+F(G\circ xy,k)=F(G-xy,k)\)
很容易看出這是一個多項式,並且首項系數和次項系數與 \(|G|\) 和 \(||G||\)有關
染色的貪心算法
關於染色的證明通常通過構造給出一個最小染色數的上界。構造出染色方案的一種常見算法是所謂“貪心算法”,用如下步驟描述:
- 維護已經染色的點集 \(V'\) 和未染色的點集 \({V}''\)
- 任取 \(x\in V''\),給 \(x\) 染上 \(N(x)\cap V'\) 中未出現、且最小的顏色
- 把 \(x\) 從 \(V''\) 中刪去,再加入 \(V'\) 中
- 若 \(V''=\varnothing\) 則結束算法,否則回到步驟2
容易發現這個算法並不總能給出較好的染色數的界,但仍然給出了一個結果,並且算法的結果與給節點染色的順序十分相關,因此我們要結合以下引理來改進以下這個算法的效果。
引理一
取圖 \(G\) 中的任意點 \(s\),都存在 \(V(G)\) 的一個排列 \(v_1,v_2,\ldots v_{n-1}, s\) 使得 \(\forall 1\leqslant i< n\) 都有 \(\exists j>i,\;v_j\in N(v_i)\)。
為了好記我把這個叫排列引理
只需要構造出這樣的序列即可。我們取 \(G\) 中以 \(s\) 為根的生成樹 \(T\),每次從 \(T\) 中取出葉子,這樣就能保證每個點在被放進序列時都有至少一個鄰居在它的后面,且根是一定放在最后的。
這樣結合貪心染色可以得到 \(\chi(G)\leqslant \max\left\{\;\text{deg}(s)+1,\Delta(G-s)\;\right\}\)
引理二
若非完全圖 \(G\) 滿足 \(\delta(G)\geqslant 3\) 且 \(\kappa(G)\geqslant 2\),那么 \(\exists x,y\in V(G)\) 使得 \(\exists v\in V(G),\; xv,yv\in E(G)\text{ and } xy\not\in E(G)\)
並且有 \(G-\left\{\;x,y\;\right\}\) 仍然連通。
取 \(G\) 的一個極小分隔集 \(T\),則 \(|T|=\kappa(G)\geqslant 2\)。記 \(C\) 為 \(G-T\) 形成的連通分支的集合,那么有 \(\forall x\in T\),\(\forall c_i\in C,\; N_G(x)\cap c_i\neq\varnothing\)
於是取 \(v\in T\),令 \(x,y\) 分別取自不同的分支,那么必然有 \(xy\not\in E(G)\text{ and } xv,yv\in E(G)\)。
並且刪去 \(x,y\) 后它們所屬的分支仍然連通(\(\kappa(c_x)\geqslant 2\text { and }\kappa(c_y)\geqslant 2\)),\(\left\{\;c_x,c_y,x\;\right\}\) 仍然連通(\(\text{deg}(x)\geqslant 3\)),得到一個矛盾
染色數的平凡上界
任意圖 \(G\) 都有 \(\chi(G)\leqslant \Delta (G)+1\)。
這個上界直接由貪心算法得到。
Brooks Theorem
\(G\) 是連通圖,那么 \(\chi(G)=\Delta(G) + [G \text{ is complete or an odd cycle}]\),其中 \([x]=1\) 當且僅當表達式 \(x\) 為真。
首先 \(G\) 是完全圖的情況很顯然,奇數圈的情況也很簡單,反證法就可以說明不存在方案了。
然后 \(\Delta(G)\leqslant 2\) 的情況也很好討論,就是一個圈,因此下面討論的都是 \(\Delta(G)\geqslant3\) 的圖。
對於 \(G\) 不是完全圖也不是奇數圈的情況我們對 \(|G|\) 歸納證明:
當 \(|G|=3\) 時,\(G\) 不是完全圖也不是圈,因此 \(G\) 只能是鏈,染色就很顯然了;
設當 \(|G|< k\) 時命題成立,則取 \(|G|=k\) 的圖,分如下幾種情況討論:
- \(\kappa(G)=1\),即 \(G\) 存在一個割點 \(x\),則 \(G=G_1\cup G_2\),其中 \(G_1\cap G_2=\left\{\;x\;\right\}\)。那么我們對 \(G_1\)、\(G_2\) 分別染色,由歸納假設得到他們方案的並就是 \(G\) 的一個合法染色方案,因此 \(\chi(G)=\max\left\{\;\chi(G_1),\chi(G_2)\;\right\}\leqslant\max\left\{\;\Delta(G_1),\Delta(G_2)\;\right\}\leqslant \Delta(G)\) 得證。
- \(\kappa(G) \geqslant 2\),且存在 \(x\in V(G)\) 使得 \(\text{deg}(x)<\Delta(G)\),則根據引理一構造 \(x\) 在最后的序列並貪心染色,這樣就有 \(\chi(G)\leqslant\Delta(G)\)
- \(\kappa(G)\geqslant 2\),且 \(\forall x\in V(G)\) 都有 \(\text{deg}(x)=\Delta(G)=\delta(G)\),則根據引理二存在 \(x,y,v\in V(G)\) 使得 \(xv,yv\in E(G)\) 且 \(xy\not\in E(G)\)。我們把 \(x,y\) 染上同種顏色,根據引理一把 \(v\) 放在序列末尾,這樣就可以貪心地染出 \(\chi(G)\leqslant \Delta(G)\) 了。
圖的定向(orientation)
圖定向的嚴格定義是構造映射 \(f\colon E(G)\mapsto V(G)\times V(G)\),簡單地說就是給無向邊定方向
我們稱有向無環圖(Directed Acyclic Graph) 為DAG,DAG有許多優秀的性質
DAG的染色算法
對於給定的有向無環圖 \(G\),我們給出如下染色算法步驟:
- 我們需要維護一個映射 \(g\colon V(G)\mapsto \mathbb N^+\),\(g(x)\) 表示以節點 \(x\) 為終點的最長路長度。
- 找到 \(x\in V(G)\) 使得 \(x\) 的入度為0,在 \(N_G(x)\) 中找到已經走過的點中 \(g(v)\) 的最大值,令 \(g(x)=g(v)+1\)
- 刪去 \(x\),標記 \(x\) 已經走過了。若還有未經過的點則返回步驟2
細心的朋友們很快就可以發現這是一個拓撲排序上的計數。很顯然 \(g\) 下任意相鄰節點的函數值都不相等。於是我們caim:找到的映射 \(g\) 就是一個染色方案。
不妨記 \(p(G)\) 表示DAG圖 \(G\) 中最長路的長度,那么有 \(\chi(G)\leqslant p(G)\)
復雜度是可以做到 \(\Theta(n+m)\) 的
利用圖定向給出染色數的緊界
不妨設 \(H\) 是圖 \(G\) 的任意一個定向,\(K\) 是 \(H\) 極大的不含有向圈的子圖,那么有:
\(\chi(G)\leqslant p(K)\),並且存在一個定向使得它們恰好相等
這個結論是很強的。不等號的部分在DAG的染色中已經給出,我們只需要考慮 \(E(G)\backslash E(K)\) 中的邊加入后會不會產生相同顏色的相鄰節點就好了。由 \(K\) 的定義可知 \(\forall uv\in (E(G)\backslash E(K))\),有 \(K+uv\) 會產生一個有向圈,即 \(K\) 中存在一條 \(v-u\) 有向路,這保證了 \(g(v)\neq g(u)\)
下面證明存在一個定向的極大無圈子圖 \(K\) 使得 \(p(K)=\chi(G)\)。我們只需要證明 \(p(K)\leqslant\chi(G)\)
首先用 \(\chi(G)\) 給 \(G\) 染色,然后對 \(G\) 定向:若 \(uv\in E(G)\) 有 \(c(u)<c(v)\),則構造定向 \(f(uv)=(u,v)\),否則 \(f(uv)=(v,u)\)
即我們規定邊只能從小顏色連向大顏色。這樣 \(K\) 中路的長度至多為 \(\chi(G)\),也就是 \(p(K)\leqslant \chi(G)\)
這個定向實際上是在枚舉所有貪心算法的操作序列,也就是說存在至少一種操作的順序使得我們trivial的貪心算法能夠摸到 \(\chi(G)\) 的門檻。
平面圖的五色定理
四色定理太難勒,這里有一個比較好玩的弱化版本——任意平面圖(plane graph)/可平面圖(planar graph)是5-可着色(colorable)的
引理一
極大可平面圖有等式 \(||G||=3|G|-6\) 成立
推論1:平均度為 \(\frac{2||G||}{|G|}=\frac{6|G|-12}{|G|}<6\),因此 \(\exists x\in V(G)\) 使得 \(\text{deg}(x)\leqslant 5\)
推論2:極大可平面圖刪去任意點仍然是可平面圖,因此 \(\forall x\in V(G)\) 都有 \(\text{deg}(x)\geqslant 3\)
引理二
極大可平面圖中任意點的鄰居導出一個圈
只需要找到一個平面畫法,刪去這個點,觀察這個點所在的區域的邊界即可。
可平面圖不好直接做,因此我們向 \(G\) 加邊直至 \(G\) 成為極大可平面。只需證明新圖 \(G'\) 仍然是 5-可染色即可。
我們對極大可平面圖的大小歸納。當 \(|G|=1\) 是顯然的。
設當 \(|G|<n\) 時成立,則 \(|G|=n\) 時取 \(x\in V(G)\)
討論:
- \(\text{deg}(x)<5\),則由貪心算法可知加上 \(x\) 也不需要超過5種顏色。
- \(\text{deg}(x)=5\),則 \(x\) 有恰好 \(5\) 個鄰居
- 若5個鄰居中存在兩個顏色相同,則染上 \(x\) 也只需要至多5種顏色
- 若5個鄰居互不相同,則需要特殊討論。
現在來看2.2的情況。根據引理二我們得到5個點共圈,不妨按順序記為 \(v_1, v_2,\ldots v_5\),其顏色分別為 \(c_1,c_2\ldots c_5\) 那么我們做如下操作:
- 把 \(v_1\) 的顏色換成 \(c_3\)
- 把與 \(v_1\) 距離為1的點中,顏色為 \(c_3\) 的點的顏色換成 \(c_1\)
- 把距離為2的點做同樣操作....
- 直到不存在可以更改顏色的點剩下。
若流程終止了,則我們通過switch得到了一個染色方案,而 \(c(v_1)\neq c(v_3)\),即5個鄰居只用了4種顏色,那么 \(G\) 就是5-可染色的了。
若最后一直換到了 \(v_3\),即存在一條 \(v_1-v_3\) 路,使得路上的節點顏色交替為 \(c_1,c_3,c_1,c_3\ldots c_3\),那么此次交換無效(沒有達到預期的目的)
再類似地考慮 \(v_2,v_4\),若成功則證明完畢,否則存在一條 \(v_2-v_4\) 顏色交替路
注意到 \(G\) 是平面圖,因此不存在這樣兩次都失敗的情況(why?),即 \(v_2-v_4\) 和 \(v_1-v_3\) 必然相交。因此證畢。
二分圖的染色
這個非常sb,二分圖嘛,黑白染色黑白染色,\(\chi(G)=2\)
還有邊染色的部分,先去吃飯...
回來填坑了
圖的邊染色
具體定義見上面
首先給出一個簡單的關於邊染色的界的結論:
\(\forall G\), \(\chi'(G)\geqslant \Delta(G)\)
這個界的證明非常簡單,只需要找到度數最大的節點,給它的邊染上顏色就好了
二分圖的邊染色
若 \(G\) 是二分圖,則 \(\chi'(G)=\Delta(G)\)
首先有 \(\chi'(G)\geqslant\Delta(G)\),因此只需要證明 \(\chi'(G)\leqslant\Delta(G)\) 即可
我們對 \(||G||\) 歸納,設當 \(||G||<n\) 時命題成立,則取 \(xy\in E(G)\),\(\chi'(G-xy)\leqslant\Delta(G-xy)\leqslant\Delta(G)\)
考慮加入 \(xy\) 這條邊,那么\(\text{deg}_{G-xy}(x)\leqslant\Delta(G),\text{deg}_{G-xy}(y)\leqslant\Delta(G)\)。不妨記 \(M(x)\) 為 \(x\) 相鄰的邊中沒被用過的顏色,則分兩種情況討論:
- \(M(x)\cap M(y)\neq\varnothing\),則給 \(xy\) 染上 \(M(x)\cap M(y)\) 中的任意一種顏色,\(\chi'(G)\leqslant\Delta(G)\)
- \(M(x)\cap M(y)=\varnothing\),則 \(\exists a\in M(x), b\in M(y)\) 使得 \(a\not\in M(y),b\not\in M(x)\)。類比點的染色,我們嘗試通過交換來讓出一種顏色。即令 \(x\) 鄰邊中染上 \(b\) 顏色的邊換成 \(a\) 顏色,並沿着這條邊走向一個鄰居;再令這個鄰居染上 \(a\) 顏色的鄰邊換成 \(b\) 顏色..... 直至走到一個不用換顏色的節點,則停止
- 我們claim這樣的走法一定能換成功,即使走回了起點。原因在於這是一個二分圖,所有的圈都是偶圈,而我們交替地走着 \(a,b,a,b,\ldots\) 的邊,因此最后必然可以走出一條路(這樣就直接交換顏色)或一個圈(這樣就相當於輪換了一圈的顏色)
於是就證完了
一個任意圖的更強的界
事實上 \(\forall G\) 都有 \(\Delta(G)\leqslant\chi'(G)\leqslant\Delta(G)+1\)
這個證明有點麻煩,咕了吧(
