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 MemoryBounded 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 metalevel 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