Ricerca locale M. Simi,
Algoritmi di ricerca locale Efficienti in occupazione di memoria tengono traccia solo dello stato corrente (non necessario un puntatore al padre) e si spostano su stati adiacenti Per problemi in cui: il cammino che si segue non è importante: basta trovare la soluzione tutti gli elementi della soluzione sono nello stato ma alcuni vincoli sono violati. Es. le regine nella versione a stato completo.
Ricerca in salita (Hill climbing) Vengono generati i successori e valutati; viene scelto un nodo, che migliora la valutazione dello stato attuale: il primo (salita semplice) il migliore (salita rapida) uno a caso (stocastico) Se non ce ne sono l’algoritmo termina (non si tiene traccia degli altri)
Problemi con Hill-climbing Massimi locali Pianori Crinali collina montagna ? Gli stati visti come punti su una superficie: i picchi sono massimi locali o soluzioni ottimali (se la f è da ottimizzare).
Miglioramenti Miglioramenti della strategia di base: 1. Espandere l’albero di ricerca 2 o 3 livelli e ripetere la valutazione 2. Ripartire da un punto scelto a caso (Hill- Climbing con random restart) Se la probabilità di successo è p saranno necessari 1/p ripartenze per trovare la soluzione
Tempra simulata (simulated annealing) Ad ogni passo si sceglie un successore a caso: se migliora lo stato corrente viene espanso se no (caso in cui E=f(n’)-f(n) 0) quel nodo viene scelto con probabilità p=e E/T [0 p 1] Si genera un numero casuale tra 0 e 1: se questo è p il successore viene scelto, altrimenti non si fa niente. T descresce col progredire dell’algoritmo secondo uno schedule definito (lo schedule definisce valore iniziale e decremento). [Kirkpatrick, Gelatt, Vecchi 1983]
Simulated annealing: analisi La probabilità di una mossa in discesa diminuisce col tempo e l’algoritmo si comporta sempre di più come Hill Climbing. Se T viene decrementato abbastanza lentamente siamo sicuri di raggiungere la soluzione ottimale. Analogia col processo di tempra dei metalli T corrisponde alla temperatura E alla variazione di energia Valori per T determinati sperimentalmente: il valore iniziale di T è tale che per valori medi di E, e E/T sia all’incirca 0.5
Osservazione Hill-climbing è un metodo locale; funziona bene quando la funzione di valutazione non ha essa stessa un carattere locale. Le funzioni “più globali” costano di più.
Il mondo dei blocchi Operatori: Sposta un blocco da un blocco ad un altro Sposta un blocco da un blocco al tavolo Sposta un blocco dal tavolo ad un altro blocco A D C B Stato iniziale C B A D Stato finale
Euristica “locale” per il mondo dei blocchi Euristica dei blocchi fuori posto: +1 per ogni blocco a posto, -1 fuori posto A D C B A D C B L’algoritmo si blocca A D C B 2-2=0 3-1=2 2-2=0
Euristica “non locale” per il mondo dei blocchi Euristica dei blocchi con supporto corretto: (#blocchi supporto OK - #blocchi supporto non OK) A D C B A D C B A D C B C B A D …3+2+1
Ricerca local beam Si tiene traccia di k stati anziché uno solo Ad ogni passo si generano i successori di tutti i k stati Se si trova un goal ci si ferma Altrimenti si prosegue con i k migliori Nella variante local beam stocastica, si scelgono k successori a caso con probabilità maggiore per i migliori (selezione naturale).
Algoritmi genetici Popolazione: k stati generati casualmente Ogni individuo rappresentato come stringa Esempio: stato delle 8 regine Gli individui sono valutati da una funzione di fitness Esempio: n. di coppie di regine che non si attaccano Si scelgono gli individui per gli “accoppiamenti” con una probabilità proporzionale alla fitness
Esempio Per ogni coppia viene scelto un punto di cross-over e i due genitori producono due figli scambiandosi pezzi Viene infine effettuata una mutazione casuale che da luogo alla prossima generazione.