Gries邊著色算法

Gries邊緣著色算法是圖論中的多項式時間算法,可以找到任何圖形的邊緣著色。 著色產生最多使用Δ+ 1種顏色,其中Δ是圖的最大程度。 這對於某些圖是最佳的,並且根據Vizing定理,它最多使用一種顏色而不是所有其他顏色的最佳顏色。

它於1992年由Jayadev Misra和David Gries首次出版。 它是BélaBollobás對先前算法的簡化。

基本介紹

  • 中文名:Gries邊著色算法
  • 外文名:Gries edge coloring algorithm
算法,證明正確,複雜度,

算法

輸入:圖表G。
輸出:G邊緣的適當著色c。
讓 U:= E(G)
while U ≠ ∅ doLet (u,v) be any edge in U.Let F[1:k] be a maximal fan of u starting at F[1]=v.Let c be a color that is free on u and d be a color that is free on F[k].Invert the cdu pathLet w ∈ V(G) be such that w ∈ F, F'=[F[1]...w] is a fan and d is free on w.Rotate F' and set c(u,w)=d.U := U - {(u,v)}end while

證明正確

算法的正確性分為三個部分。 首先,示出了cdu路徑的反轉保證了頂點w,使得w∈F,F'= [F [1] ... w]是扇形,並且d在w上是自由的。 然後,顯示邊緣著色是適當的並且需要至多Δ+ 1種顏色。
1、路徑反轉是正確的;
2、邊緣著色是正確的;
3、該算法最多需要Δ+ 1種顏色。

複雜度

在每個步驟中,旋轉使邊緣(u,w)展開,同時著色先前未著色的邊緣(u,F [1])和(u,v)。 因此,一個額外的邊緣變色。 因此,循環將運行O(| E |)次。 找到最大風扇,顏色c和d並反轉cdu路徑可以在O(| V |)時間內完成。 找到w並旋轉F'需要O(deg⁡(u))∈O(| V |)|)時間。 查找和刪除邊(u,v)可以使用常量時間的堆疊(彈出最後一個元素)完成,並且可以在O(| E |)時間內填充此堆疊。 因此,循環的每次疊代花費O(| V |)時間,並且總運行時間是O(| E | + | E | | V |)= O(| E | | V |)。

相關詞條

熱門詞條

聯絡我們