Prima la domanda
“Migliore” non è un numero finché non dici migliore in che senso.
Un sistema può coprire più gruppi, costare meno, distribuire meglio i simboli oppure essere più semplice da spiegare. Spesso queste qualità si aiutano; altre volte litigano. Ridurre una colonna può abbassare il costo e aprire un buco nella copertura.
L’ottimizzazione comincia quindi dalla funzione obiettivo: una regola che assegna un punteggio a ogni soluzione. Senza obiettivo, l’algoritmo non cerca; passeggia. E anche con un ottimo passo, resta una passeggiata.
Ottimizzare significa trovare una soluzione con il miglior valore possibile — o ragionevolmente buono — rispetto a criteri dichiarati e vincoli rispettati.
Famiglie di metodi
Esatti, euristici e metaeuristici: tre modi diversi di promettere.
Dimostra l’ottimo
Esplora lo spazio con regole che consentono di certificare la soluzione migliore. È prezioso, ma può richiedere molto tempo.
Costruisce una buona soluzione
Usa una regola pratica, come scegliere ogni volta la colonna con il guadagno maggiore. Rapida e leggibile, senza certificato di perfezione.
Esplora molte alternative
Algoritmi genetici, annealing e ricerca tabu provano a evitare soluzioni locali. Hanno parametri, semi e nessun mantello da mago.
Un metodo esatto che impiega tre settimane può essere meno utile di un’euristica che produce in dieci secondi una soluzione quasi identica. Ma “quasi” va misurato: non basta pronunciarlo con voce fiduciosa.