download(PDF) - Dipartimento di Ingegneria dell'Informazione
download(PDF) - Dipartimento di Ingegneria dell'Informazione
download(PDF) - Dipartimento di Ingegneria dell'Informazione
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Nome e Cognome:<br />
Matricola:<br />
Nickname:<br />
Intelligenza Artificiale<br />
Compito - 12 Marzo 2007<br />
ESERCIZIO N° 1 – Ricerca Informata A* 4 punti<br />
Stabilite se un’euristica monotona permette ad A* <strong>di</strong> espandere sempre meno no<strong>di</strong> rispetto alla ricerca a costo<br />
uniforme. Motivate la risposta.<br />
Sì. A*, usando un’euristica monotona, espanderà sempre meno no<strong>di</strong> della ricerca UCS. UCS<br />
rappresenta un caso particolare <strong>di</strong> A* in cui hUSC(n) = 0 ∀n . A* sfrutta un’euristica<br />
monotona, quin<strong>di</strong> ammissibile, hA*(n) ≤ h*(n) ∀n. Ipotizzando che al nodo goal l’euristica<br />
abbia valore pari a 0, ne consegue che: 0 = hUSC(n) ≤ hA*(n) ≤ h*(n) ∀n. Questo coincide con<br />
la definizione <strong>di</strong> dominanza: hA*(n) domina hUCS(n) ogni nodo espanso da A* è anche<br />
espanso da UCS. Infatti fA*(n) ≥ fUCS(n) ∀n, quin<strong>di</strong> il numero <strong>di</strong> no<strong>di</strong> espansi da UCS, in cui<br />
fUCS(n) ≤ f*, è maggiore dei no<strong>di</strong> espansi da A*, in cui fA*(n) ≤ f*.<br />
ESERCIZIO N° 2 – Quiz “Vero o Falso” (+0,5 per ogni risposta corretta, -0,25 per ogni risposta errata) 6 punti<br />
1. Usando una versione <strong>di</strong> WA* in cui f(n)=g(n)+wh(n) e w=3, se h*(xo) = 20 allora il costo delle<br />
soluzioni ottenute sarà superiore a 60.<br />
2.<br />
3.<br />
Un algoritmo <strong>di</strong> ricerca ad approfon<strong>di</strong>menti iterativi trova la stessa soluzione <strong>di</strong> un algoritmo <strong>di</strong><br />
ricerca depth-first.<br />
Nella ricerca bi<strong>di</strong>rezionale le euristiche front-to-front valutano la <strong>di</strong>stanza tra un nodo della<br />
frontiera “forward” e un nodo della frontiera “backward”.<br />
4. Con lookahead infinito gli algoritmi real-time coincidono con gli algoritmi off-line. V F<br />
5. La ricerca ad approfon<strong>di</strong>menti iterativi visita sempre più no<strong>di</strong> della ricerca in ampiezza. V F<br />
6. Alfa-Beta Pruning trova mosse migliori <strong>di</strong> Minimax (a parità <strong>di</strong> taglio <strong>di</strong> profon<strong>di</strong>tà). V F<br />
7.<br />
8.<br />
9.<br />
10.<br />
11.<br />
12.<br />
I pattern databases permettono <strong>di</strong> calcolare un’euristica più informata sfruttando l’informazione<br />
ottenuta dalla risoluzione previa <strong>di</strong> porzioni del problema.<br />
Aggiungendo a IDA* una tabella hash che conserva i no<strong>di</strong> già espansi si <strong>di</strong>minuisce sia il costo<br />
temporale e sia il costo spaziale della ricerca.<br />
L’Alfa-beta pruning pota solo i rami dell’albero <strong>di</strong> ricerca che non influenzano la decisione<br />
minimax.<br />
A <strong>di</strong>fferenza <strong>di</strong> LRTA* l’algoritmo Online Depth First Search ha bisogno unicamente <strong>di</strong> una<br />
pila <strong>di</strong> no<strong>di</strong> per effettuare la scelta <strong>di</strong> un operatore.<br />
Nel caso <strong>di</strong> giochi multiplayer in cui le alleanze non sono ammesse non è possibile determinare<br />
la mossa ottima (secondo il criterio minimax) per l’agente intelligente.<br />
L’algoritmo minimax potrebbe essere reso più efficiente usando la ricerca ad approfon<strong>di</strong>menti<br />
iterativi, invece che la ricerca in profon<strong>di</strong>tà.<br />
V F<br />
V F<br />
V F<br />
V F<br />
V F<br />
V F<br />
V F<br />
V F<br />
V F
ESERCIZIO N° 3 – Ricerca Informata 8 punti<br />
2<br />
C<br />
3<br />
G1<br />
0<br />
1<br />
6<br />
Iterative deepening search<br />
Percorso risolvente:<br />
S B G2<br />
No<strong>di</strong> espansi: {} / S / S,A,B / S,A,C,D,B,E,G2<br />
Uniformed Cost search<br />
Percorso risolvente:<br />
No<strong>di</strong> espansi:<br />
Greedy search<br />
Percorso risolvente:<br />
S B E G2<br />
In questo grafo vengono riportati sugli archi i costi<br />
<strong>di</strong> cammino da uno stato all’altro e all’interno dei<br />
no<strong>di</strong> una valutazione euristica della <strong>di</strong>stanza da<br />
uno stato goal.<br />
Lo stato <strong>di</strong> partenza è S, gli stati goal sono G1 e<br />
G2.<br />
Per ognuno degli algoritmi proposti riportate: a) il<br />
percorso risolvente; b) la lista or<strong>di</strong>nata <strong>di</strong> no<strong>di</strong><br />
espansi. In caso <strong>di</strong> algoritmo iterativo separare con<br />
“/” le varie iterazioni.<br />
NOTA: il test <strong>di</strong> terminazione viene effettuato in<br />
fase <strong>di</strong> espansione. In caso <strong>di</strong> dubbio la scelta tra i<br />
no<strong>di</strong> avviene in or<strong>di</strong>ne alfabetico.<br />
(with CLOSED list) S,A,C,B,D,E,G2<br />
(without CLOSED list) S,A,C,S,B,D,E,A,D,C,B,B,E,S,B,E,G2<br />
S A D G1<br />
No<strong>di</strong> espansi: S,A,D,G1<br />
A* search<br />
2<br />
Percorso risolvente:<br />
S B E G2<br />
No<strong>di</strong> espansi: S,A,C,D,B,E,G2<br />
IDA* search<br />
A<br />
5<br />
4 6<br />
D<br />
2<br />
Percorso risolvente:<br />
3<br />
S<br />
10<br />
3<br />
7<br />
B<br />
5<br />
1<br />
E<br />
4<br />
9<br />
8<br />
5<br />
S B E G2<br />
No<strong>di</strong> espansi: {} / S,A,C,D / S,A,C,D,D / S,A,C,D,D,B,E / S,A,C,D,D,B,E,G2<br />
G2<br />
0
ESERCIZIO N° 4 – Game Playing 5 punti<br />
Osservate il seguente albero in cui MAX muove per primo.<br />
v=4<br />
β=3<br />
A) Qual è la mossa che MAX dovrà effettuare? E quale sarà probabilmente la mossa <strong>di</strong> MIN? Nel caso in cui MIN<br />
non muova in modo ottimo, quale potrebbe essere l’utilità finale <strong>di</strong> MAX?<br />
MAX effettuerà la mossa che porta a D. MIN dovrebbe rispondere con J.<br />
In caso contrario (configurazione K) MAX muoverebbe su U e quin<strong>di</strong> l’utilità finale sarebbe<br />
pari a 7 (maggiore dell’utilità minimax teorica: U(A)=4).<br />
B) Riportate in modo or<strong>di</strong>nato i no<strong>di</strong> visitati da MINIMAX.<br />
v=3<br />
α=3<br />
A,B,C,D,E,F,G,L,M,N,O,P,H,Q,I,R,S,W,X,Y,Z,J,T,K,U,V,X2,Y2,Z2<br />
oppure (no<strong>di</strong> “espansi”)<br />
A,B,E,L,M,F,N,O,G,P,C,H,Q,I,R,W,X,S,Y,Z,D,J,T,K,U,X2,V,Y2,Z2<br />
C) Riportate, nodo per nodo, i valori <strong>di</strong> utilità calcolati da MINIMAX.<br />
E=3; F=4; G=5; H=3; R=1; S=-1; I=1; J=4; U=7; V=-2; K=7; B=3; C=1; D=4; A=4;<br />
D) Quali sono i no<strong>di</strong> che la potatura alfa-beta non visita? Motivate la risposta mostrando sull’albero i valor assunti<br />
da v, alfa e beta nel caso <strong>di</strong> potature.<br />
La potatura alfa-beta evita la visita dei no<strong>di</strong>:<br />
O; I; R; W; X; S; Y; Z; V; Y2; Z2.<br />
v=7<br />
β=4
ESERCIZIO N° 5 – Torre <strong>di</strong> Hanoi 10 punti<br />
Considerate il problema della Torre <strong>di</strong> Hanoi (Figura A). Avete 3 paletti sui quali infilare 3 <strong>di</strong>schi <strong>di</strong> <strong>di</strong>verse<br />
<strong>di</strong>mensioni. Lo scopo del gioco è quello <strong>di</strong> portare i <strong>di</strong>schi dalla configurazione S (dove tutti i <strong>di</strong>schi si trovano sul<br />
paletto sinistro) alla configurazione G (tutti i <strong>di</strong>schi sul paletto destro). Potete muovere un solo <strong>di</strong>sco per volta. Un<br />
<strong>di</strong>sco non può essere collocato sopra un <strong>di</strong>sco <strong>di</strong> <strong>di</strong>mensioni inferiori. NOTA: come nei riquadri in Figura A, i<br />
<strong>di</strong>schi possono essere rappresentati usando i numeri 1 (piccolo), 2 (me<strong>di</strong>o), 3 (grande).<br />
(S)<br />
(n)<br />
A) Analizzate la <strong>di</strong>mensione dello spazio degli stati e <strong>di</strong>te come questa cambia al variare del numero <strong>di</strong> <strong>di</strong>schi.<br />
Per generare configurazioni legali della Torre <strong>di</strong> Hanoi partiamo da una configurazione priva <strong>di</strong><br />
<strong>di</strong>schi e li inseriamo partendo da quello più grande fino al più piccolo. Grazie all’inserimento<br />
or<strong>di</strong>nato siamo liberi <strong>di</strong> posizionare ogni <strong>di</strong>sco su qualsiasi paletto. Sia il <strong>di</strong>sco “3”, sia il <strong>di</strong>sco “2”,<br />
sia il <strong>di</strong>sco “1” potranno essere inseriti in 3 paletti <strong>di</strong>versi. Il numero <strong>di</strong> configurazioni legali è<br />
quin<strong>di</strong> pari a 3x3x3 = 27. Nel caso generale, dati N <strong>di</strong>schi il numero <strong>di</strong> configurazioni legali è 3 N .<br />
B) Analizzate il branching factor minimo e massimo dell’albero <strong>di</strong> ricerca e <strong>di</strong>te come questi cambiano al<br />
variare del numero <strong>di</strong> <strong>di</strong>schi.<br />
In<strong>di</strong>pendentemente dal numero <strong>di</strong> <strong>di</strong>schi, il problema presenta 3 “torri” con un totale <strong>di</strong> 3 <strong>di</strong>schi <strong>di</strong><br />
<strong>di</strong>mensioni <strong>di</strong>verse su cui applicare l’operatore <strong>di</strong> spostamento: D1 < D2 < D3 (la torre vuota è come un<br />
<strong>di</strong>sco <strong>di</strong> <strong>di</strong>mensioni infinite). Qualunque sia l’or<strong>di</strong>ne, D1 potrà essere mosso su D2 e D3; D2 su D3;<br />
mentre D3 non potrà essere mosso. In totale si hanno al massimo 3 mosse. Il branch factor minimo si<br />
ha quando 2 torri sono nulle, quin<strong>di</strong> vale solo: D1 muove su D2 e D3. Il branching factor minimo è <strong>di</strong> 2<br />
mosse. Durante la ricerca, possiamo imporre che non venga mai rivisitato il nodo padre (più in generale<br />
che non venga mai rimosso due volte <strong>di</strong> seguito lo stesso <strong>di</strong>sco).: quin<strong>di</strong> bMAX= 2; bMIN=1. Al variare del<br />
numero <strong>di</strong> <strong>di</strong>schi il branching factor rimane invariato.<br />
C) Provate a proporre 2 euristiche garantitamente ammissibili h1 e h2 usando le tecniche viste a lezione.<br />
Obiettivo: portare tutti i <strong>di</strong>schi sul paletto “target” in modo or<strong>di</strong>nato.<br />
I vincoli sugli operatori sono i seguenti: A) si muove un <strong>di</strong>sco per volta da t1 a t2; B) si preleva un <strong>di</strong>sco<br />
dalla cima della torre t1; C) si inserisce un <strong>di</strong>sco sulla cima <strong>di</strong> una torre t2; D) si muove un <strong>di</strong>sco da t1 a<br />
t2 se il <strong>di</strong>sco in t2 è più grande; E) il numero <strong>di</strong> paletti su cui fare un inserimento è pari a 2.<br />
Si possono ottenere molte euristiche <strong>di</strong>verse a seconda della combinazione dei vincoli rilassati. Ad es:<br />
h1 = euristica che deriva dal rilassamento <strong>di</strong> B, C, D, E. Questa euristica equivale al numero <strong>di</strong> <strong>di</strong>schi<br />
“fuori posto”.<br />
(G)<br />
1 X X<br />
2 X X<br />
3 X X<br />
X X 1<br />
X X 2<br />
X X 3<br />
1<br />
2 3 X<br />
Figura A: Torre <strong>di</strong> Hanoi.<br />
(S) configurazione iniziale<br />
(G) configurazione goal<br />
(n) configurazione <strong>di</strong> prova per l’esercizio D<br />
Un <strong>di</strong>sco può essere spostato da un paletto ad un<br />
altro solo se nel paletto <strong>di</strong> arrivo non è presente un<br />
<strong>di</strong>sco più piccolo.<br />
Ogni mossa ha costo pari a 1 (in<strong>di</strong>pendentemente<br />
dalla <strong>di</strong>stanza tra il paletto <strong>di</strong> origine e quello <strong>di</strong><br />
arrivo).<br />
h2 = rilassamento <strong>di</strong> D ed E. Per calcolarla si può effettuare una ricerca nello spazio degli stati del<br />
problema rilassato. E’ equivalente a <strong>di</strong>re: numero <strong>di</strong>schi fuori posto + 2 mosse per ogni <strong>di</strong>sco sul paletto<br />
target che non è al livello giusto (perché il <strong>di</strong>sco andrà “tolto e rimesso” effetto del vincolo C) + 1<br />
mossa per ogni <strong>di</strong>sco non sul target che ha sotto <strong>di</strong> sé un <strong>di</strong>sco più grande (il <strong>di</strong>sco dovrà essere<br />
portato su un altro paletto non target per lasciar “uscire” il <strong>di</strong>sco più grande effetto del vincolo B).
D) Applicate A* partendo dalla configurazione n (Figura A). Mostrate sul retro del foglio gli alberi <strong>di</strong> ricerca <strong>di</strong><br />
A* considerando che a parità <strong>di</strong> f(n) si preferisce il nodo con minor h(n). Quale delle due euristiche domina<br />
l’altra? Motivate.<br />
Dopo aver applicato A* usando l’euristica h1 e l’euristica h2 osserviamo che il numero <strong>di</strong><br />
no<strong>di</strong> espansi nella ricerca è minore per h2. Di più, con h2 A* espande i no<strong>di</strong> in modo<br />
verticale verso la soluzione: nel caso della configurazione n l’euristica h2 risulta<br />
perfettamente informata. Entrambe le euristiche sono ammissibili perché ottenute da<br />
tecnica <strong>di</strong> astrazione e rilassamento dei vincoli. Contemporaneamente vale la<br />
<strong>di</strong>suguaglianza h2(n) ≥ h1(n) ∀n. Quin<strong>di</strong> h2 domina h1.<br />
ESERCIZIO N° 6 (FACOLTATIVO) – Game Playing 5 punti<br />
Immaginate <strong>di</strong> giocare una versione <strong>di</strong> Tic-Tac-Toe (tris) in cui:<br />
a) i giocatori non vedono le mosse dell’avversario;<br />
b) una segnalazione acustica vi avverte quando inserite la crocetta (o cerchio) in una cella dove si trova già<br />
l’avversario. In caso <strong>di</strong> segnalazione potrete ripetere la mossa.<br />
Analizzate le caratteristiche <strong>di</strong> questo gioco e provate ad adattare l’algoritmo minimax in modo opportuno.<br />
Illustrate il vostro ragionamento tramite una configurazione <strong>di</strong> esempio.<br />
Si tratta <strong>di</strong> un gioco ad informazione imperfetta (non conosciamo completamente lo stato<br />
del gioco). Data la mancanza <strong>di</strong> conoscenza sulle mosse dell’avversario la segnalazione<br />
acustica può essere considerata come un evento <strong>di</strong> natura stocastica.<br />
Dobbiamo quin<strong>di</strong> adattare minimax in modo da gestire questi due fattori.<br />
La mancanza <strong>di</strong> conoscenza sulla configurazione può essere gestita associando ad ogni nodo<br />
dell’albero <strong>di</strong> ricerca minimax un doppio stato, ciascuno composto da una matrice 3x3. Lo<br />
stato A conterrà in ogni cella la probabilità (determinata dalle informazioni in possesso <strong>di</strong><br />
MAX) che la cella sia occupata da MAX e la probabilità che sia occupata da MIN. [1;0] se<br />
MAX l’ha occupata, [0;1] se MAX ha scoperto che MIN l’ha occupata, [0;p] se MIN ha la<br />
probabilità p <strong>di</strong> averla occupata. Lo stato B conterrà in ogni cella le probabilità<br />
determinate dalle informazioni (stimate da MAX) in possesso <strong>di</strong> MIN. Ve<strong>di</strong> figura <strong>di</strong><br />
esempio dove MAX muove O.<br />
L’euristica usata dovrà tenere<br />
conto delle probabilità interne<br />
alla configurazione.<br />
Il fattore stocastico potrà essere modellato con Expectiminimax. Ad ogni mossa saranno<br />
associati N possibili eventi: N sarà pari al numero <strong>di</strong> volte che può essere stata emessa la<br />
segnalazione acustica prima <strong>di</strong> aver completato la mossa, cioè pari al numero <strong>di</strong> mosse<br />
fatte “ignote”. Ad esempio, nella configurazione sopra, dove tocca a MIN muovere e dove<br />
sono state fatte 5 mosse <strong>di</strong> cui tre “ignote”: p0=4/7 sarà la probabilità dell’evento “non<br />
sentire la segnalazione acustica”; p1=(3/7)x(2/6)x(1/5) sarà la probabilità <strong>di</strong> “scoprire<br />
tutte le mosse ignote”; p2=(3/7)*(4/6) la probabilità <strong>di</strong> “scoprire solo una mossa ignota”;<br />
p3=(3/7)*(2/6)*(4/5) sarà la probabilità <strong>di</strong> “scoprire solo due mosse”.