A Misra és Gris élszínező algoritmus egy polinomiális idő algoritmus a gráfelméletben , amely bármely gráf élszínezését megtalálja . A színezéshez maximum szín szükséges, ahol a grafikon maximális foka . Ez az érték néhány gráf esetében optimális, és a Vizing-tétel szerint egy színnel több, mint a többi gráf optimális színezése.
Az algoritmust 1992-ben publikálta Jayadev Misra és David Gries [1] . Bolobash Béla [2] algoritmusának egyszerűsítése .
Ez az algoritmus a leggyorsabb az ismert, közel optimális élszínező algoritmusok közül, időben végrehajtva . Egy gyorsabb algoritmust végül Gabov és munkatársai egy 1985-ös technikai jelentésben jelentettek be, de soha nem publikálták [3] .
Általános szabály, hogy az optimális élszínezés NP-teljes probléma, ezért nem valószínű, hogy létezik polinomiális idő algoritmus erre a problémára. Léteznek azonban olyan algoritmusok az élek pontos színezésére, amelyek exponenciális futási idővel optimális megoldást adnak.
Azt mondjuk, hogy egy x szín hiányzik az u csúcsból , ha minden (u, z) E(G) esetén.
Az u csúcsban lévő legyező az F[1:k] csúcsok sorozata, amely teljesíti a következő feltételeket:
Adott egy F ventilátor, bármely él (F[i], X) a ventilátor éle . Legyen c és d két szín. A cd X útvonal az az útvonal, amely áthalad az X csúcson, csak c és d színű éleket tartalmaz , és maximális ({c, d} színnel nem adhatunk élt). Figyeljük meg, hogy X-nek csak egy ilyen útja van, mivel minden színnek legfeljebb egy éle lehet egy adott csúcsgal szomszédos.
Adott egy X csúcs F [1: k ] ventilátora, a "ventilátorforgatás" művelet a következőket teszi (egyidejűleg):
Ez a művelet helyesen hagyja a színezést, mert minden i -nél hiányzott a szín a -ból .
A "cd X elérési út újraszínezése" művelet az elérési út összes c színét d-re és d színt c - re változtat . Az útvonal megfordítása hasznos lehet egy szín felszabadításához X-ben, ha X az útvonal végső csúcsa - ha az X csúcs szomszédos volt a c színnel, de nem a d színnel , akkor most szomszédos lesz a d színnel, de nem a c színnel, ami felszabadítja a színt c egy másik X-szel szomszédos élre. A művelet alkalmazása nem sérti a színezés megengedhetőségét, mivel a végcsúcsoknál a {c, d} színek közül csak az egyik lehet szomszédos a csúcsgal, és az útvonal többi eleme esetén a művelet csak az élek színét váltja, új szín nem kerül hozzáadásra.
Belépő: Gróf.
Kimenet: A G gráf éleinek megfelelő színezése
Legyen U := E(G)
Amíg U ≠ ∅ végrehajtódik
vége viszlát
Az algoritmus helyességét három lépésben bizonyítjuk. Először is megmutatjuk, hogy a cd u útvonal átszínezése garantálja a w csúcsot úgy, hogy az egy rajongó, és d hiányzik w -ből . Akkor ez az élszínezés helyes és nem igényel több színt.
Az útvonal újrafestése előtt két eset van:
F [ x ] lehet , vagy nem szerepel a cd u útvonalban . Ha az elérési út nem tartalmazza, akkor az átszínezés nem befolyásolja az F [ x ] hiányzó színkészletét, és d hiányzik belőle. feltehetjük . Ellenkező esetben megmutathatjuk, hogy F fan marad, d pedig hiányzik F [ k ]-ból. Mivel d hiányzott az F [ x ]-ből az átszínezés előtt, és F [ x ] az útvonalon van, ezért F [ x ] a cd u útvonal végső csúcsa, és c hiányozni fog az F [ x ]-ből az átszínezés után . Az átfestés színe d -ről c -re változik . Aztán mivel c most hiányzik az F [ x ]-ből és az (1) teljesül, F ventilátor marad. Továbbá d hiányzik F [ k ]-ben, mert F [ k ] nincs a cd u útvonalon (feltételezve, hogy az úton van, de mivel d hiányzik az F [ k ]-ból, ez kell, hogy legyen az út végpontja, de a végpontok u és F [ x ]). Válasszunk .
Mindenesetre a ventilátor az F előtagja , ami azt jelenti, hogy az is ventilátor.
Ez a színes élek számának matematikai indukciójával kimutatható . Indukciós alap: nincsenek színes élek, a színezés megfelelő. Indukciós lépés: Tegyük fel, hogy a színezés helyes volt az előző iterációban. Az aktuális iterációnál az útvonal átszínezése után d hiányzik u -ból , és az előző eredmény szerint w -ből hiányzik . A forgatás nem rontja el a megfelelő színezést. Ezután a beállítás után a színezés megfelelő marad.
Egy adott lépésben csak c és d színek használhatók . Mivel u legalább egy színtelen éllel szomszédos, és foka korlátos , legalább egy szín elérhető c számára . d esetén F [ k ]-nek lehet foka , és nem lehetnek színezetlen szomszédos élei. Akkor szükséged lehet virágokra.
A forgatás minden lépésben eltávolítja az él színezését (u, w), míg a korábban színtelen éleket (u,F[1]) és (u, v) színezi. Így egy további színes él jelenik meg. Ezért a ciklus egyszer végrehajtásra kerül. A maximális ventilátor, c és d színek megtalálása és a cd u útvonal átszínezése időben elvégezhető . A w megtalálása és az F' elforgatása időbe telik. Egy él (u, v) megkeresése és törlése történhet egy veremmel konstans időben (az utolsó elem lekérésének művelete), és ez a verem időben kitölthető . Így a hurok minden egyes művelete időt vesz igénybe, és az algoritmus teljes futási ideje .