Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoLelio Bini Modificato 9 anni fa
2
Gli agenti per il problem solving Maria Simi a.a 2007/2008
3
Agenti risolutori di problemi Adottano il paradigma della risoluzione di problemi come ricerca in uno spazio di stati Sono particolari agenti con obiettivo, che pianificano l’intera sequenza di mosse prima di agire Passi da seguire: 1. Determinazione obiettivo (un insieme di stati) 2. Formulazione del problema 3. Determinazione della soluzione mediante ricerca 4. Esecuzione del piano
4
Che tipo di assunzioni? L’ambiente è statico Osservabile Discreto un insieme finito di azioni possibili Deterministico Si assume che l’agente possa eseguire il piano “ad occhi chiusi”. Niente può andare storto.
5
Formulazione del problema 1. Stato iniziale 2. Funzione successore: Fn-succ: stato { *} (1 e 2 definiscono lo spazio degli stati) 3. Test obiettivo: Goal-test: stato {true, false} 4. C osto del cammino (somma dei costi delle azioni): Fn-costo-cammino Un problema può essere definito formalmente da 4 componenti:
6
Algoritmi di ricerca Gli algoritmi di ricerca prendono in input un problema e restituiscono un cammino soluzione, i.e. un cammino che porta dallo stato iniziale a uno stato goal Misura delle prestazioni Trova una soluzione? quanto costa trovarla? quanto efficiente è la soluzione? Costo totale = costo della ricerca + costo del cammino soluzione
7
Itinerario (route finding): il problema
8
Itinerario: la formulazione Stati: le città. Es. In(Pitesti) Stato iniziale: la città da cui si parte. In(Arad) Obiettivo: la città destinazione. In(Bucarest) Azioni: spostarsi su una città vicina collegata Fn-succ(In(Arad)) = {,, …} Costo del cammino: somma delle lunghezze delle strade Lo spazio degli stati coincide con la rete di collegamenti tra città
9
Aspirapolvere (Vacuum world ): il problema Versione semplice: solo due locazioni, sporche o pulite, l’agente può essere in una delle due Percezioni: Dirt, No_dirt Azioni: Left, Right, Suck
10
Aspirapolvere: formulazione Obiettivo: rimuovere lo sporco { 7, 8 } Funzione di costo: ogni azione ha costo 1 Spazio degli stati :
11
Il puzzle dell’otto
12
Puzzle dell’otto: formulazione Stati: configurazioni della scacchiera Stato iniziale: una certa configurazione Obiettivo: una certa configurazione Goal-Test: Stato obiettivo? Azioni: mosse della casella bianca in sù: in giù: a destra: a sinistra: Costo cammino: ogni passo costa 1 Lo spazio degli stati è un grafo con possibili cicli.
13
Le otto regine: il problema Collocare 8 regine sulla scacchiera in modo tale che nessuna regina sia attaccata da altre
14
Le otto regine: formulazione incrementale 1 Stati: scacchiere con 0-8 regine Goal-Test: 8 regine sulla scacchiera, nessuna attaccata Costo cammino: zero Azioni: aggiungi una regina 64 63 … 57 ~ 3 10 4 sequenze da considerare!
15
Le otto regine: formulazione incrementale 2 Stati: scacchiere con 0-8 regine, nessuna minacciata Goal-Test: 8 regine sulla scacchiera, nessuna minacciata Costo cammino: zero Azioni: aggiungi una regina nella colonna vuota più a destra ancora libera in modo che non sia minacciata 2057 sequenze da considerare
16
Le 8 regine: formulazione a stato completo Goal-Test: 8 regine sulla scacchiera, nessuna minacciata Costo cammino: zero Stati: scacchiere con 8 regine, una per colonna Azioni: sposta una regina nella colonna, se minacciata
17
Dimostrazione di teoremi Il problema: Dato un insieme di premesse {s, t, q p, r p, v q, t r, s v} dimostrare una proposizione p Nel calcolo proposizionale un’unica regola di inferenza, il Modus Ponens (MP): Se p e p q allora q
18
Dim. teoremi: formulazione Stati: insiemi di proposizioni Stato iniziale: un insieme di proposizioni (le premesse). Stato obiettivo: un insieme di proposizioni contenente il teorema da dimostrare. Es p. Operatori: l’applicazione del MP, che aggiunge teoremi continua
19
Dim. teoremi: spazio degli stati {s, t, q p, r p, v q, t r, s v} {s, t, q p, r p, v q, t r, s v, v} {s, t, q p, r p, v q, t r, s v, r} {s, t, q p, r p, v q, t r, s v, v, q} {s, t, q p, r p, v q, t r, s v, r, p} {s, t, q p, r p, v q, t r, s v, v, q, p}
20
Ricerca della soluzione Generazione di un albero di ricerca sovrapposto allo spazio degli stati
21
Ricerca della soluzione Generazione di un albero di ricerca sovrapposto allo spazio degli stati
22
Strategia di ricerca function Tree-Search(problem, strategy) … loop do if non ci sono nodi da espandere then return failure scegli un nodo da espandere in base alla strategia if il nodo corrisponde a uno stato goal then return la soluzione corrispondente else espandi il nodo e aggiungi i successori all’albero di ricerca end Ovvero: quale nodo espandere tra quelli foglia?
23
I nodi dell’albero di ricerca Un nodo ha cinque componenti: Uno stato Il nodo genitore L’operatore applicato per generarlo La profondità del nodo Il costo del cammino dal nodo iniziale al nodo Datatype node components: state, parent-node, operator, depth, path-cost
24
Struttura dati per la frontiera Frontiera: lista dei nodi in attesa di essere espansi (le foglie dell’albero di ricerca). La frontiera è implementata come una coda con operazioni: Make-Queue Empty? First, Rest, RemoveFront Insert, InsertAll I diversi tipi di coda hanno diverse Insert
25
Algoritmo di ricerca function Tree-Search (problem, fringe) returns a solution or failure fringe Insert(Make-Node(Initial-State[problem]), fringe)) loop do if Empty?(fringe) then return failure node RemoveFront(fringe) if Goal-Test[problem] (State[node]) = true then return Solution(node) fringe InsertAll(Expand(node, problem), fringe) end
26
Valutazione di una strategia Completezza: se la soluzione esiste viene trovata Ottimalità (ammissibilità): trova la soluzione migliore, con costo minore Complessità nel tempo: tempo richiesto per trovare la soluzione Complessità nello spazio: memoria richiesta
27
Strategie non informate Ricerca in ampiezza Ricerca di costo uniforme Ricerca in profondità Ricerca in profondità limitata Ricerca con approfondimento iterativo Vs strategie di ricerca euristica (o informata): fanno uso di informazioni riguardo alla distanza stimata dalla soluzione
28
Ricerca in ampiezza Implementata con una coda che inserisce alla fine (FIFO)
29
Ricerca in ampiezza: analisi Strategia completa Strategia ottimale se gli operatori hanno tutti lo stesso costo k, cioè g(n) = k · depth(n), dove g(n) è il costo del cammino per arrivare a n Assumendo b = fattore di diramazione (numero max di successori) d = profondità della soluzione più superficiale Complessità nel tempo (nodi generati) b + b 2 + … + b d + (b d+1 – b) O(b d+1 ) Complessità spazio (nodi in memoria): O(b d+1 )
30
Ricerca in ampiezza: esempio Esempio: b=10; 10000 nodi al sec generati; 1 nodo occupa 1000 byte ProfonditàNodiTempoMemoria 2 4 6 8 10 12 14 1.100 111.000 10 7 10 9 10 11 10 13 10 15 0,11 sec 11 sec 19 min 31 ore 129 giorni 35 anni 3523 anni 1 megabyte 106 megabyte 10 gigabyte 1 terabyte 101 terabyte 10 petabyte 1 exabyte
31
Ricerca di costo uniforme Generalizzazione della ricerca in ampiezza: si sceglie il nodo di costo minore sulla frontiera (si intende il costo del cammino) Implementata da una coda ordinata per costo crescente (in cima i nodi di costo minore)
32
Costo uniforme: analisi Ottimalità e completezza garantite purché il costo degli archi sia maggiore di 0. Nota: quando ogni azione ha lo stesso costo Uniform-search = Breadth-first Complessità: O(b 1+ C*/ ) C* è il costo della soluzione ottima (C*/ è il numero di mosse nel caso peggiore)
33
Ricerca in profondità Implementata da una coda che mette i successori in testa alla lista (LIFO, pila o stack).
34
Ricerca in profondità: analisi Sem distanza massima della soluzione nello spazio di ricerca b fattore di diramazione Tempo: O(b m+1 ) Occupazione memoria: bm + 1 Strategia non completa e non ottimale. Drastico risparmio in memoria: BF d=12 10 petabyte DF d=12118 Kbyte
35
Ricerca con backtracking (ricorsiva) Ancora più efficiente in occupazione di memoria perché mantiene solo il cammino corrente (solo m) function Recursive-DF(node, problem) returns a solution or failure if Goal-Test[problem](State[node]) then return Solution(node) else for each successor in Expand(node, problem) do result Recursive_DF(successor, problem) if result ≠ failure then return result end return failure
36
Ricerca in profondità limitata (DL) Si va in profondità fino ad un certo livello predefinito l Completa per problemi in cui si conosce un limite superiore per la profondità della soluzione. Es. Route-finding limitata dal numero di città – 1 Completo: se d < l Non ottimale Complessità tempo: O(b l ) Complessità spazio: O(b. l )
37
DL ricorsivo function Recursive-DL(node, problem, limit) returns a solution or failure or cutoff cutoff-occurred? false if Goal-Test[problem](State[node]) then return Solution(node) else if Depth[node] = limit then return cutoff else for each successor in Expand(node, problem) do result Recursive_DL(successor, problem, limit) if result = cutoff then cutoff-occurred? true else if result ≠ failure then return result end if cutoff-occurred? then return cutoff else return failure
38
Approfondimento iterativo (ID) Limite 0Limite 1Limite 2Limite 3
39
ID: analisi Miglior compromesso tra BF e DF BF: b+b 2 + … +b d-1 +(b d+1 – b) con b=10 e d=5 10+100+1000+10.000+100.000+(1.000.000– 10)=1.111.100 ID: I nodi dell’ultimo livello generati una volta, quelli del penultimo 2, quelli del terzultimo 3 … quelli del primo d volte ID: (d)b+(d-1) b 2 + … +3b d-2 +2b d-1 +1b d = 50+400+3000+20.000+100.000=123450 Complessità tempo: O(b d ) Spazio: O(b.d)
40
Direzione della ricerca Un problema ortogonale alla strategia è la direzione della ricerca: ricerca in avanti o guidata dai dati: si esplora lo spazio di ricerca dallo stato iniziale allo stato obiettivo; ricerca all’indietro o guidata dall’obiettivo: si esplora lo spazio di ricerca a partire da uno stato goal e riconducendosi a sotto-goal fino a trovare uno stato iniziale.
41
Quale direzione? Conviene procedere nella direzione in cui il fattore di diramazione è minore Si preferisce ricerca all’indietro quando: l’obiettivo e chiaramente definito (th. pr.) o si possono formulare una serie limitata di ipotesi; i dati del problema non sono noti e la loro acquisizione può essere guidata dall’obiettivo Si preferisce ricerca in avanti quando: gli obiettivi possibili sono molti (design) abbiamo una serie di dati da cui partire
42
Ricerca bidirezionale Si procede nelle due direzioni fino ad incontrarsi
43
Ricerca bidirezionale: analisi Complessità tempo: O(b d/2 ) (test intersezione in tempo costante, es. hash table) Complessità spazio: O(b d/2 ) (almeno tutti i nodi in una direzione in memoria, es usando BF) NOTA: non sempre applicabile, es. predecessori non definiti, troppi stati obiettivo …
44
Confronto delle strategie CriterioBFUCDFDLIDBidir Tempo Spazio Ottimale? Completa? b d+1 si(*) si b 1+ C*/ si(**) b m no b l b. l no si (+) b d si(*) si b d/2 si (*) se gli operatori hanno tutti lo stesso costo (**) per costi degli archi > 0 (+) per problemi per cui si conosce un limite alla profondità della soluzione (se l >d)
45
Evitare stati ripetuti Su spazi di stati a grafo si generano più volte gli stessi nodi nella ricerca. Come evitare di visitare nodi già visitati?
46
Compromesso tra spazio e tempo Ricordare gli stati già visitati occupa spazio ma ci consente di evitare di visitarli di nuovo Gli algoritmi che dimenticano la propria storia sono destinati a ripeterla!
47
Tre soluzioni Tre tecniche in ordine crescente di costo e di efficacia: Non tornare nello stato da cui si proviene: si elimina il genitore dai nodi successori; Non creare cammini con cicli: si controlla che i successori non siano antenati del nodo corrente; Non generare nodi con stati già visitati: ogni nodo visitato deve essere tenuto in memoria per una complessità O(b d ), o meglio O(s) dove s è il numero di stati possibili (hash table).
48
Ricerca su grafi Mantiene una lista dei nodi visitati (closed) Prima di espandere un nodo si controlla se lo stato era stato già incontrato prima Se questo succede il nodo appena trovato non viene espanso Ottimale solo se abbiamo la garanzia che il costo del nuovo cammino è maggiore Altrimenti necessario aggiornamento
49
L’algoritmo di ricerca su grafi
50
Ricerca con informazione parziale La conoscenza degli stati e dell’effetto delle azioni può essere incompleta. 1. Problemi senza sensori (sensorless) un insieme di stati possibili 2. Problemi con contingenza effetto delle azioni incerto (non deterministico o con avversario) 3. Problemi di esplorazione servono azioni per acquisire informazioni
51
Il mondo dell’aspirapolvere senza sensori
52
Problemi con contingenza e di esplorazione Aspirapolvere con sensori difettoso: che qualche volta deposita sporco se casella pulita Vanno considerati tutti i possibili effetti Piano condizionale (prevede le possibili contingenze) Alternanza di pianificazione e azione (o ricerca ed esecuzione) è tipica dei giochi con avversario I problemi di esplorazione sono casi estremi di problemi con contingenza in cui l’agente deve anche pianificare azioni esplorative
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.