Misra & Gries kenar renklendirme algoritması - Misra & Gries edge coloring algorithm

Misra & Gries kenar renklendirme algoritması bir polinom zamanı algoritma grafik teorisi bulur kenar boyama herhangi bir grafiğin. Renklendirme, en çok renkler, nerede maksimum derece grafiğin. Bu, bazı grafikler için idealdir ve Vizing teoremi diğerleri için en uygun olandan en fazla bir renk kullanır.

İlk olarak tarafından yayınlandı Jayadev Misra ve David Gries 1992'de.[1] Önceki bir algoritmanın basitleştirilmesidir. Béla Bollobás.[2]

Bu algoritma, kenar renklendirme için bilinen en hızlı neredeyse optimal algoritmadır. zaman. Daha hızlı bir zaman sınırı Gabow ve diğerleri tarafından 1985 tarihli bir teknik raporda iddia edildi, ancak bu hiçbir zaman yayınlanmadı.[3]

Genel olarak, optimum kenar renklendirme NP-tamamlanmıştır, bu nedenle bir polinom zaman algoritmasının mevcut olma olasılığı çok düşüktür. Ancak üstel zaman vardır tam kenar renklendirme algoritmaları en uygun çözümü veren.

Hayranlar

Bir fan F = [x_1, x_2, x_3] / v (kesikli kenarlar renksizdir), (v, x_1), (v, x_2), (v, x_3) fan kenarlarıdır. F '= [x_1, x_2] aynı zamanda v'nin bir hayranıdır, ancak maksimum değildir.

Bir renk x olduğu söyleniyor Bedava bir kenarın (u, v) üzerinde sen Eğer c (u, z)x hepsi için (u, z) ÖRNEĞİN) : z ≠ v.

Bir hayran bir tepe noktası u, aşağıdaki koşulları karşılayan bir F [1: k] köşe dizisidir:

  1. F [1: k], u'nun farklı komşularının boş olmayan bir dizisidir
  2. (F [1], u) E (G) renksiz
  3. (F [i + 1], u) 'nun rengi F [i]' de 1 ≤ i
Örneklerof cdx yollar: ac, cg, gd kırmızı-yeşildir_c yol ve bd, dg kırmızı-turuncud yol.

Bir F fanı verildiğinde, 1 ≤ i ≤ k için herhangi bir kenar (F [i], X) a fan kenarı. C ve d renkler olsun. Bir cdX-yol X tepe noktasından geçen bir kenar yoludur, yalnızca c ve d renkli kenarları içerir ve maksimumdur ({c, d} içinde olmayan bir renge sahip kenarları içereceği için başka bir kenar ekleyemeyiz). Her rengin en fazla bir kenarı belirli bir tepe noktasına bitişik olabileceğinden, bir X tepe noktası için böyle bir yolun var olduğuna dikkat edin.

Bir fanı döndürmek

Fanı döndürmek F = [x1x2x3] soldaki sağdaki fan ile sonuçlanır

Bir hayran verildi F[1:k] bir tepe noktası X"fan döndürme" işlemi aşağıdakileri yapar (paralel olarak):

  1. c (F [i], X) = c (F [i + 1], X)
  2. Renksiz (F [k], X)

Bu işlem, renklendirmeyi her biri için geçerli bırakır. ben, c(F[ben + 1], X) tarihinde ücretsizdi (F[ben], X).

Bir yolu ters çevirmek

Kırmızı-yeşili tersine çevirmeka Soldaki grafikten yol, sağdaki grafikte sonuçlanır.

"Cd'yi ters çevirme" işlemiX-yol ", c'den d'ye ve her kenarı d'den c'ye renklendiren yoldaki her kenarı değiştirir. Bir yolu ters çevirmek, X, yolun uç noktalarından biriyse, X'de bir rengi serbest bırakmak için yararlı olabilir: X, renge bitişikse c ama d değil, artık c rengine bitişik olacak, c'ye bitişik başka bir kenar için c'yi serbest bırakacak. Çevirme işlemi renklendirmenin geçerliliğini değiştirmeyecek çünkü uç noktalar için yalnızca {c, d} tepe noktasına bitişik olabilir ve yolun diğer üyeleri için işlem yalnızca kenarların rengini değiştirir, yeni renk eklenmez.

Algoritma

algoritma Misra & Gries kenar renklendirme algoritması dır-dir    giriş: Bir grafik G. çıktı: G'nin kenarlarının uygun bir c renklendirmesi, U: = E (G) olsun. süre U ≠ ∅ yapmak        (U, v) U'da herhangi bir kenar olsun. F [1: k], F [1] = v'den başlayarak u'nun maksimal bir fanı olsun. C, u üzerinde serbest olan bir renk ve d, F [k] tarihinde ücretsizdir. CD'yi ters çevirinsen yol w ∈ V (G), w ∈ F, F '= [F [1] ... w] bir fan ve d w üzerinde serbest olacak şekilde olsun. F 'yi döndürün ve c (u, w) = d ayarlayın. U: = U - {(u, v)} bitince

Doğruluğun kanıtı

Algoritmanın doğruluğu üç kısımda kanıtlanmıştır. İlk olarak, cd'nin tersine çevrilmesininsen yol bir tepe noktası garanti eder, öyle ki w ∈ F, F' = [F[1]...w] bir hayran ve d ücretsizw. Daha sonra kenar renklendirmesinin uygun olduğu ve en fazla Δ + 1 renk gerektirdiği gösterilmiştir.

Yolu ters çevirme garantisi

Ters çevirmeden önce iki durum vardır:

  1. Fanın renkli kenarı yok d. Dan beri F maksimal bir hayran ve d ücretsiz F[k], bu renkli kenar olmadığı anlamına gelir d bitişiğinde senaksi takdirde, olsaydı, bu kenar daha sonra olurdu F[k], gibi d ücretsiz F[k], fakat F maksimaldi, bu bir çelişkidir. Böylece, d ücretsiz sen, dan beri c ayrıca ücretsiz sen, CDsen yol boştur ve ters çevirmenin grafik üzerinde hiçbir etkisi yoktur. Ayarlamak w = F[k].
  2. Fanın renkli bir kenarı vardır d. (U, F [x + 1]) bu kenar olsun. Bunu not et x (U, F [1]) renksiz olduğundan + 1 ≠ 1. Böylece, d ücretsiz F[x]. Ayrıca, x ≠ k fanın uzunluğu olduğundan k ama var bir F[x + 1]. Şimdi, ters çevirmeden sonra her biri için y ∈ {1, ..., x − 1, x + 1, ..., k}, rengi (F[y + 1], sen) F [y] tarihinde ücretsizdir. Ters çevirmeden önce, renginin (senF[y + 1]) değil c veya d, dan beri c ücretsiz sen ve (senF[x + 1]) renklidir d ve renklendirme geçerlidir. Ters çevirme yalnızca renkli kenarları etkiler c veya d, yani (1) tutar.

F[x] içinde olabilir CDsen yol ya da değil. Değilse, ters çevirme, üzerindeki serbest renkler setini etkilemeyecektir. F[x], ve d üzerinde özgür kalacak. Ayarlayabiliriz w = F[x]. Aksi takdirde bunu gösterebiliriz F hala bir hayran ve d serbest kalır F[k]. Dan beri d serbest kaldı F[x] ters çevirmeden önce ve F[x] yolda, F[x] bir uç noktadır CDsen yol ve c özgür olacak F[x] ters çevirmeden sonra. Ters çevirme, (senF[x + 1]) d -e c. Böylece c şimdi ücretsiz F[x] ve (1) tutar, F hayran olarak kalır. Ayrıca, d serbest kalır F[k], dan beri F[k] üzerinde değil CDsen yol (varsayalım ki; çünkü d ücretsiz F[k], o zaman yolun bir uç noktası olması gerekir, ancak sen ve F[x] uç noktalardır). Seçiniz w = F[k].

Her durumda, fan F'önekidir F, Hangi ima F'aynı zamanda bir hayran.

Kenar renklendirmesi uygun

Bu, tarafından gösterilebilir indüksiyon renkli kenarların sayısı. Temel durum: hiçbir kenar renkli değil, bu geçerlidir. Tümevarım adımı: Bunun önceki yinelemenin sonunda doğru olduğunu varsayalım. Geçerli yinelemede, yolu ters çevirdikten sonra, d özgür olacak senve önceki sonuçta da ücretsiz olacak w. Dönen F'renklendirmenin geçerliliğinden ödün vermez. Böylece, ayarlandıktan sonra c(sen,w) = drenklendirme hala geçerlidir.

Algoritma en fazla Δ + 1 renk gerektirir

Belirli bir adımda yalnızca renkler c ve d kullanılmış. Dan beri sen en az bir renksiz kenara bitişiktir ve derecesi Δ ile sınırlandırılmıştır, {1, ..., Δ} içinde en az bir renk mevcutturc. İçin d, F[k] derece Δ ​​olabilir ve renksiz bitişik kenarı olmayabilir. Bu nedenle Δ + 1 rengi gerekli olabilir.

Karmaşıklık

Her adımda, dönüş, daha önce renksiz olan kenarları (u, F [1]) ve (u, v) renklendirirken kenarın (u, w) rengini açar. Böylece bir ek kenar renklenir. Dolayısıyla döngü çalışacak zamanlar. Maksimum fanı, c ve d renklerini bulmak ve cd'yi ters çevirmeksen yol yapılabilir zaman. W bulmak ve F 'döndürmek zaman. Kenarı (u, v) bulmak ve kaldırmak, sabit zamanda bir yığın kullanılarak yapılabilir (son öğeyi aç) ve bu yığın, zaman. Böylece, döngünün her yinelemesi ve toplam çalışma süresi .

Referanslar

  1. ^ Misra, Jayadev; Gries, David (1992). "Vizing teoreminin yapıcı bir kanıtı" (PDF). Bilgi İşlem Mektupları. 41 (3): 131–133. doi:10.1016 / 0020-0190 (92) 90041-S.
  2. ^ Bollobás, Béla (1982). Grafik teorisi. Elsevier. s. 94.
  3. ^ Gabow, Harold N .; Nishizeki, Takao; Kariv, Oded; Leven, Daniel; Terada, Osamu (1985), Kenar renklendirme grafikleri için algoritmalar, Tech. Rapor TRECIS-8501, Tohoku Üniversitesi