Čejtinov algoritam
Čejtinov algoritam je odozdo-nagore algoritam za bojenje grafova koji koristi alokaciju registara, a kao meru za pražnjenje registara koristi jedinicu cena/stepen. Ovaj algoritam osmislio je Gregori Čejtin, po kome nosi ime. Čejtinov algoritam je bio prvi algoritam, koji koristi alokaciju registara, koji je iskoristio bojenje grafova kako za alokaciju registara tako i za njihovo pražnjenje.
Čejtinov algoritam je predstavljen i objavljen 1982. na SIGPLAN Simpozijumu o konstrukciji kompilatora. To je bio nastavak ranijeg rada iz 1981. godine koji se bavio bojenjem grafova za alokaciju registara. Čejtinov algoritam predstavlja osnovu velikog dela istraživanja koja se bave alokacijom registara.
Pseudokod
[уреди | уреди извор]Neka je dat graf G, koji sadrži čvorove N stepena manjeg od R. Graf G je R-bojiv ukoliko graf G' (gde je G' graf G sa uklonjenim čvorom N) R-bojiv.[1]
Dokaz je očigledan.
- Pretpostavimo da je graf G R-bojiv. Onda nam je i graf G' sigurno R-bojiv.
- Pretpostavimo da nam je graf G' R-bojiv. Pošto nam je čvor N stepena manjeg od R mora postojati bar jedna boja kojom nije obojen nijedan susedni čvor čvora N. Tom bojom možemo obojiti N. Dakle G je R-bojiv.
Pseudokod algoritma glasi:
While G cannot be R-colored While graph G has a node N with degree less than R Remove N and its associated edges from G and push N on a stack S End While If the entire graph has been removed then the graph is R-colorable While stack S contains a node N Add N to graph G and assign it a color from the R colors End While Else graph G cannot be colored with R colors Simplify the graph G by choosing an object to spill and remove its node N from G (spill nodes are chosen based on object’s number of definitions and references) End While
Složenost Čejtinovog algoritma je: [1]