Č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]

Reference уреди

Literatura уреди