Nella ricerca di un orario che vada bene sarà necessario tener conti di quelli che vengono definiti vincoli. Come suggerisce la parola stessa non tutti gli orari sono leciti, ad esempio potrebbe essere necessario imporre che ogni professore abbia al più un'ora di buco al giorno, oppure al massimo tre ore di buco a settimana. Queste limitazioni sono per l'appunto definite vincoli.
Voglio fare un esempio banale per spiegare il problema. Supponiamo di avere un gruppo di 100 persone, e tra queste di voler selezionare un gruppo di persone con determinate caratteristiche. Queste caratteristiche sono i vincoli che noi mettiamo al problema.
Nel nostro esempio potremmo volere che la persone selezionate:
- siano di sesso maschile
- abbiano i capelli biondi
- portino i jeans
- abbiano più di 35 anni
- portino gli occhiali
- abbiano gli occhi verdi
- pesino più di 75 chili
- siano alti al più un metro e sessanta
Ora voi direte... se, vabbè, ma con tutti questi vincoli quando le trovi delle persone che li soddisfano in quel gruppo di 100?
Ecco un problema chiave. Definiamo come insieme delle soluzioni l'unione di tutte le soluzioni possibili, nel nostro caso le 100 persone. Ogni volta che mettiamo un vincolo tagliamo via una parte delle soluzioni, e l'insieme delle soluzioni ammissibili si restringe. Aggiungi qui, aggiungi là... l'insieme delle soluzioni ammissibili potrebbe essere vuoto.
Nel caso dell'orario scolastico esiste un insieme molto vasto di soluzioni, ma ogni volta che mettiamo un vincolo ne eliminiamo alcune. Il problema è che se mettiamo troppi vincoli l'insieme delle soluzioni ammissibili diviene vuoto, ecco che abbiamo un orario impossibile. E mentre alcune volte è lapalissiano vedere che si hanno vincoli che annullano le soluzioni ammissibili (nel nostro esempio basterebbe inserire un vincolo che dice che le persone selezionate devono avere meno di 30 anni, questo vincolo andrebbe in conflitto con il quarto vincolo), il più delle volte è un avventura capire ciò che rende impossibile la generazione dell'orario.
Non solo, ma oltre ai vincoli diretti (quelli che inserisco io) esistono tutta una serie di vincoli indiretti che non controllo, di cui ignoro la natura e che sono conseguenza dei vincoli diretti. Nel nostro esempio, con buona probabilità unendo i vincoli 7 e 8 esce fuori un vincolo che dice che le persone selezionate devono essere obese. Se uno poi ti dice, ecco, hai scelto solo obesi, hai fatto favoritismi... e no... è conseguenza indiretta dei vincoli messi!!!
Ecco perché può capitare che qualcuno si ritrovi tutti i giorni ad uscire all'ultima ora. Magari quel vincolo non è stato inserito, ma è solo conseguenza di tutti gli altri vincoli. Ma non mi riferisco a favoritismi, bensì a vincoli che devono tener conto di cambi di sede, di cambi di scuola, di ore buca, di disponibilità di palestre, e questo può succedere, ecco il paradosso, anche se quei vincoli on riguardano il professore che ha tutti giorni l'uscita all'ultima ora.
Nessun commento:
Posta un commento
Che ne pensi di questo articolo, ti è piaciuto? Lo trovi interessante? Oppure ti sembra completamente inutile? Hai trovato errori o imprecisioni?
La moderazione, non è attiva, mi riservo il diritto di farne uso in particolari momenti, situazioni o contesti.