Risoluzione di problemi e ricerca Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Outline Agenti risolutori di problemi Tipi di problema Formulazione del problema Esempi di problemi Algoritmi di base per la ricerca Slides Intelligenza Artificiale, Vincenzo Cutello
Agenti risolutori di problemi Forma ristretta di un agente generale function SIMPLE-PROBLEM-SOLVING-AGENT(p) returns un azione Inputs: p, una percezione Static: s, una sequenza di azioni, inizialmente vuota state, una qualche descrizione dello stato corrente del mondo g, un obiettivo, inizialmente nullo problem, una formulazione del problema state UPDATE-STATE(state,p) if s è vuota then g FORMULATE-GOAL(state) problem FORMULATE-PROBLEM(state,g) s SEARCH(problem) action RECOMMENDATION(s,state) s REMAINDER(s,state) Return action Nota: questa è una risoluzione di problema offline La risoluzione di problemi online implica azioni senza una completa conoscenza del problema e della soluzione Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Esempio: Canada Dawson Whitehorse Churchill St. John’s Edmonton Quèbec Winnipeg Calgary Halifax Regina Ottawa Vancouver Montreal Slides Intelligenza Artificiale, Vincenzo Cutello Toronto
Slides Intelligenza Artificiale, Vincenzo Cutello Esempio: Canada Vacanza in Canada; attualmente a Whitehorse. Il volo parte domani da Ottawa Formulazione dell’obiettivo: essere ad Ottawa Formulazione del problema: stati: la varie città operatori: guidare da una città all’altra Trovare la soluzione: sequenza di città, cioè, Whitehorse, Edmonton, Winnipeg, Ottawa Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Tipi di problema Deterministico, accessibile problema a stato singolo Deterministico, inaccessibile problema a stato multiplo Nondeterministico, inaccessibile problema di contingenza è necessario l’uso di sensori durante l’esecuzione la soluzione è un albero spesso ricerca interleave, esecuzione Spazio degli stati sconosciuto problema di esplorazione (“online”) Slides Intelligenza Artificiale, Vincenzo Cutello
Esempio: il mondo dell’aspirapolvere Stato singolo, inizia al #5 Soluzione ?? Stato multiplo, inizia al {1,2,3,4,5,6,7,8} Cioè, Destra va al {2,4,6,8} Contingenza, inizia al #5 Legge di Murphy: si può sporcare un tappeto pulito Sensori locali: presenza e posizione della polvere. 1 2 3 4 5 6 7 8 Slides Intelligenza Artificiale, Vincenzo Cutello
Formulazione del problema a stato singolo Un problema è definito da quattro elementi: Stato iniziale cioè, “a Whitehorse” Operatori (o funzione successore S(x)) cioè, Whitehorse Dawson Whitehorse Vancouver etc. Verifica dell’obiettivo, può essere esplicito, cioè, x = “a Ottawa” implicito, cioè, Non_Sporco(x) Costo del cammino (additivo) cioè, somma delle distanze, numero di operatori eseguiti, etc. Una soluzione è una sequenza di operatori che conduce dallo stato iniziale allo stato obiettivo Slides Intelligenza Artificiale, Vincenzo Cutello
Selezionando uno spazio degli stati Il mondo reale è assurdamente complesso quindi lo spazio degli stati deve essere astratto per la risoluzione del problema (Astratto) stato = insieme di stati reali (Astratto) operatore = combinazione complessa di stati reali cioè, “Whitehorse Dawson” rappresenta un insieme complesso di rotte, fermate, etc. Per garantire la realizzabilità, a un qualsiasi stato reale “a Whitehorse” deve corrispondere un qualche stato reale “a Dawson” (Astratto) soluzione = l’insieme dei percorsi reali che sono soluzione nel mondo reale Ogni azione astratta dovrebbe essere più facile rispetto al problema originale Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Esempio: Il puzzle a 8 5 4 6 1 8 7 3 2 1 2 3 8 4 7 6 5 Stato iniziale Stato finale Stati ??: Posizioni intere delle tessere (ignoriamo le posizioni intermedie) Operatori ??: Muovi il bianco a sinistra, destra, sopra, sotto Verifica dell’obiettivo ??: = stato obiettivo (dato) Costo del cammino ??: 1 per mossa Nota: La soluzione ottima per la famiglia dei puzzle a n è NP-hard Slides Intelligenza Artificiale, Vincenzo Cutello
Grafo dello spazio degli stati per il mondo dell’aspirapolvere Stati ??: Locazione dello sporco e del robot (ignoriamo la quantità di sporco) Operatori ??: Sinistra, Destra, Aspira Verifica dell’obiettivo ??: assenza di sporco Costo del cammino ??: 1 per operatore Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Esempi: Il problema delle 8 regine; Criptoaritmetica undici + dieci = ventuno; Missionari e cannibali (capre e cavoli); Per ognuno: Stati – Operatori – Obiettivo - Costo Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Esempio: Il problema delle 8 regine; Stati ?? Operatori ?? Obiettivo ?? Costo ?? Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Esempi: Criptoaritmetica undici + dieci = ventuno; Missionari e cannibali (capre e cavoli); Per ognuno: Stati – Operatori – Obiettivo - Costo Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Esempio: SOKOBAN; Stati ?? Operatori ?? Obiettivo ?? Costo ?? Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Algoritmi di ricerca Idea di base: offline, esplorazione simulata dello spazio degli stati tramite la generazione di successori di stati già esplorati function GENERAL-SEARCH(problem,strategy) returns una soluzione, o un fallimento inizializza l’albero di ricerca usando lo stato iniziale del problema loop do if non ci sono candidati per l’espansione then return fallimento scegli una foglia per l’espansione in accordo alla strategia if il nodo contiene uno stato obiettivo then return la soluzione corrispondente else espandi il nodo, aggiungendo i nodi risultanti all’albero di ricerca end Slides Intelligenza Artificiale, Vincenzo Cutello
Esempio di ricerca generale Whitehorse Edmonton Dawson Vancouver Whitehorse Winnipeg Calgary Churchill Regina Churchill Ottawa Toronto Slides Intelligenza Artificiale, Vincenzo Cutello
Implementazione di algoritmi di ricerca function GENERAL-SEARCH(p:problem, QUEUING-FN) returns una soluzione o fallimento nodi MAKE-QUEUE(MAKE-NODE(INITIAL-STATE[p])) loop do if nodi è vuoto then return fallimento nodo REMOVE-FRONT(nodi) if GOAL-TEST[p] applicato a STATE(nodo) si verifica then return nodo nodi QUEUING-FN(nodi, EXPAND(nodo,OPERATORS[p])) end Slides Intelligenza Artificiale, Vincenzo Cutello
Implementazione: stati vs. nodi Uno stato è una (rappresentazione di) una configurazione fisica Un nodo è una struttura dati che costituisce una parte dell’albero di ricerca Include genitore, figli, profondità o costo del cammino g(x) Gli stati non hanno genitori, figli, profondità, o costo del cammino ! genitori 5 4 6 1 8 7 3 2 profondità = 6 g = 6 stato figli La funzione EXPAND crea nuovi nodi, riempendo i vari campi e usando OPERATORS (o SuccessorsFn) del problema per creare gli stati corrispondenti. Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Strategie di ricerca Una strategia è definita stabilendo l’ordine di espansione dei nodi. Le strategie sono valutate mediante i seguenti criteri: completezza – la soluzione viene sempre trovata se questa esiste ? complessità temporale – numero di nodi generati/espansi complessità spaziale – massimo numero di nodi in memoria ottimalità – viene sempre trovata la soluzione meno costosa ? La complessità spaziale e temporale sono misurate in termini di b – massimo fattore di ramificazione dell’albero di ricerca d – profondità della soluzione meno costosa m – massima profondità dello spazio degli stati (potrebbe essere infinito) Slides Intelligenza Artificiale, Vincenzo Cutello
Strategie di ricerca non informata Le strategie non informate usano soltanto l’informazione disponibile nella definizione del problema Ricerca breadth-first Ricerca a costo uniforme Ricerca depth-first Ricerca depth-first limitata Ricerca iterativa Slides Intelligenza Artificiale, Vincenzo Cutello
Ricerca breadth-first Espandi il nodo meno profondo non espanso Implementazione: QUEUEINGFN = metti i nodi successori alla fine della coda Slides Intelligenza Artificiale, Vincenzo Cutello
Ricerca breadth-first Whitehorse Edmonton Dawson Vancouver Whitehorse Churchill Whitehorse Calgary Whitehorse Calgary Churchill Winnipeg Slides Intelligenza Artificiale, Vincenzo Cutello
Proprietà della ricerca breadth-first Completa ?? Si (se b è finita) Tempo ?? 1+b+b2+b3+…+bd =O(bd), cioè, esponenziale in d Spazio ?? O(bd) (mantiene ogni nodo in memoria) Ottimalità ?? Si (se il costo = 1 ad ogni passo); non ottimale in generale Lo spazio è il grande problema; si possono facilmente generare nodi a 1MB/sec così 24hrs = 86GB Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Canada con costi in Km Dawson 450 2650 Whitehorse Churchill 1600 St. John’s 1350 Edmonton 1650 1500 1100 450 950 1250 Quèbec 750 850 Winnipeg Calgary 500 1800 250 Halifax Regina Ottawa Vancouver Montreal 175 1600 400 Toronto Slides Intelligenza Artificiale, Vincenzo Cutello
Ricerca a costo uniforme Espandi il nodo meno costoso non ancora espanso Implementazione: QUEUEINGFN = inserisce i nodi in ordine crescente rispetto al costo del cammino Slides Intelligenza Artificiale, Vincenzo Cutello
Ricerca a costo uniforme Whitehorse 450 1650 1600 Dawson Edmonton Vancouver 450 1250 2650 1600 450 1350 Whitehorse Churchill Calgary Winnipeg Churchill Whitehorse Slides Intelligenza Artificiale, Vincenzo Cutello
Proprietà della ricerca a costo uniforme Completa ?? Si, se il costo di ogni passo è ≥ ε Tempo ?? # di nodi con g ≤ costo della soluzione ottima Spazio ?? Ottimalità ?? Si Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Ricerca depth-first Espandi il nodo più profondo non ancora espanso Implementazione: QUEUEINGFN = inserisce i nodi all’inizio della coda Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Ricerca depth-first Whitehorse Dawson Edmonton Vancouver Whitehorse Churchill Dawson Edmonton Vancouver Slides Intelligenza Artificiale, Vincenzo Cutello
Ricerca Depth-first: Problemi La ricerca depth-first può eseguire percorsi con infiniti cicli Necessitiamo di uno spazio di ricerca finito e non ciclico (o un controllo sulla ripetizione degli stati) Slides Intelligenza Artificiale, Vincenzo Cutello
Proprietà della ricerca depth-first Completezza ?? No: fallisce in spazi con profondità infinita, spazi con cicli Evitando la ripetizione degli stati attraverso il cammino completezza in spazi finiti Tempo ?? O(bm): terribile se m è molto più grande di d ma se le soluzioni sono dense, potrebbe essere più veloce della breadth-first Spazio ?? O(bm), cioè, spazio lineare ! Ottimalità ?? No Slides Intelligenza Artificiale, Vincenzo Cutello
Ricerca a profondità limitata = ricerca depth-first con limite di profondità l Implementazione: I nodi a profondità h non hanno successori Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Ricerca iterativa function ITERATIVE-DEEPENING-SEARCH(problema) returns una soluzione input: problema, un problema for h 0 to ∞ do risultato DEPTH-LIMITED-SEARCH(problem, h) if P(risultato) then return risultato end Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Ricerca iterativa h=0 Whitehorse Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Ricerca iterativa h=1 Whitehorse Dawson Edmonton Vancouver Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Ricerca iterativa h=2 Whitehorse Dawson Edmonton Vancouver Whitehorse Churchill Whitehorse Calgary Churchill Winnipeg Whitehorse Calgary Slides Intelligenza Artificiale, Vincenzo Cutello
Proprietà della ricerca iterativa Completezza ?? Si Tempo ?? (d+1)b0+db1+(d-1)b2+…+bd=O(bd) Spazio ?? O(bd) Ottimalità ?? Si, se il costo di un passo = 1 Può essere modificata per esplorare alberi a costo uniforme Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Riassunto Solitamente la formulazione del problema richiede astrazione dai dettagli del mondo reale per definire uno stato degli spazi che può essere facilmente esplorato Varietà di strategie di ricerca non informata La ricerca iterativa usa spazio lineare e non molto più tempo degli altri algoritmi di ricerca non informata Slides Intelligenza Artificiale, Vincenzo Cutello