Sensul folosirii metodelor "greedy"
Printr-un algoritm greedy găsim foarte rapid o colorare, dar găsim o colorare optimă numai dacă știm (și în general nu știm) în ce ordine ar trebui să abordăm nodurile; totuși, putem recolora graful respectiv după ce-i permutăm aleatoriu vârfurile, repetând până ce (sperând că încă rapid) nimerim vreo ordine care conduce la o colorare optimă.
Asupra implementării algoritmului clasic de colorare
Bineînțeles că un "algoritm de colorare" nu vizează colorarea fizică, a nodurilor grafului…
Avem un "Orarul general clase", adus deja la forma normală a datelor, cls|obj|zl|ora (specificând pe câte o linie de date, clasele, disciplinele, zilele și orele când se desfășoară lecțiile în școala respectivă); lipsesc profesorii care fac lecțiile (adică valorile variabilei prof) și vrem să vedem care ar fi numărul minim de profesori pentru a acoperi lecțiile la o anumită disciplină conform orarului "pe clase" existent pentru acea disciplină.
De data aceasta folosim pachetul Python GCol, specializat pe colorarea grafurilor.
Servindu-ne de "Orarul general clase" — care prezintă pe zile și ore, disciplinele de la fiecare clasă — putem constitui, de exemplu pentru "Mate", un graf G în care două clase sunt adiacente dacă au "Mate" într-o aceeași zi și oră (trebuind să aibă profesori diferiți); numărul cromatic al acestui graf ne va spune câți profesori ar fi necesari pentru acoperirea lecțiilor existente pe acea disciplină (respectând alocarea inițială pe zile și ore a acestora), iar o colorare pe vârfuri a lui G ne-ar da o încadrare pe clase (mai mult sau mai puțin acceptabilă) a profesorilor respectivi.
Colorarea pe profesori a disciplinelor - Bis
Corecție la funcția care dă orarul unuia dintre profesorii cu care anterior, am colorat graful asociat cu "Orarul general clase".
vezi Cărţile mele (de programare)