Algoritmi di ricerca

Documenti analoghi
TECNOLOGIE INFORMATICHE MULTIMEDIALI

Espansione: si parte da uno stato e applicando gli operatori (o la funzione successore) si generano nuovi stati.

Intelligenza Artificiale

Algoritmi di Ricerca

Ricerca Automatica. Esercitazione 3. Intelligenza Artificiale Daniele Nardi, 2004 Esercitazione 3 0

Intelligenza Artificiale. Risoluzione dei Problemi

Intelligenza Artificiale. Ricerca euristica Algoritmo A*

Ricerca informata in uno spazio di stati

METODI DELLA RICERCA OPERATIVA

Agenti che risolvono problemi attraverso la ricerca in uno spazio di stati

3.4 Metodo di Branch and Bound

FONDAMENTI DI INTELLIGENZA ARTIFICIALE 8 Settembre 2016 Tempo a disposizione: 2 h Risultato: 32/32 punti

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Generare sequenze di azioni.

Algoritmi e Strutture Dati

Intelligenza Artificiale. Lezione 6bis. Sommario. Problemi di soddisfacimento di vincoli: CSP. Vincoli CSP RN 3.8, 4.3, 4.5.

Il problema del commesso viaggiatore

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

2.2 Alberi di supporto di costo ottimo

Il valore di flusso che si ottiene è

2.2 Alberi di supporto di costo ottimo

Algoritmi e giochi combinatori

FONDAMENTI DI INTELLIGENZA ARTIFICIALE 26 Gennaio 2017 Tempo a disposizione: 2 h Risultato: 32/32 punti

Soluzione del problema come ricerca in uno spazio degli stati:

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2

GRAFI. Cosa sono Grafi non orientati Grafi orientati Grafi pesati Alberi Automi!

1 SOLUZIONE DEI PROBLEMI TRAMITE GRAFI

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014

Heap e code di priorità

Tecniche euristiche Ricerca Locale

Domini di funzioni di due variabili. Determinare i domini delle seguenti funzioni di due variabili (le soluzioni sono alla fine del fascicolo):

Introduzione ai grafi

Intelligenza Artificiale. Logica proposizionale: calcolo automatico

Intelligenza Artificiale. Lezione 3. Intelligenza Artificiale Daniele Nardi, 2004/05 Lezione 3 0

COMPITO DI FONDAMENTI DI INTELLIGENZA ARTIFICIALE INTELLIGENZA ARTIFICIALE (v.o.) PARTE I. 2 Dicembre 2008 (Tempo a disposizione 2h ; su 32 punti)

Algoritmi di ricerca locale

Problemi, istanze, soluzioni

Problema del cammino minimo

Grafi: definizioni e visite

Ripasso di teoria ed esercizi in preparazione al terzo compito. 26 gennaio 2004

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Ottimizzazione Combinatoria e Reti (a.a. 2007/08)

3.3 FORMULAZIONE DEL MODELLO E CONDIZIONI DI

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

ESERCIZIO MIN-MAX Si consideri il seguente albero di gioco dove i punteggi sono tutti dal punto di vista del primo giocatore.

1. Assestare la comprensione delle strategie di ricerca viste a lezione 2. Imparare ad utilizzare la libreria aima.search

I giochi con avversario. I giochi con avversario. Introduzione. Giochi come problemi di ricerca. Il gioco del NIM.

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Tipi di dato e Strutture dati elementari

Minimizzazione a più livelli di reti combinatorie Cristina Silvano

Progettazione di Algoritmi

1) Codici convoluzionali. 2) Circuito codificatore. 3) Diagramma a stati e a traliccio. 4) Distanza libera. 5) Algoritmo di Viterbi

Il Branch & Bound. Definizione 1. Sia S R n. La famiglia S = {S 1, S 2,..., S k S} tale che S 1 S 2 S k = S viene detta suddivisione di S.

Lucchetto con combinazione (3 numeri tra 0 e 39)

Il metodo dei Piani di Taglio (Cutting Planes Method)

TEST: RAGGIUNGIMENTO DEL GOAL La verifica può essere solo l appartenenza dello stato raggiunto all insieme dello stato (o degli stati) goal. A volte l

FONDAMENTI DI INTELLIGENZA ARTIFICIALE 14 Gennaio 2016 Tempo a disposizione: 2 h Risultato: 32/32 punti

Programmazione a numeri interi: il metodo del Branch and Bound

Programmazione Lineare: problema del trasporto Ing. Valerio Lacagnina

Un secondo problema : Quadrato Magico

COMPITO DI RICERCA OPERATIVA APPELLO DEL 08/01/04

Corso di Programmazione Problem Solving. Tipi di Problemi. Problemi Complessi Soluzione. Dott. Pasquale Lops. Primitivi. Complessi

Problem-solving agents

Grammatiche. Grammatiche libere da contesto Grammatiche regolari Potenza delle grammatiche libere e regolari Struttura di frase: Alberi di derivazione

Gestione della produzione e della supply chain Logistica distributiva

trovare un percorso senza collisioni per passare da una configurazione ad un altra del sistema robotico

Notazione asintotica. notazione Ω. notazione O. notazione o notazione ω. Marina Zanella Algoritmi e strutture dati Richiami matematici 1

Sviluppo di programmi

Intelligenza Artificiale. Risoluzione dei Problemi

Soluzione dei problemi di Programmazione Lineare Intera

Esempi. non. orientato. orientato

Agenti basati su Ricerca: Introduzione

Possibile applicazione

Programmazione Lineare Intera: Piani di Taglio

Algoritmi e Strutture Dati (Mod. B) Algoritmi su grafi Ricerca in profondità (Depth-First Search) Parte II

Soluzione dei problemi di Programmazione Lineare Intera

Algoritmo basato su cancellazione di cicli

Pumping lemma per i linguaggi Context-free

Note per la Lezione 4 Ugo Vaccaro

Soluzione del problema come ricerca in uno spazio degli stati:

Strutture dati per rappresentare grafi

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Intelligenza Artificiale. Problem Solving -Agenti risolutori di problemi

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Algoritmi e Strutture Dati Laboratorio 15/12/2008. Daniele Loiacono

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

2.3.3 Cammini ottimi nei grafi senza circuiti

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Esercizi proposti 10

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

e Algoritmi Marco Piastra Intelligenza Artificiale I Soddisfacibilità

Minimizzazione di Reti Logiche Combinatorie Multi-livello. livello

Costruzione di espressioni regolari 4

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Algoritmi e Strutture Dati

SISTEMI BASATI SULLA CONOSCENZA: PRINCIPI ARCHITETTURALI

Transcript:

Intelligenza Artificiale Elementi 2004 2005 Università degli Studi di Milano Bicocca Algoritmi di ricerca Matteo Palmonari matteo.palmonari@disco.unimib.it

Outline 1. Problemi come spazio delle soluzioni Alcuni esempi di problemi Stati e transizioni Rappresentazione dello spazio degli stati con grafi Alberi di ricerca 2. Algoritmo generale di ricerca e ricerca non informata Algoritmo generale di ricerca Algoritmi di ricerca non informata: deep-first, breat-first, iterative deepening (IDA). Accenni a problemi di complessità 3. Euristiche e ricerca informata Il concetto di euristica Ricerca best-first: ricerca golosa e A* IDA*

Risolvere problemi... PROBLEM SOLVING Capacità di risolvere problemi Un fattore deve attraversare un fiume portando lupo, capra e cavolo con una barca a due posti. Non possono stare soli lupo con capra o capra con cavoli. Quale sequenza per trasbordare tutti sani e salvi? conosenza simbolica incerta conosenza simbolica apprendimento abilità linguistica

I Problemi come spazio delle soluzioni

Outline 1. Problemi come spazio delle soluzioni Alcuni esempi di problemi Stati e transizioni Rappresentazione dello spazio degli stati con grafi Alberi di ricerca 2. Algoritmo generale di ricerca e ricerca non informata Algoritmo generale di ricerca Algoritmi di ricerca non informata: deep-first, breat-first, iterative deepening (IDA). Accenni a problemi di complessità 3. Euristiche e ricerca informata Il concetto di euristica Ricerca best-first: ricerca golosa e A* IDA*

Esempio di soluzione di problemi (1) Un fattore deve attraversare un fiume portando lupo, capra e cavolo con una barca a due posti. Non possono stare soli lupo con capra o capra con cavoli. Quale sequenza per trasbordare tutti sani e salvi? [Bechet de Merizac, Lione 1613] F L Cp Cv F L Cp Cv stato stato Transizione tra i due stati in seguito ad un azione Rappresentazione: specifica ciò che è vero di una situazione e omette ciò che non è vero (ad esempio, non c è un ponte più avanti sul fiume). Astrarre caratteristiche rilevanti

Esempio di soluzione di problemi (2) Un contenitore parzialmente riempito di acqua contiene un litro di una soluzione alcohol-acqua al 90%. Quanta acqua deve essere aggiunta per diluire la soluzione all 80% di alcohol? (1) A 1 + da = A 2 (2) W 1 + dw = W 2 (3) L 1 + dl = L 2 (4) A 1 + W 1 = L 1 (5) A 2 + W 2 = L 2 (6) da + d W = dl (7) da = 0 (8) A 1 = 0.9 * L 1 (9) A 2 = 0.8 * L 2 (10) L 1 = 1 Trovare dw: (a): (10) in (8) A 1 = 0.9 (b): (a) + (7) in (1) A 2 = 0.9 (c): (b) in (9) L 2 = 0.9 0.8 0.9 (d): (c) e (10) in (3) dl = - 1 (e): (d) e (7) in (6) dw = - 1 Rappresentazione: solo (8), (9) e (10) sono esplicite, le altre implicite (leggi di conservazione: conoscenza di senso comune). Ricerca: ci sono altre 21 sequenze di soluzione (da 5 a 7 passi). Non determinismo: gli operatori (di trasformazione delle equazioni) dicono cosa si può fare, non cosa si deve fare e in che ordine. 0.8 0.9 0.8

Cammino minimo Qual è la strada più breve per raggiungere Bucarest partendo da Oradea?...a partire da X (Oradea) : dove mi trovo?...per raggiungere Y (Bucarest) : dove devo andare? stato transizione stato

Tipi di problemi principali Di cosa sono a conoscenza? Ho conoscenza del mio stato interno? Ho conoscenza dell effetto delle mie azioni? Problema a stati singoli: Ho percezione dello stato corrente e di quello prodotto da ogni singola azione Ogni azione da uno stato a un altro Problemi a stato multiplo: non ho percezione (certa) dello stato in cui mi trovo. Devo ragionare sull insieme di stati a cui ogni azione potrebbe condurmi. Ogni azione da un insieme di stati a un insieme di stati non so con precisione che stato produce ogni azione. Ogni azione da uno stato a un insieme di stati Transizioni su insiemi di stati Problemi di contingenza: Capacità di rilevamento che dipende dalla fase di esecuzione. Ambieti dinamici

Problemi ben definiti Problema un insieme di informazioni Soluzione = ricerca della soluzione + esecuzione A noi interessa soprattutto la ricerca di una soluzione: Input: Problema Output: Soluzione Questo output dovrà essere tale da poter essere passato come input nell eventuale fase di esecuzione. La definizione del problema è fondamentale perchè la sua soluzione possa essere cercata in modo algoritmico! Astrazione: estrarre le caratteristiche rilevanti

Problemi a stato singolo Formulazione: individuare gli aspetti rilevanti e il grado di dettaglio specificare lo spazio degli stati stato iniziale stato/i finale/i (esplicito o con test obiettivo) azioni (transizioni/operatori/mosse) che conducono da uno stato all altro specificare il costo di ogni azione Risoluzione: trovare un cammino dal costo ottimale dallo stato iniziale allo stato finale Un cammino è una sequenza di azioni una soluzione è un cammino dallo stato iniziale allo stato finale il costo cammino è la somma dei costi delle azioni componenti costo totale = costo della soluzione + costo della ricerca

Problemi a stato multiplo Nei problemi a stato multiplo: Il punto di partenza è un insieme di stati iniziali. Per ciascuna azione gli operatori specificano un insieme Y di stati raggiungibili a partire da un insieme X. Gli operatori sono funzioni da insiemi di stati ad altri insiemi. [Y è l unione degli stati raggiugibili da ciascuno stato elemento di X] Il cammino collega insiemi di stati In sostanza si tratta di raggiungere una soluzione in condizione di incertezza rispetto allo stato iniziale.

Problema a stato singolo FILETTO o TRIS (TIC-TAC-TOE) Spazio degli stati Vi sono: 9 prime mosse 8 risposte a ognuna di esse 7 risposte a ognuna di esse.. In totale: 9 x 8 x 7 x x 1 = 9! = 362.880

Gioco dell 8 E' più semplice muovere lo 'spazio vuoto'. Quattro possibili mosse: muovi lo spazio verso l'alto (UP) muovi lo spazio verso il basso (DOWN) muovi lo spazio a destra (RIGHT) muovi lo spazio a sinistra (LEFT) Esercizio: GIOCO 1 4 3 7 1 6 5 8 2 DELL 8 in prolog (rappresentazione stati e azioni) UP LEFT DOWN RIGHT 1 2 3 1 4 3 1 4 3 1 4 3 7 4 6 8 7 6 7 8 6 7 6 4 5 8 2 5 8 2 5 6 2 5 8 2 LEFT RIGHT UP DOWN LEFT RIGHT UP DOWN 1 1 3 1 3 3 1 4 3 1 4 3 1 4 3 1 4 3 1 4 3 1 4 3 7 4 6 7 4 6 1 7 6 5 7 6 7 8 6 7 8 6 7 6 3 7 6 2 5 8 2 5 8 2 5 8 2 7 8 2 5 5 2 5 2 2 5 8 2 5 8 2

Risolvere problemi... Rappresentazione del problema Definizione dello spazio degli stati ragionamento : sfruttare la rappresentazione per trovare la soluzione conosenza simbolica incerta conosenza simbolica apprendimento PROBLEM SOLVING Capacità di risolvere problemi abilità linguistica Costruzione della ricerca nello spazio degli stati: Albero di ricerca

Rappresentazione dello spazio degli stati con grafi Lo spazio del problema è rappresentato da un grafo. Uno spazio degli stati è una quadrupla < N, A, I, F >: N = insieme di nodi (non necessariamente finito) A = insieme di archi (connettono coppie di nodi) I N nodi iniziali (I Ø ) F N nodi finali (F Ø ) I nodi rappresentano gli stati, e gli archi le transizioni del problema Una sequenza di nodi [N 1,N 2,N 3...,N n ] in cui ogni N j -1,N j (1< j n) è un arco, è detto un cammino di lunghezza n. Se N 1 =N n il cammino è detto ciclo dato un nodo N i, ogni nodo N J, con j < i è detto antenato di N i ogni nodo N J, con I < j è detto discendente di N i il nodo N i -1 è detto genitore il nodo N i +1 è detto figlio Un nodo N i è detto radice se non ha genitori è detto foglia se non ha figli Il grafo è detto DAG (Directed Acyclic Graph) se non contiene cicli albero se ogni nodo ha al massimo un genitore Un cammino è detto cammino soluzione se il primo nodo è un nodo iniziale e l'ultimo è un nodo finale Obiettivo della ricerca è trovare attraverso lo spazio degli stati un cammino (o più cammini) soluzione

Esempi di grafi D A C B F G E H

Alberi di ricerca nello spazio degli stati Processo di ricerca come costruzione di un albero di ricerca n 0 p = 0 n 1 n 2 n 3 n 4 p = 1 n 11 n 12 n 13 n 14 Parametri di struttura: profondità p fattore di ramificazione r nell'esempio : p = 2, r = 4 Lo spazio di ricerca non è dato (memorizzato) in anticipo, ma si costruisce passo per passo mediante regole p = 2

I nodi degli alberi di ricerca I nodi sono strutture di dati. Un nodo n è una n-upla {s, ngen, o, p, c} s: stato a cui corrisponde il nodo ngen: nodo genitore o: operatore da cui ottenuto n p: profondità del nodo c: costo cammino da stato iniziale (Russel Norvig) I nodi non coincidono con gli stati! (Due nodi diversi possono corrispondere a medesimi stati a cui si è arrivati da differenti cammini) Gli stati costituiscono i nodi nello spazio degli stati. I nodi degli alberi sono strutture dati. Lo spazio degli stati non è l albero di ricerca (l albero parte sempre da un nodo: ha una radice). La collezione di nodi in attesa di essere espansi è detta frontiera o confine.

Rappresentazione dello spazio degli stati: esplicita/implicita Non sempre è possibile rappresentare esaustivamente uno spazio degli stati Rappresentazione esplicita: lo spazio degli stati è rappresentato in una struttura dati (che contiene tutti gli stati e le rispettive transizioni) Ex. Navigazione tra le città Rappresentazione implicita: gli stati sono rappresentati attraverso caratteristiche astratte, e metodi che, dato uno stato, consentono di ottenere uno stato raggiungibile attraverso una transizione Ex. Tris Quando si ha una rappresentazione esplicita la definizione dello spazio degli stati viene per lo più demandata alla costruzione dell albero di ricerca

Missionari e cannibali Esempio: missionari e cannibali Su una sponda di un fiume ci sono tre missionari: Rossi, Rossini e Rossetti, e tre cannibali: Bingo, Bongo e Bango. Si può attraversare il fiume con una barca che porta al più due persone. Se il numero di cannibali supera il numero di missionari presenti su una delle due sponde, i missionari vengono mangiati. Come usare la barca per trasbordare attraverso il fiume tutti i missionari e i cannibali senza rischi?

Problema di soddisfacimento di vincoli (CSP) Stati: valori di un insieme di variabili Stato iniziale: nessun assegnamento di valori alle variabili Stato finale: assegnamento di valori a tutte le variabili che soddisfa tutti i vincoli dati Operatore: assegna a una variabile un valore del suo dominio Profondità dell albero = numero n di variabili Metodi di soluzione: naif: generazione (assegnare valori a tutte le variabili) e prova (verificare se tutti i vincoli sono soddisfatti) in sequenza migliorativo: generazione e prova sono intrecciati (per ogni assegnamento di valori a una variabile verificare se soddisfa i vincoli) euristico: si possono applicare le ricerche iterative

Esempio: CSP: criptoaritmetica S E N D + M O R E = M O N E Y Assegnare una cifra (0-9) a ciascuna lettera in modo che: cifre distinte corrispondano a lettere distinte le somme dei numeri ottenuti sostituendo lettere con cifre rispettino i vincoli dell aritmetica VINCOLI

CSP: puzzle logico I coniugi Brillante hanno cinque figli, che tengono fede al loro nome. Alle età di 4,5,6,7 e 8 anni, Rosa e i suoi fratelli mostrano un buon talento ciascuno in un campo diverso da quello degli altri. Determinare l'età e il talento di ognuno dei figli, sapendo che: Uno di loro suona bene il piano Carla ha 4 anni, e non è la Brillante matematica Il mago del computer è di un anno più vecchio di Stefano Il violinista ha 7 anni Giovanna non è quella di 8 anni All'età di 5 anni, Roberto è più giovane del Brillante bravo nel nuoto. VINCOLI Domini: età: {4,5,6,7,8} figlio: {carla, giovanna, roberto,rosa, stefano} talento: {matematica,violino,nuoto,computer,piano) Soluzione: (4,carla,piano),(5,roberto,matematica), (6,giovanna,nuoto),(7,stefano,violino),(8,rosa,computer)

Un esempio noto di ricerca... n 0 n 1 n 2 n 3 n 4 SLD-Risoluzione n 11 n 12 n 13 n 14 Spazio degli stati: Quali sono gli stati e quali le transizioni? Stato iniziale e stato obiettivo? Costruzione dell albero?

II Algoritmo generale di ricerca e ricerca non informata

Outline 1. Problemi come spazio delle soluzioni Alcuni esempi di problemi Stati e transizioni Rappresentazione dello spazio degli stati con grafi Alberi di ricerca 2. Algoritmo generale di ricerca e ricerca non informata Algoritmo generale di ricerca Algoritmi di ricerca non informata: deep-first, breat-first, iterative deepening (IDA). Accenni a problemi di complessità 3. Euristiche e ricerca informata Il concetto di euristica Ricerca best-first: ricerca golosa e A* IDA*

Algoritmo generale di ricerca 1. L: lista di nodi da esaminare (inizialmente: i nodi iniziali) 2. Se L vuota, fallimento. Altrimenti, selezionare un nodo n da L. 3. Se n è un nodo finale, terminare restituendo il cammino dal nodo iniziale a n. 4. Altrimenti, cancellare n da L e aggiungere a L tutti i figli di n, ciascuno con il suo cammino dal nodo iniziale. Tornare al passo 2. LE STRATEGIE DI RICERCA DIFFERISCONO NELLA SCELTA DEL NODO DA ESPANDERE E NEL MODO IN CUI I NODI FIGLI SONO AGGIUNTI ALLA FRONTIERA

Strategie di ricerca E' garantito che la ricerca trovi una soluzione (se c è)? COMPLETEZZA E garantito che la soluzione trovata è ottimale? Soluzione = cammino dal costo minore OTTIMALITA Qual è la complessità in tempo e spazio della ricerca? EFFICIENZA Si possono sfruttare caratteristiche specifiche del problema per ridurre la complessità? Dipende dalla strategia di ricerca adottata Criteri di valutazione tra strategie

Ricerca informata e non informata Ricerca non informata: l algoritmo di ricerca procede adottando strategie generali indipendenti dal problema specifico. Quali nodi espando, in che modo? Deep First, Breadth First, Iterative Deepening Ricerca informata: si usano informazioni sul problema specifico per indirizzare la ricerca verso la soluzione. Funzioni euristiche: misura dell avvicinamento allo stato obiettivo. Best First, Greedy search, A*, IDA*, etc.

Risolvere problemi... Rappresentazione del problema Definizione dello spazio degli stati ragionamento : sfruttare la rappresentazione per trovare la soluzione conosenza simbolica incerta conosenza simbolica apprendimento PROBLEM SOLVING Capacità di risolvere problemi abilità linguistica Costruzione della ricerca nello spazio degli stati: Albero di ricerca

Ricerca Euristica... Rappresentazione del problema + ragionamento : sfruttare la rappresentazione per trovare la soluzione Funzione di valutazione euristica Definizione dello spazio degli stati Costruzione della ricerca nello spazio degli stati: Albero di ricerca

Ricerca non informata

Ricerca in profondità (depth-first) Lista L gestita come stack: [n 0 ] p = 0 m = 1 si seleziona il nodo di testa [n 1,n 2,n 3,n 4 ] p = 1 m = 4 si aggiungono i figli generati in testa [n 11,n 12,n 13,n 14,n 2,n 3,n 4 ] p = 2 m = 7 1 n 0 2 n 1 7 n 2 12 n 3 17 n 4 n 11 n 12 n 13 n 14 3 4 5 6 8 9 10 11 13 14 15 16 18 19 20 21 M: numero di nodi da memorizzare M = p (r - 1) + 1 per r fissato: p (r - 1) + 1 = O (rp) Complessità in spazio lineare rispetto alla profondità T: numero di nodi da esaminare se nodo soluzione il più a sinistra: T = p + 1 2 3 p se nodo soluzione il più a destra: T = 1+ r + r + r +... + ( r - 1) 2 3 p p in media, per p grande: T = 1+ r + r + r +... + ( r -1) = O( r ) Complessità in tempo esponenziale rispetto alla profondità

Ricerca in ampiezza (breadth-first) Lista L gestita come coda: [n 0 ] p = 0 si seleziona il nodo di testa [n 1,n 2,n 3,n 4 ] p = 1 si aggiungono i figli generati in coda [n 2,n 3,n 4,n 11,n 12,n 13,n 14 ] p = 2 1 n 0 2 n 1 3 n 2 4 n 3 5 n 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 n 11 n 12 n 13 n 14 2 3 p p Numero massimo di nodi espansi: 1+ r + r + r +... + ( r - 1) = O( r ) La frontiera è la parte più impegnativa. Complessità in spazio anch'essa esponenziale. (RICERCA IN AMPIEZZA: UN CASO SPEC IALE DI RICERCA A COSTO UNIFORME)

Consumo risorse per complessità r p Ipotesi: fattore ramificazione r = 10 1.000 nodi/sec 100 bytes/nodo profondità p nodi tempo memoria 0 1 1 msec 100 b 2 111 0,1 sec 11 Kb 4 11.111 11 sec 1Mb 6 10 6 18 min 111 Mb 8 10 8 31 ore 11 Gb 10 10 10 128 giorni 1 Tb 12 10 12 35 anni 111 Tb 14 10 14 3500 anni 11.111 Tb

Depth-first vs. Breadth-first Ricerca in profondità e ricerca in ampiezza entrambe esponenziali in tempo, ma: complessità in spazio: lineare in profondità esponenziale in ampiezza ottenimento della soluzione: garantita in ampiezza non garantita in profondità ottimalità della soluzione: in ampiezza, la prima soluzione trovata è quella del cammino più corto (ottimale se costo cammino costante) in profondità non è garantita

Scelta della strategia PAROLE CROCIATE (una parola per volta) p = 0.... A G O A M O A V O.... p = 1.... A M O R.... p = 2 O 1. Qual è la profondità della soluzione? 2. Qual è il fattore di ramificazione? 3. Preferibile ricerca in profondità o in ampiezza? [preferibile in profondità perchè è fissata (4) e ogni nodo di profondità 4 è soluzione]

Riduzione dello spazio di ricerca Utilizzare caratteristiche peculiari del problema per ridurne la complessità riducendo lo spazio di ricerca. Si individuano classi di equivalenza degli stati per simmetria per astrazione.

FILETTO o TRIS Riduzione per simmetria in angolo al centro al centro di un lato 12 x 7! = 60.480 anzicchè 9! = 362.880

Riduzione per astrazione Esempio: missionari e cannibali Su una sponda di un fiume ci sono tre missionari: Rossi, Rossini e Rossetti, e tre cannibali: Bingo, Bongo e Bango. Si può attraversare il fiume con una barca che porta al più due persone. Se il numero di cannibali supera il numero di missionari presenti su una delle due sponde, i missionari vengono mangiati. Come usare la barca per trasbordare attraverso il fiume tutti i missionari e i cannibali senza rischi? ASTRAZIONE: le identità individuali non contano Primo trasbordo: 5 operatori: 3M, 3C-0M,0C 1c, 1m, 2c, 2m, 2cm 3M,2C-0M,1C 3M,1C-0M,2C 2M,2C-1M,1C

Controllo di loop Se il grafo (dello spazio degli stati) contiene cicli occorre evitare loop per evitare di generare rami infiniti Si usano 2 liste: lista aperta: nodi da esaminare lista chiusa: nodi già esaminati Un nodo selezionato dalla lista aperta viene espanso solo se non compare già nella lista chiusa Ricerca a profondità limitata: Si fissa una soglia massima di profondità pt. Va bene quando è nota la profondità della soluzione ps. Altrimenti: se pt < ps: soluzione non trovata se pt > ps: tempo di esecuzione maggiore del necessario In generale: come scegliere pp?

Iterative deepening: : ID (1) Provare la ricerca a profondità limitata con tutti i pt finchè soluzione: si inizia con pt = 0, si finisce con pt = p: è ottimale! Simile a ricerca in ampiezza ma non memorizzo tutti i nodi che esploro: riduco la complessità nello spazio. Espando dei nodi più di una volta. Questo costo aggiuntivo è spesso preferibile alla memorizzazione di tutti i nodi. I nodi che vengono espansi più volte sono i nodi vicini alla radice In generale preferito quando grande spazio di ricerca e non si conosce la profondità della soluzione

Soglia di profondità s, incrementata ad ogni iterazione s, ricerca in profondità, ma comportamento in ampiezza; i nodi sono rigenerati e non memorizzati 0. s = 1 (soglia iniziale). 1. L: lista dei nodi iniziali: la radice. Iterative deepening: ID (2) 2. Se L è vuota [fallimento] incrementare s e tornare al passo 1. Altrimenti, selezionare un nodo n da L. 3. Se n è un nodo finale, terminare restituendo n e il cammino dal nodo iniziale a n. 4. Altrimenti, cancellare n da L. Se la profondità di n è minore di s, aggiungere a L tutti i figli di n, ciascuno con il suo cammino dal nodo iniziale. Tornare al passo 2. 1, 2, 7 3, 8 4, 13 5,18 6, 23 9 10 11 12 14 15 16 17 19 20 21 22 24 25 26 27 2 p 2 p Numero di espansioni: ( + 1)1+ ( p) r+ ( p - 1) r +... + 3r - + 2r - per r fissato e p grande: tempo O (r p ) ; spazio O (rp) E' la procedura di ricerca esaustiva asintoticamente ottimale 1 p + 1r p

Direzioni di ricerca Due possibili direzioni + loro combinazione: in avanti (forward chaining, data-driven): dallo stato iniziale (dai dati del problema) generando gli stati intermedi verso lo stato finale (obiettivo) all'indietro (backward chaining, goal-driven): dall'obiettivo da raggiungere esaminando le condizioni per raggiungerlo (sotto-obiettivi) verso i dati del problema bidirezionale, alternando le due direzioni Lo spazio di ricerca è lo stesso, differisce il numero di stati effettivamente esaminati Quale direzione preferire dipende dal problema

Scelta della direzione di ricerca All'indietro preferibile se: l'obiettivo è formulato chiaramente vi è un gran numero di regole che corrispondono ai dati del problema, generando molte possibili conclusioni i dati del problema devono essere acquisiti (nella diagnosi, molti test sono possibili) esempio: dimostrare un teorema In avanti preferibile se: vi sono molti dati iniziali vi sono poche regole è difficile formulare l'obiettivo esempio: formulazione chimica In generale: conviene passare dall'insieme di stati più piccolo a quello più grande conviene procedere nella direzione di minore fattore di ramificazione

III Euristiche e ricerca informata

Outline 1. Problemi come spazio delle soluzioni Alcuni esempi di problemi Stati e transizioni Rappresentazione dello spazio degli stati con grafi Alberi di ricerca 2. Algoritmo generale di ricerca e ricerca non informata Algoritmo generale di ricerca Algoritmi di ricerca non informata: deep-first, breat-first, iterative deepening (IDA). Accenni a problemi di complessità 3. Euristiche e ricerca informata Il concetto di euristica Ricerca best-first: ricerca golosa e A* IDA*

Valutazione euristica degli stati (Es. 1) Esempio: tris Euristica: valutare per ogni stato il numero di tris potenziali 3 4 2 3 4 4 5 5 4 4 3

Valutazione euristica degli stati (Es.( 2) Esempio: gioco dell'8 Euristica 1: per ogni stato: n 1 = quadrati fuori posto [per lo stato (a): n 1 = 7] sottostima la distanza dallo stato finale (b) (con una mossa, al più un quadrato può andare a posto) 6 2 8 3 5 1 2 3 8 4 4 2 8 3 1 4 7 1 7 6 5 7 5 6 (a) (b) (c) Euristica 2: per ogni stato, n 2 = somma delle distanze dalla destinazione di ogni quadrato fuori posto [per lo stato (a): n 2 = 3 + 0 +3 + 2 + 1 + 3 + 1 + 4 = 17] sottostima distanza da stato finale (con una mossa avanza al più un quadrato e al più di un passo) Euristica 2 più accurata di Euristica 1: n 2 n 1 Non adeguate a inversione di quadrati (nello stato (c) i quadrati 5 e 6 sono da invertire)

Ricerca euristica Usa informazione specifica del dominio per scegliere quali nodi espandere Associa allo spazio degli stati una funzione euristica di valutazione che assegna un valore ad ogni stato Strategia euristica: espandere il nodo più 'promettente' (ritenuto più vicino al nodo finale) Esempio: 4 2 8 3 1 6 4 7 5 2 8 3 2 8 3 5 3 5 1 6 4 1 4 7 5 7 6 5 2 8 3 1 6 4 7 5

Ricerca in salita (hill( climbing) Detta anche metodo del gradiente Seleziona uno stato successivo solo se migliora la condizione attuale secondo l euristica in uso, fallisce se non c e. MEMORIZZA SOLO I NODI APPARTENENTI AL CAMMINO ATTIVO (IN PROFONDITA') 10 9 5 3 8 6 4 1 7 9

Esempio (MONDO DEI BLOCCHI) MOSSE: spostare un blocco libero per volta o sul tavolo o su un altro blocco (1) stato finale (2) stato iniziale Ricerca in salita con euristiche diverse D C B A A D C B D C B A C B D A C B A D (1) (2) (3) (4) (5) (3) stato dopo la prima mossa (2), (4), (5) stati possibili dallo stato (3) (1): +4 (2): 0 (3): +2 (4): 0 (5): 0 Euristica 1 (locale): +1 blocco in posizione corretta -1 blocco in posizione errata Nello stato (3) la ricerca in salita si ferma: (2), (4), (5) non sono migliori di (3) Euristica 2 (globale): +n blocco sopra n-1 blocchi corretti - n blocco sopra n-1 blocchi errati (1): +10 (2): -10 (3): -5 (4): -4 (5): -3 Nello stato 3 la ricerca in salita sceglie lo stato (5) che porta verso la soluzione

La ricerca in salita non può procedere quando incontra: Massimo locale: Ricerca in salita: problemi stato migliore di tutti i vicini ma non migliore di altri più lontani Pianoro: tutti gli stati vicini sono di pari valore Crinale: vi sono stati vicini di valore migliore ma non raggiungibili con una singola mossa

Soluzioni ai limiti della ricerca in salita Massimo locale: tornare a uno stato precedente e spostarsi in un'altra direzione Pianoro: saltare in qualche direzione verso una nuova zona (simulated annealing) Crinale: fare due o più mosse insieme (aggiramento) prima di valutare i prossimi stati (macroregole) Ma tutte le euristiche sono: fallibili difficili da individuare da verificare sperimentalmente su campioni di prova

Ricerca best-first 1. L: lista dei nodi iniziali. 2. Se L è vuota, fallimento. Altrimenti, selezionare da L [un] il nodo n migliore. 3. Se n è un nodo finale, terminare restituendo n ed il cammino dal nodo iniziale a n. 4. Altrimenti, cancellare n da L e aggiungere a L tutti i figli di n, ciascuno con il suo cammino. Tornare al passo 2. IL NODO DA ESPANDERE E' SCELTO TRA I FIGLI DEI NODI ESPANSI IN TUTTI I PASSI PRECEDENTI 1 2 3 9 5 8 6 8 7 5 4 4

Greedy Search (Ricerca Golosa): minimizzare la distanza dall obiettivo Funzione di valutazione degli stati h: distanza da obiettivo [h(n) = 0 se n è l obiettivo]. Distanza stimata da obiettivo. Simile a Hill-Climbing ma vero e proprio albero: espando sempre i nodi valutati più vicini a obiettivo Ex. Cammino da Arad a Bucarest: distanza in linea d aria da obiettivo come funzione di valutazione Nodi non necessari espansi, (false partenze) e oscillazioni causate da loop Simile a Deep First... Incompleta e non ottimale, ma se la funzione euristica è buona può essere molto veloce Trovare una buona h è in generale molto difficile

Ricerca Golosa (esempio) h: distanza in linea d aria Supponiamo di voler andare da Iasi a Fagaras Oscillazione (loop) Supponiamo di avere un nuovo nodo x... False partenze x la soluzione può non essere ottimale

Costo dei cammini Misura della lunghezza di un cammino tra due stati Esempio: problema del commesso viaggiatore Partendo dalla sede visitare n città ciascuna una sola volta, e tornare in sede percorrendo la minima distanza possibile. E' data la distanza tra le diverse città. E 75 100 A 125 125 100 125 B 75 50 300 375 50 C 100 D 100 A 150 B 250 C D E 275 D C D E E 325 E C D A B C E 425 A Per N città vi sono (N - 1)! cammini E

Branch and bound: minimizzare il costo cammino Memorizza tutti i cammini e i loro costi, espandendo ad ogni passo il cammino di costo minore rispetto a tutti quelli generati. Algoritmo: 1. Lista L dei cammini dal nodo iniziale (inizialmente: nodo iniziale, cammino di lunghezza nulla) 2. Finchè L è vuota o si è raggiunto un nodo finale: se il primo cammino in L contiene un nodo finale, termina con successo, altrimenti rimuovi il cammino da L e forma nuovi cammini espandendo di un passo il cammino rimosso calcola il costo dei nuovi cammini e aggiungili in L ordina i cammini in L per costi crescenti dei cammini 3. Altrimenti, termina con fallimento Trova sicuramente il cammino di costo minimale Utile quando esistono più cammini da nodo iniziale a nodo finale

Funzione di valutazione totale: ricerca A f ( n ) = g ( n ) + h ( n ) g ( n ) : misura lunghezza effettiva cammino da nodo iniziale a nodo n h ( n ) : stima euristica distanza nodo n da nodo finale f ( n ) : costo totale cammino da nodo iniziale a nodo finale attraverso nodo n a 3 1 2 3 2 8 3 8 4 1 1 4 g ( n ) = 0 7 6 5 7 6 5 (obiettivo) b 3 c 3 d 4 2 8 3 2 8 3 2 8 3 2 1 1 4 1 8 4 1 4 4 7 6 5 7 6 5 7 6 5 e 3 f 4 g 2 2 8 3 2 8 3 2 2 3 3 2 1 4 7 1 4 1 8 4 7 6 5 7 6 5 7 6 5 f ( c ) = g ( c ) + h ( c ) = 1 + 3 = 4 f ( e ) = g ( e ) + h ( e ) = 2 + 3 = 5 A parità paritàdi di stima, stima, scelto scelto nodo nodo c c più piùvicino a nodo nodo iniziale iniziale Algoritmo Algoritmo A: A: best-first best-first con con funzione funzione di di valutazione valutazione totale totale g ( n ) = 1 g ( n ) = 2

Funzione di valutazione totale: ricerca A f ( n ) = g ( n ) + h ( n ) g ( n ) : misura lunghezza effettiva cammino da nodo iniziale a nodo n h ( n ) : stima euristica distanza nodo n da nodo finale f ( n ) : costo totale cammino da nodo iniziale a nodo finale attraverso nodo n a 3 1 2 3 2 8 3 8 4 1 1 4 g ( n ) = 2 7 6 5 7 6 5 (obiettivo) b 3 c 3 d 4 2 8 3 2 8 3 2 8 3 2 1 1 4 3 1 8 4 1 4 4 7 6 5 7 6 5 7 6 5 e 3 f 4 g 2 2 8 3 2 8 3 2 2 3 2 1 4 7 1 4 1 8 4 7 6 5 7 6 5 7 6 5 f ( c ) = g ( c ) + h ( c ) = 1 + 3 = 4 f ( e ) = g ( e ) + h ( e ) = 2 + 3 = 5 A parità paritàdi di stima, stima, scelto scelto nodo nodo c c più piùvicino a nodo nodo iniziale iniziale Algoritmo Algoritmo A: A: best-first best-first con con funzione funzione di di valutazione valutazione totale totale g ( n ) = 1 g ( n ) = 2

Ricerca A*: : h ammissibile Una funzione è ammissibile se non sopravvaluta mai la distanza effettiva all obiettivo A* è un algoritmo con funzione di valutazione totale dove la funzione euristica h è ammissibile. f * ( n ) = g * ( n ) + h * ( n ) g* ( n ) = costo cammino più corto da nodo iniziale a nodo n h* ( n ) = costo effettivo cammino più corto da nodo n a nodo finale f * ( n ) = costo effettivo cammino ottimale da nodo iniziale a nodo finale attraverso nodo n Funzioni g*, h*, f * non note g, h, f loro approssimazioni Usualmente g ( n ) g * ( n ) Algoritmo A* : algoritmo A con funzione f in cui h ( n ) h * ( n ) A* è ottimale e completo

Ottimalità e completezza Ottimale: I nodi in tutte le frontiere successive hanno un costo f più grande Prima o poi frontiera: cammino reale A* è ottimamente efficiente: non esiste nessun altro algoritmo ottimale che garantisce di espandere un minor numero di nodi di A*

Informatività Funzioni a valutazione totale: f ( n ) = g ( n ) + h ( n ) La ricerca breadth-first è un algoritmo A * con h = 0 e costo cammino costante per ogni arco, cioè f ( n ) = g ( n ) La ricerca branch and bound è un algoritmo A* con h = 0 e g diverso per ogni arco Sono ammissibili, perchè, essendo h = 0, n 0 h* ( n ) Date due euristiche A*: h 1 e h 2, h 2 è più informata di h 1 se n h 1 ( n ) h 2 ( n ) Più un'euristica è informata, minore è il numero di nodi da espandere per trovare la soluzione ottimale: E sempre meglio utilizzare una funzione euristica più informativa a meno che non sopravvaluti

Informatività (2): ex. Il gioco dell 8 Ex. Gioco dell'8 2 8 3 1 4 7 6 5 euristica h 1 (numero quadrati fuori posto) euristica h 2 (somma spostamenti minimi dei quadrati) Si ha: 0 h 1 h 2 h* entrambe ammissibili entrambe migliori di breadth-first euristica h 2 più informata di euristica h 1

Efficacia delle euristiche Confronto tra ID (Iterative Deepening) e A*, media su 100 istanze nel gioco dell 8 Costo della ricerca Fattore di ramificazione effettivo p ID A*(h 1 ) A*(h 2 ) ID A*(h 1 ) A*(h 2 ) 2 10 6 6 2.45 1.79 1.79 4 112 13 12 2.87 1.48 1.45 6 680 20 18 2.73 1.34 1.30 8 6384 39 25 2.80 1.33 1.24 10 47127 93 39 2.79 1.38 1.22 12 364404 227 73 2.78 1.42 1.24 14 3473941 539 113 2.83 1.44 1.23 Euristiche per CSP Effettuare per prima la sostituzione più vincolata. Esempio di criptoaritmetica: la cifra più a sinistra può avere solo valore 0 o 1

Iterative deepening A* (IDA*) (1) Iterative deepening con funzione di valutazione totale ammissibile. LIMITE DI COSTO al posto di limite di profondità 0. s = f(stato iniziale). 1. L: lista dei nodi iniziali. 2. Se L è vuota incrementare s a next_s e tornare al passo 1. Altrimenti, selezionare un nodo n da L. 3. Se n è un nodo finale, terminare restituendo n e il cammino dal nodo iniziale a n. 4. Altrimenti, cancellare n da L. Aggiungere in testa a L ogni figlio n' di n per cui f(n') s, ciascuno con il suo cammino dal nodo iniziale. Settare next_s come il min(f(n )) tale che f(n ) > s. Tornare al passo 2. Ricerca completa ed ottimale (euristiche ammissibili) Funzione euristica usata per potare nodi, non per determinare l'ordine di espansione, che rimane in profondità

Iterative deepening A* (IDA*) (2) Complessità in spazio esponenziale in p per A*, lineare in p per IDA* Complessità in tempo dipende da euristica Asintoticamente espande lo stesso numero di nodi di A* A* include una funzione di ordinamento: costo aggiuntivo! Minore è il range di valori dell euristica minore è il numero di espansioni Problemi con domini complessi (ampio range della funzione euristica) Se il valore euristico cambia ad ogni stato: ciascuna frontiera un solo stato in più rispetto a quella precedente! Se A* espande n nodi, IDA* n iterazioni: espande 1+2+3+ + n nodi Una Unasoluzione: IDA* IDA* ε-ammissibile Incrementare il il limite limite di di costo costo di di una una quantità fissata fissata ε Si Si riduce riduce il il costo costo di di ricerca, ricerca, ma ma la la soluzione può può non non essere essere peggiore rispetto rispetto all ottimale, al al più piùdi di un un valore valore pari pari aε(ma aε(ma sempre sempre completa) Un altra SMA*:Simplified Memory-Bounded A*

Un esempio: la formulazione chimica High-level Prop of XYZ Low-level Prop of XYZ Recipe."XYZ" Desired High-level Properties Test obiettivo, euristiche Desired Low-level Properties? Done Wanted Recipe satisfying the given goals

Scoperta di euristiche Nel gioco dell 8: h 1 = n 0 tessere fuori posto h 2 = distanza di Manhattan (somma delle distanze dalla posizione finale) sono lunghezze di cammino effettive per versioni semplificate con condizioni rilassate. Regola del gioco: Una tessera può muovere dal quadrato A al quadrato B (i) se A è adiacente a B e (ii) se B è vuoto Rilassando (ii) si ottiene h 2 Rilassando sia (i) che (ii) si ottiene h 1 Nota n: h 2 (n) h 1 (n) h 2 domina h 1 Se ci sono k euristiche h 1,, h k nessuna delle quali domina le altre, allora h (n) = max (h 1 (n),, h k (n)) è dominante ATTENZIONE a costo di esecuzione di funzioni euristiche

Minimax Giochi a 2 (MIN e MAX) a mosse alternate e informazione perfetta ESEMPIO: gioco del NIM N fiammiferi, mossa: dividere una fila in due sottofile non vuote e non uguali MIN MAX MIN MAX 7 6-1 1 1 5-2 4-3 0 1 0 1 5-1-1 4-2-1 3-2-2 3-3-1 0 4-1-1-1 3-2-1-1 1 0 2-2-1-1 1 1 MIN 3-1-1-1-1 0 2-2-1-1-1 1 MAX 2-1-1-1-1-1 Ad ogni nodo foglia: valore 0 se vincente per MIN - valore 1 se vincente per MAX Propagazione dei valori a ritroso: ai genitori MAX (MIN), valore massimo (minimo) dei figli (nell'esempio, MAX può vincere per qualunque prima mossa di MIN) In grafi grandi, si danno valori di stima ai nodi n mosse più avanti, si propagano a ritroso, e si usano per selezionare la prossima mossa. 0 (N=7, MIN muove per primo)

Alfa-Beta Procede in profondità, potando rami Valore alfa (con MAX), non decrescente MAX 3 A beta (con MIN), non crescente MIN 3 B 2 C MAX 3 D 2 F MIN 2 3 5 E 2 1 val (D) = max (5,E) BETA val (B) = min (3,max (5,E)) = 3 E (E potato) appena trova un figlio di D con valore BETA, ignora gli altri val (C) = min (2,F) ALFA val (A) = max (3,min (2,F)) = 3 F (F potato) appena trova un figlio di C con valore ALFA, ignora gli altri Si esaminano tutte le possibilità di un giocatore (ramificazione r) e la migliore risposta a ognuna di esse dell'altro giocatore (ramificazione 1). A profondita' p: p/2 nodi con r figli e p/2 nodi con 1 figlio. Numero totale di nodi: 2 r p/2 anzicchè r p

6 2 8 3 5 1 2 3 8 4 4 2 8 3 1 4 7 1 7 6 5 7 5 6 (a) (obiettivo) (c)