Heuristic Search

Transcript

Heuristic Search
Heuristic Search
normally, an exhaustive search for an optimal solution
is not feasible since search space is too large
Ex. in tic-tac-toe
From the initial state (empty),
9 moves are possible,
then 8 moves,
then 7 …
Total of 9! Nodes = 362 880
nodes
Ok, some states are
symmetrical…
but still!
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
1
strategia di ricerca
function Graph-Search(problema,strategia) return soluzione o fallimento
inizializza la frontiera con lo stato iniziale del problema
inizializza la lista dei visitati a “vuoto”
loop do
if frontiera vuota then return fallimento
secondo la strategia, scegli un nodo da rimuovere dalla frontiera
if il nodo corrisponde a uno stato goal
then return la soluzione corrispondente
aggiungi il nodo alla lista dei visitati
aggiungi alla frontiera i successori del nodo
che non appartengono alla lista dei visitati
end
Strategia: ordine di espansione dei nodi
Ordine?
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
2
funzioni di valutazione euristica
la conoscenza del problema per scegliere il successivo nodo da
espandere viene da una funzione di valutazione dello stato
h : n →R
h(n) dipende solo da n e verrà utilizzata all’interno della funzione di
ordinamento dei nodi sulla frontiera f(n):
–
∀n h(n) ⩾ 0
–
h(G) = 0
esempi:
26/01/15
–
route-finding: distanza in linea d’aria
–
scacchi: “peso” dei pezzi avversari sulla scacchiera
–
n-puzzle: numero di caselle fuori posto nell'8-puzzle
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
3
Best First Search
●
f(n) = h(n)
“greedy” search
●
f(n) = g(n)
UCS
●
f(n) = g(n)+h(n)
26/01/15
A search
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
4
esempio: h(n) distanza in linea d'aria dalla meta
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
5
greedy search
espande il nodo che sembra più vicino all'obiettivo
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
6
greedy search
espande il nodo che sembra più vicino all'obiettivo
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
7
greedy search
espande il nodo che sembra più vicino all'obiettivo
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
8
greedy search
espande il nodo che sembra più vicino all'obiettivo
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
9
greedy search
espande il nodo che sembra più vicino all'obiettivo
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
10
greedy search non è ottima
Greedy: Arad, Sibiu, Fagaras, Bucharest (450)
Ottimo: Arad, Sibiu, Rimnicu, Pitesti, Bucarest (418)
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
11
greedy search non è completa
partenza
arrivo
150
Iasi
120 Neamt
Vaslui
160
Da Iasi a Fagaras: … falsa partenza!!
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
12
greedy search: riepilogo
●
●
Completa:
–
no, cicli infiniti
–
si se spazio stati finiti o controllo su nodi visitati
Ottima
–
●
Complessità temporale
–
●
no
O(bm) ma una buona euristica può fare molto
Complessità spaziale
–
26/01/15
O(bm) tiene tutti i nodi in memoria
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
13
UCS (richiamo)
●
Completa:
–
●
Ottima
–
●
si
Complessità temporale
–
●
si se b< e >0
O(b1+⌊C*/⌋)
Complessità spaziale
–
26/01/15
O(b1+⌊C*/⌋)
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
14
A* search (1968 ­ P. Hart, N. Nilsson, and B. Raphael)
evitare di espandere nodi che
saranno pure promettenti, ma sono sicuramente già costosi
evaluation function per un nodo
f(n) = g(n)+h(n)
costo stimato del percorso da n al goal
evaluation function per un (sotto)albero di ricerca
f(T) = min { f(S1), f(S2), ... , f(Sn) }
dove T è un (sotto)albero di ricerca e gli Si sono tutti i suoi sottoalberi
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
15
A search
366
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
16
A search
393
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
17
A search
413
413
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
18
A search
415
415
417
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
19
A search
417
417
450
26/01/15
417
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
20
A search
418
418
450
418
418
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
21
A* : ottimalità (1/6)
●
A è completa ma non è ottima
●
h(n) si dice ammissibile se:
1. ∀n h(n) ⩾ 0
2. ∀n h(n)  “vero costo del percorso ottimo a partire da n”
–
●
quindi h(G) = 0
se h(n) è ammissibile A cambia il nome in A* ed è ottima anche
per grafi infiniti
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
22
osservazioni su A*
la sottostima può farci compiere del lavoro inutile nella fase di
espansione dell'albero, però non ci fa perdere il cammino
migliore
la componente g fa sì che si abbandonino cammini che vanno
troppo in profondità
la componente h riduce il branching factor b'<b, e questo si
traduce in un vantaggio esponenziale al crescere della
profondità dell'albero di ricerca, ma purtroppo la ricerca
rimane di complessità esponenziale nella sua profondità: b' d
invece che bd
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
23
A* : ottimalità (2/6)
se h(n) è ammissibile A* è
ottima
supponiamo che:
1. sia stato generato nella frontiera un goal subottimo G2
2. ci sia nella frontiera un altro nodo non espanso n che faccia parte del
percorso più breve verso il goal ottimo G;
allora:
f(G) = g(G) + h(G) = g(G) < g(G2) < g(G2) + h(G2) = f(G2)
ma se h(n) è ammissibile, allora:
f(n) = g(n) + h(n) ≤ g(G) = g(G) + h(G) = f(G)
cioè f(n) ≤ f(G) < f(G2) e quindi A* non selezionerà mai G2 per espanderlo.
Con ciò risulta dimostrato che A* restituisce sempre la soluzione ottima.
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
24
A* : ottimalità (3/6)
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
25
A* : ottimalità (4/6)
ma se impediamo di inserire nella frontiera nodi già presenti?
la domanda nasce dal fatto che un’euristica ammissibile può
temporaneamente espandere nodi non-goal lungo percorsi subottimi
(non è richiesto che g(n) = g*(n))
h is monotonic iff for every n and every successor n’ of n:
h(n) ≤ c(n,n') + h(n')
f (n') = g(n') + h(n')
= g(n) + c(n,n') + h(n')
≥ g(n) + h(n)
≥ f (n)
n
c(n,n’) = g(n')-g(n)
n’
h(n)
h(n’)
f(n) is nondecreasing along any path
A* rimane ottima se l'euristica è monotòna
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
26
A* : ottimalità (5/6)
se l’euristica è monotòna:
A* ha già trovato un cammino ottimale ad ogni nodo
selezionato per l’espansione
(se A* seleziona n per l’espansione si ha g(n) = g*(n))
A* è ottimamente efficiente:
a parità di euristica nessun altro
algoritmo espande meno nodi
(senza rinunciare a ottimalità)
n
c(n,n’) = g(n')-g(n)
n’
h(n)
h(n’)
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
27
A* ottimalità (6/6)
poiché l’euristica monotòna trova il percorso più corto per ogni
nodo la prima volta che lo stato stesso è incontrato,
quando viene incontrato una seconda volta non è necessario
andare a vedere se il nuovo percorso è più corto.
non potrebbe esserlo!!
quindi lo si scarta e via ...
euristica monotòna
euristica ammissibile
quasi
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
28
A* : riepilogo
●
Completezza:
–
●
esponenziale in (( h* - h)/h* ⨯ lunghezza della soluzione ottima)
Complessità spaziale
–
●
(se non ci sono infiniti nodi con f≤f(G))
Complessità temporale
–
●
si
O(bd ) tiene tutti i nodi in memoria
Ottima
–
si se
●
●
26/01/15
h è ammissibile, se la ricerca torna sui nodi visitati
h è monotòna, se la ricerca non torna sui nodi visitati (ottimamente
efficiente)
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
29
A*: implementazione in Prolog
spazio degli stati
albero di ricerca
t(s,7/0,[l(a,7/2),l(e,9/2)])
leaf(nodo,f(n)/g(n))
tree(root,f(t)/g(r),[subtrees])
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
30
A*: implementazione in Prolog
spazio degli stati
albero di ricerca
t(s,9/0,
[l(e,9/2),t(a,10/2),
[t(b,10/4),
[l(c,10/6)])])])
leaf(nodo,f(n)/g(n))
tree(root,f(t)/g(r),[subtrees])
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
31
A*: implementazione in Prolog
spazio degli stati
26/01/15
albero di ricerca
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
32
A*: implementazione in Prolog
bestfirst( Start, Solution) :expand( [], l( Start, 0/0), 9999, _, yes, Solution).
Assume 9999 is greater than any f-value
expand(+Path,+Tree,+Bound,?Tree1,?Solved,-Solution):
Path is path between start node of search and subtree Tree
Tree current search (sub)tree
Bound f-limit for expansion of Tree
Tree1 is Tree expanded within Bound; consequently,
the f-value of Tree1 is greater than Bound
(unless a goal node has been found during expansion of Tree)
Solved indicator whose value is ‘yes’, ‘no’ or ‘never’
whether a goal node is found during expansion of Tree
Solution a solution path from the start node
‘through Tree1’ to a goal node
within Bound (if such a goal exists)
1. Solved=yes
Solution= a solution path found by
expanding Tree within Bound
Tree1 unistantiated
2. Solved=no
Solution unistantiated
Tree1=Tree expanded so that its
f-value exceeds Bound
3. Solved=never
Solution and Tree1 unistantiated
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
33
A*: implementazione in Prolog
Case 1: goal leaf-node, construct a solution path
expand( P, l( N, _), _, _, yes, [N|P])
goal(N).
:-
Case 2: leaf-node, f-value less than Bound
Generate successors and expand them within Bound.
expand( P, l(N,F/G), Bound, Tree1, Solved, Sol) :F =< Bound,
( bagof( M/C, ( s(N,M,C), \+ member(M,P) ), Succ),
!,
Node N has successors
succlist( G, Succ, Ts),
Make subtrees Ts
bestf( Ts, F1),
f-value of best successor
expand( P, t(N,F1/G,Ts), Bound, Tree1, Solved, Sol)
;
Solved = never
N has no successors - dead end
) .
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
34
A*: implementazione in Prolog
Case 3: non-leaf, f-value less than Bound
Expand the most promising subtree; depending on
results, procedure continue will decide how to proceed
expand( P, t(N,F/G,[T|Ts]), Bound, Tree1, Solved, Sol) :F =< Bound,
bestf( Ts, BF), min( Bound, BF, Bound1),
Bound1 = min(Bound,BF)
expand( [N|P], T, Bound1, T1, Solved1, Sol),
continue( P, t(N,F/G,[T1|Ts]), Bound, Tree1, Solved1, Solved, Sol).
Case 4: non-leaf with empty subtrees
This is a dead end which will never be solved
expand( _, t(_,_,[]), _, _, never, _) :- !.
Case 5: f-value greater than Bound
Tree may not grow.
expand( _, Tree, Bound, Tree, no, _)
f( Tree, F), F > Bound.
26/01/15
:-
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
35
A*: implementazione in Prolog
continue( Path, Tree, Bound, NewTree, SubtreeSolved, TreeSolved, Solution)
continue( _, _, _, _, yes, yes, Sol).
continue( P, t(N,F/G,[T1|Ts]), Bound, Tree1, no, Solved, Sol)
insert( T1, Ts, NTs),
bestf( NTs, F1),
expand( P, t(N,F1/G,NTs), Bound, Tree1, Solved, Sol).
continue( P, t(N,F/G,[_|Ts]), Bound, Tree1, never, Solved, Sol)
bestf( Ts, F1),
expand( P, t(N,F1/G,Ts), Bound, Tree1, Solved, Sol).
:-
:-
succlist( G0, [ Node1/Cost1, ...], [ l(BestNode,BestF/G), ...]):
make list of search leaves ordered by their F-values
succlist( _, [], []).
succlist( G0, [N/C | NCs], Ts) :G is G0 + C,
h( N, H),
Heuristic term
F is G + H,
succlist( G0, NCs, Ts1),
insert( l(N,F/G), Ts1, Ts).
26/01/15
h(N)
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
36
A*: implementazione in Prolog
Insert T into list of trees Ts preserving order w.r.t. f-values
insert( T, Ts, [T | Ts]) :f( T, F), bestf( Ts, F1),
F =< F1, !.
insert( T, [T1 | Ts], [T1 | Ts1])
insert( T, Ts, Ts1).
:-
Extract f-value
f( l(_,F/_), F).
f-value of a leaf
f( t(_,F/_,_), F).
f-value of a tree
bestf( [T|_], F)
f( T, F).
bestf( [], 9999).
:-
Best f-value of a list of trees
No trees: bad f-value
min( X, Y, X) :X =< Y, !.
min( X, Y, Y).
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
37
A* esempio
f(n) = mosse + caselle-fuori-posto
f(Start) = 0 + 7
Dopo ,,, f = 4 + 7
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
38
almeno due euristiche ammissibili
3
2
8
5
7
6
Tessere fuori posto
hfp(n) = 5
4
1
Distanza Manhattan
hm(n) = 9
Somma delle distanze (orizzontali e verticali) di
tutti i tasselli dalla posizione obiettivo
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
39
g=4, h=4
g=1, h=7
1
5
g=2, h=4
4
3
6
1
3
5
7
2
8
4
2
6
7
8
g=1, h=5
1
4
3
3
g=3, h=5
4
2
5
1
3
7
8
6
4
2
7
8
5
6
1
6
g=2, h=6
4
1
3
7
4
Simulazione di A*
7 8
8
2
5
g=5, h=3
1
4
2
5
7
8
6
3
5
2
8
6
6
g=6, h=2
1
2
4
7
8
8
g=2, h=6
g=1, h=7
1
3
1
4
6
5
7
2
8
3
4
6
7
2
5
8
g=1, h=7
g=2, h=8
1
5
1
3
5
6
4
6
8
7
2
3
4
7
2
8
3
g=3, h=5
4
6
5
1
7
2
8
4
7
3
6
2
5
8
g=4, h=6
1
6
4
7
3
5
2
8
1
3
5
4
2
5
6
7
8
6
g=4, h=6
1
g=6, h=4
3
6
2
3
g=4, h=6
5
5
4
7
2
7
g=0, h=6
1
3
1
goal
osservazioni su A*
Confronto tra
breadth-first e
ricerca euristica
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
41
il problema di A*
A* è una breadth-first che invece che espandersi
per livelli di profondità si espande per livelli della
funzione f
barattare tempo per spazio
Breadthfirst
A*
d=1
d=2
f2
d=3
f3
d=4
Expand by depth-layers
26/01/15
f1
f4
Expands by f-contours
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
42
migliorare l'occupazione di memoria
Beam search (non completa)
A* con approfondimento iterativo (IDA*)
Ricerca Best-First Ricorsiva (RBFS)
A* con memoria limitata
MA*
SMA* in versione semplice
Real Time A* (RTA* - non ottima)
approcci Multi-Agente (es Eco Problem Solving
– non ottimo)
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
43
Beam search
ad ogni passo limita la frontiera ai soli k nodi più
promettenti, dove k è detto ampiezza del raggio
non è completa
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
44
A* con approfondimento iterativo (IDA*)
Depth-first
in each fcontour
f1
f2
f3
f4
Perform depth-first
search LIMITED to some fbound.
If goal found: ok.
Else: increase the f-bound
and restart.
How to establish the f-bounds?
- initially: f(S)
generate all successors
record the minimal f(succ) > f(S)
Continue with minimal f(succ) instead of f(S)
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
45
IDA* (Korf ­ 1985)
●
●
●
●
●
combina A* con IDS
ad ogni iterazione il nuovo valore di taglio è l'fcosto minimo tra quelli di tutti i nodi che hanno
superato il valore di taglio nell'iterazione
precedente
sotto condizioni poco restrittive è completa ed
ottimale
occupazione di memoria O(bd)
problemi con costi espressi da valori reali
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
46
IDA* Simulazione
0+3
1+4
1+2
2+3
2+3
3
Threshold: 0
1+4
IDA* Simulazione
0+3
1+4
2+5
2+5
3+4
Threshold: 5
1+4
1+2
2+3
3+4
2+5
2+3
3+2
4+3
3+4
4+3
2+3
3+4
3+4
IDA* Simulazione
0+3
1+4
2+5
3+6
4+5
3+4
1+2
2+5
3+6
2+3
3+4
2+3
3+4
4+5
4+5
4+3
5+2
7+0
6+1
5+4
6+3
Threshold: 7
1+4
IDA*: implementazione
idastar( Start, Solution) :retract( next_bound(_)), fail
;
asserta( next_bound( 0)),
idastar0( Start, Solution).
Clear next_bound
Initialise bound
idastar0( Start, Sol) :retract( next_bound( Bound)),
Current bound
asserta( next_bound( 99999)),
Initialise next bound
f( Start, F),
f-value of start node
df( [Start], F, Bound, Sol)
Find solution; if not, change
;
next_bound( NextBound),
NextBound < 99999,
Bound finite
idastar0( Start, Sol).
Try with new bound
bound
df( Path, F, Bound, Sol):
Perform depth-first search within Bound
Path is the path from start node so far (in reverse order)
F is the f-value of the current node, i.e. the head of Path
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
50
IDA*: implementazione
df( [N | Ns], F, Bound, [N | Ns]) :F =< Bound,
goal( N).
Succeed: solution
found
df( [N | Ns], F, Bound, Sol) :F =< Bound,
Node N within f-bound
s( N, N1), not member( N1, Ns), Expand N
f( N1, F1),
df( [N1,N | Ns], F1, Bound, Sol).
df( _, F, Bound, _) :F > Bound,
update_next_bound( F),
fail.
Beyond Bound
Just update next bound
and fail
update_next_bound( F) :next_bound( Bound),
Bound =< F, !
Do not change next bound
;
retract( next_bound( Bound)), !, Lower next bound
asserta( next_bound( F)).
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
51
IDA*: prestazioni
good experimental results with 15-puzzle (h=Manhattan
distance, many nodes same f)
however may become very inefficient when nodes do
not tend to share f-values
Theorem: If f is monotonic (if s(n1,n2) then f(n1) ≤ f(n2)) then
IDA* expands nodes in best-first order
f-limit = 5,
“3” expanded before “1”, “2”
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
52
Recursive Best First Search (RBFS ­ Korf 93)
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
53
RBFS

447
393
415
413
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
54
RBFS
447
393
417
415
413 417
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
55
RBFS
418
447
447
415 450
26/01/15
447
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
56
Simplified Memory­Bounded A* (SMA*)
utilizzare TUTTA la memoria disponibile
SMA* procede come A* fino ad esaurimento della
memoria disponibile
– a questo punto “dimentica” il nodo peggiore, dopo
avere aggiornato il valore del padre
– a parità di f si sceglie il nodo migliore più recente e
si dimentica il nodo peggiore più vecchio
completa se la profondità della soluzione migliore non è
maggiore della memoria disponibile
ottima se il cammino soluzione sta in memoria, altrimenti
restituisce la migliore che sta in memoria
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
57
meta­level search
I vari stati dell'albero di ricerca che cresce diventano
gli stati del nuovo problema (meta-problema)
cercare un percorso fra gli alberi invece che fra gli
stati del problema originario (problema a livello
“oggetto”)
si possono utilmente applicare tecniche di
apprendimento automatico (learning) e fare un
trade-off fra maggior costo computazionale derivante
dagli algoritmi di apprendimento e conseguente
relativa riduzione della lunghezza dei percorsi di
ricerca
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
58
euristiche
A parità di ammissibilità, un’euristica può essere più efficiente
di un’altra nel trovare il cammino soluzione migliore (visitare
meno nodi): dipende da quanto è informata (grado di
informazione posseduto)
h(n)=0 (UCS) minimo di informazione
h*(n) (oracolo) massimo di informazione
In generale, per le euristiche ammissibili:
0 < h(n) < h*(n)
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
59
confronto euristiche
h1 = 6
h2= 4+0+3+3+1+0+2+1 = 14
h2 è più informata di h1 se n h1(n)  h2 (n)
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
60
euristiche dominanti
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
61
misura del potere euristico
come valutare gli algoritmi di ricerca euristica?
fattore di diramazione effettivo b*
N: numero di nodi espansi
d: profondità della soluzione
b* è la soluzione dell’equazione
N=b*+(b*)2+ … + (b*)d
Esempio:
d=5; N= 52
b*= 1.92
sperimentalmente una buona euristica ha un b*
abbastanza vicino a 1 (< 1.5)
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
62
esempio: dal gioco dell’8
d
2
4
6
8
10
12
14
…
10
112
680
6384
47127
3644035
IDS
(2,43)
(2,87)
(2,73)
(2,80)
(2,79)
(2,78)
...
A*(h1)
6 (1,79)
13 (1,48)
20 (1,34)
39 (1,33)
93 (1,38)
227 (1,42)
539 (1,44)
...
A*(h2)
6 (1,79)
12 (1,45)
18 (1,30)
25 (1,24)
39 (1,22)
73 (1,24)
113 (1,23)
...
nodi generati (fattore di diramazione effettivo)
I dati sono mediati, per ogni d, su 100 istanze del problema
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
63
capacità di esplorazione
Con b*=2
d=6
d=12
ma con b*=1.5
d=12
d=24
N=100
N=10.000
N=100
N=10.000
… migliorando di poco l’euristica si riesce, a parità di
nodi espansi, a raggiungere una profondità doppia!
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
64
più informata: più efficiente?
Se h1 ≤ h2, A* con h2 è più efficiente che con h1
Teorema: Se h1 ≤ h2, i nodi visitati da A* con h2 sono
un sottoinsieme di quelli visitati da A* con h1.
ma attenzione al TRADE-OFF:
un euristica più informata riduce lo spazio di ricerca, ma
può risultare più costosa da calcolare
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
65
costo ricerca vs costo euristica
Costo
computazionale
Costo
complessivo
Costo della
strategia
Costo della
ricerca
Grado di informazione posseduta
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
Completa
66
come generare euristiche ammissibili
●
da problemi rilassati
●
da database di sottoproblemi
●
dall'esperienza
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
67
euristiche da problemi rilassati
If the rules of the 8-puzzle are relaxed so that:
–
a tile can move anywhere,
then h1(n) gives the shortest solution
–
a tile can move to any adjacent square,
then h2(n) gives the shortest solution
the optimal solution cost of a relaxed problem is no greater
than the optimal solution cost of the real problem
admissible heuristics can be derived from the exact solution
cost of a relaxed version of the problem
26/01/15
Ricerca Con Euristica - Prof. Aldo F
ranco Dragoni
68