Opis programa GraphColoring

Program GraphColoring poisce minimalno barvanje danega grafa. Najde optimalno resitev in jo prikaze. Ce je vec resitev, najde eno izmed njih. Uporablja metodo razveji in omeji.

PODATKOVNE STRUKTURE IN SPREMENLJIVKE

Graf je predstavljen s petimi vektorji (glej sliko 1): Med delovanjem program uporablja sklad (glej sliko 2). Na sklad shranjuje mozna nadaljevanja v obliki trojk (tocka, barva, Tmin): V spremenljivki minbarv je zapisano trenutno najmanjse stevilo potrebnih barv. Na zacetku je minbarv enaka stevilu vseh tock v grafu.

V polju R je zapisano trenutno minimalno barvanje. Na zacetku je v R taksno barvanje, kjer ima vsaka tocka svojo barvo.

ALGORITEM

 daj na sklad trojko (0,1,1)                //prva tocka, prva barva
 minbarv = stevilo tock v grafu
 R = barvanje, kjer ima vsaka tocka svojo barvo
 while sklad ni prazen {
   vzami s sklada trojko (T,B,Tmin)
   if (Tmin < minbarv) {                    //ali se splaca uporabiti
     pobarvaj tocko T z barvo B
     if (T == zadnja tocka) {               //nova, boljsa resitev
       shrani barvanje v R
     } else {
       razveljavi barve tock, ki sledijo T  //priredimo jim barvo 0
       U = T + 1                            //naslednja tocka
       M = mnozica moznih barv za tocko U   //le barve, ki so ze v grafu
       if (Tmin+1 < minbarv) {
         daj na sklad trojko (U,nova barva,Tmin+1)
       }
       za vse barve iz M {
         daj na sklad trojko (U,barva,Tmin)
       }
     }
   }
 }
 pobarvaj tocke tako, kot je shranjeno v R

RAZLAGA ALGORITMA

Algoritem isce v globino. Na vsakem koraku ugotovi, koliko barv je ze porabil. Vsako tocko poskusa pobarvati z vsemi ze obstojecimi barvami (ki jih nimajo sosednje tocke) in z eno novo barvo. V globino gre tako globoko, dokler ne ugotovi:
  1. Porabil je ze toliko barv, kot jih vsebuje trenutno najboljsa resitev, v tem primeru se ne splaca nadaljevati, ker ne bomo izboljsali resitve.
  2. Pobarval je vse tocke, v tem primeru smo nasli novo resitev, ki je boljsa od vseh prejsnjih.
Algoritem se konca, ko ni vec nobene moznosti, ki bi lahko vodila k boljsi resitvi.

ZAHTEVNOST ALGORITMA

Algoritem GraphColoring ima v najslabsem primeru eksponentno casovno in prostorsko zahtevnost.

| Diagram poteka | | Izvorna koda | | Primer delovanja | GraphColoring |

Copyright 1996, 2011 Robert Meolic