L'algoritmo Greedy Search è un approccio di risoluzione dei problemi che sceglie sempre la migliore opzione disponibile in ogni fase senza considerare l'impatto a lungo termine della decisione. Sebbene non garantisca di trovare la soluzione ottimale a livello globale, questo metodo spesso funziona rapidamente ed è semplice da implementare.
Come funziona
- Inizializzazione: inizia con una soluzione vuota o iniziale.
- Scelta ottimale locale: ad ogni passaggio, scegli la scelta ottimale locale in base alla funzione obiettivo o ai criteri definiti.
- Applica scelta: applica la scelta ottimale alla soluzione corrente.
- Ripeti: ripeti i passaggi da 2 a 4 fino a quando non è possibile effettuare una scelta locale migliore.
Esempio: Knapsack Problem
Considera la Knapsack Problem, dove abbiamo uno zaino con un peso massimo e un elenco di articoli con pesi e valori. L'obiettivo è selezionare gli elementi per massimizzare il valore totale nello zaino. Un approccio Greedy Search per questo problema consiste nel selezionare gli articoli in base al rapporto valore/peso più elevato.
Esempio di codice in C++
In questo esempio, utilizziamo l'approccio Greedy Search per risolvere il problema Knapsack Problem. Ordiniamo gli articoli in base al rapporto valore/peso decrescente e selezioniamo gli articoli con il rapporto più alto che rientrano ancora nel limite di peso dello zaino.