Algoritmo di MiniMax Questa presentazione è un chiaro esempio di come aggiungere i tagli Alfa-Beta per migliorare l’efficienza dell’algoritmo MiniMax. La soluzione è stata ottenuta applicando l’algoritmo MiniMax partendo da sinistra e andando verso destra. Algoritmo di MiniMax Nodi AND X (a,b) Massimizzano il valore dei loro successori Nodi OR Y (a,b) Minimizzano il valore dei loro successori Algoritmo di MiniMax Ogni nodo è caratterizzato da due soglie: a e b I tagli possono essere fatti solo quando a b Algoritmo di MiniMax Visione completa del grafo And-Or. A B E C F G D H I J K L M N O P Q R S T U V W X Y 7 6 8 5 4 3 0 -2 6 2 5 8 9 2 Algoritmo di MiniMax L’algoritmo ha inizio assegnando al nodo di partenza (il nodo radice) i valori a=-e b= Algoritmo di MiniMax Il nodo A non è un nodo foglia espansione del nodo A. A (-,) Algoritmo di MiniMax Il nodo B non è un nodo foglia espansione del nodo B. B (-,) A (-,) Algoritmo di MiniMax Il nodo E non è un nodo foglia espansione del nodo E. B E (-,) (-,) A (-,) Algoritmo di MiniMax Il nodo L è un nodo foglia valutazione del nodo L. B E L (-,) (-,) A (-,) Algoritmo di MiniMax Il valore del nodo L è ritornato al nodo padre E che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,) E L 7 (-,) (-,) Algoritmo di MiniMax Nodo E: non si può interrompere la ricerca (a< b) se esiste un altro figlio di E, lo si genera. B E L 7 (,) (-,) A (-,) Algoritmo di MiniMax Il nodo M è un nodo foglia valutazione del nodo M. B E L 7 (,) M (-,) A (-,) Algoritmo di MiniMax Il valore del nodo M è ritornato al nodo padre E che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,) E (,) L M 7 6 (-,) Algoritmo di MiniMax Nodo E: non si può interrompere la ricerca (a< b) se esiste un altro figlio di E, lo si genera. B E (,) L M 7 6 (-,) A (-,) Algoritmo di MiniMax Non ci sono più figli da generare si ritorna a al nodo padre B che, essendo un nodo OR, imposterà b come il minore tra il valore ritornato e il valore attuale di b. B (-,) E (,) L M 7 6 A (-,) Algoritmo di MiniMax Nodo B: non si può interrompere la ricerca (a< b) se esiste un altro figlio di B, lo si genera. B E (,) L M 7 6 (-,) A (-,) Algoritmo di MiniMax Il nodo F non è un nodo foglia espansione del nodo F. E (,) L M 7 6 B (-,) F (-,) A (-,) Algoritmo di MiniMax Il nodo N è un nodo foglia valutazione del nodo N. E (,) L M 7 6 N B (-,) F (-,) A (-,) Algoritmo di MiniMax Il valore del nodo N è ritornato al nodo padre F che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,) E (,) L M N 7 6 8 F (-,) (-,) Algoritmo di MiniMax Nodo F: si può interrompere la ricerca (a b) si ritorna b al nodo padre B. E (,) L M N 7 6 8 B (-,) F (8,) A (-,) Algoritmo di MiniMax Il nodo B, essendo un nodo OR, imposterà b come il minore tra il valore ritornato e il valore attuale di b. E (,) L M N 7 6 8 B (-,) F (8,) A (-,) Algoritmo di MiniMax Nodo B: non si può interrompere la ricerca (a< b) se esiste un altro figlio di B, lo si genera. E (,) L M N 7 6 8 B (-,) F (8,) A (-,) Algoritmo di MiniMax Il nodo G non è un nodo foglia espansione del nodo G. E (,) L M N 7 6 8 B (-,) F (8,) G (-,) A (-,) Algoritmo di MiniMax Il nodo P è un nodo foglia valutazione del nodo P. E (,) L M N 7 6 8 B (-,) F (8,) G P A (-,) (-,) Algoritmo di MiniMax Il valore del nodo P è ritornato al nodo padre G che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,) E (,) F (8,) G L M N P 7 6 8 4 (-,) (-,) Algoritmo di MiniMax Nodo G: non si può interrompere la ricerca (a< b) se esiste un altro figlio di G, lo si genera. E (,) B (-,) F (8,) G L M N P 7 6 8 4 (4,) A (-,) Algoritmo di MiniMax Il nodo Q è un nodo foglia valutazione del nodo Q. E (,) B (-,) F (8,) G L M N P 7 6 8 4 A (4,) Q (-,) Algoritmo di MiniMax Il valore del nodo Q è ritornato al nodo padre G che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,) E (,) F (8,) G (4,) L M N P Q 7 6 8 4 3 (-,) Algoritmo di MiniMax Nodo G: non si può interrompere la ricerca (a< b) se esiste un altro figlio di G, lo si genera. E (,) B (-,) F (8,) G (4,) L M N P Q 7 6 8 4 3 A (-,) Algoritmo di MiniMax Non ci sono più figli da generare si ritorna a al nodo padre B che, essendo un nodo OR, imposterà b come il minore tra il valore ritornato e il valore attuale di b. B (-,) E (,) F (8,) G (4,) L M N P Q 7 6 8 4 3 A (-,) Algoritmo di MiniMax Nodo B: non si può interrompere la ricerca (a< b) se esiste un altro figlio di B, lo si genera. E (,) B (-,4) F (8,) G (4,) L M N P Q 7 6 8 4 3 A (-,) Algoritmo di MiniMax Non ci sono più figli da generare si ritorna b al nodo padre A che, essendo un nodo AND, imposterà a come il maggiore tra il valore ritornato e il valore attuale di a. B (-,4) E (,) F (8,) G (4,) L M N P Q 7 6 8 4 3 A (-,) Algoritmo di MiniMax Nodo A: non si può interrompere la ricerca (a< b) se esiste un altro figlio di A, lo si genera. E (,) B (-,4) F (8,) G (4,) L M N P Q 7 6 8 4 3 A (4,) Algoritmo di MiniMax Il nodo C non è un nodo foglia espansione del nodo C. E (,) B (-,4) F (8,) G (4,) L M N P Q 7 6 8 4 3 A (4,) C (4,) Algoritmo di MiniMax Il nodo H non è un nodo foglia espansione del nodo H. E (,) B (-,4) F (8,) G (4,) L M N P Q 7 6 8 4 3 H A (4,) C (4,) (4,) Algoritmo di MiniMax Il nodo R è un nodo foglia valutazione del nodo R. E (,) B (-,4) F (8,) G (4,) L M N P Q 7 6 8 4 3 H R A (4,) C (4,) (4,) Algoritmo di MiniMax Il valore del nodo R è ritornato al nodo padre H che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,4) C E (,) F (8,) G (4,) H L M N P Q R 7 6 8 4 3 0 (4,) (4,) (4,) Algoritmo di MiniMax Nodo H: non si può interrompere la ricerca (a< b) se esiste un altro figlio di H, lo si genera. E (,) B (-,4) F (8,) G (4,) H L M N P Q R 7 6 8 4 3 0 A (4,) C (4,) (4,) Algoritmo di MiniMax Il nodo S è un nodo foglia valutazione del nodo S. E (,) B (-,4) F (8,) G (4,) H L M N P Q R 7 6 8 4 3 0 A (4,) C (4,) (4,) S Algoritmo di MiniMax Il valore del nodo S è ritornato al nodo padre H che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,4) C E (,) F (8,) G (4,) H (4,) L M N P Q R S 7 6 8 4 3 0 -2 (4,) (4,) Algoritmo di MiniMax Nodo H: non si può interrompere la ricerca (a< b) se esiste un altro figlio di H, lo si genera. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,) (4,) L M N P Q R S 7 6 8 4 3 0 -2 Algoritmo di MiniMax Non ci sono più figli da generare si ritorna a al nodo padre C che, essendo un nodo OR, imposterà b come il minore tra il valore ritornato e il valore attuale di b. B (-,4) E (,) F (8,) G (4,) H A (4,) C (4,) (4,) L M N P Q R S 7 6 8 4 3 0 -2 Algoritmo di MiniMax Nodo C: si può interrompere la ricerca (a b) si ritorna a al nodo padre A. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) L M N P Q R S 7 6 8 4 3 0 -2 Algoritmo di MiniMax Il nodo A, essendo un nodo AND, imposterà a come il minore tra il valore ritornato e il valore attuale di a. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) L M N P Q R S 7 6 8 4 3 0 -2 Algoritmo di MiniMax Nodo A: non si può interrompere la ricerca (a< b) se esiste un altro figlio di A, lo si genera. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) L M N P Q R S 7 6 8 4 3 0 -2 Algoritmo di MiniMax Il nodo D non è un nodo foglia espansione del nodo D. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) L M N P Q R S 7 6 8 4 3 0 -2 D (4,) Algoritmo di MiniMax Il nodo J non è un nodo foglia espansione del nodo J. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) L M N P Q R S 7 6 8 4 3 0 -2 D J (4,) (4,) Algoritmo di MiniMax Il nodo V è un nodo foglia valutazione del nodo V. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) D (4,) L M N P Q R S 7 6 8 4 3 0 -2 J V (4,) (4,) Algoritmo di MiniMax Il valore del nodo V è ritornato al nodo padre J che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,4) C E (,) F (8,) G (4,) H (4,) (4,4) D (4,) J L M N P Q R S V 7 6 8 4 3 0 -2 5 (4,) (4,) Algoritmo di MiniMax Nodo J: non si può interrompere la ricerca (a< b) se esiste un altro figlio di J, lo si genera. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) D (4,) J L M N P Q R S V 7 6 8 4 3 0 -2 5 (,) (4,) Algoritmo di MiniMax Il nodo W è un nodo foglia valutazione del nodo W. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) D (4,) J L M N P Q R S V 7 6 8 4 3 0 -2 5 (,) W (4,) Algoritmo di MiniMax Il valore del nodo W è ritornato al nodo padre J che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,4) C E (,) F (8,) G (4,) H (4,) (4,4) D (4,) J (,) L M N P Q R S V W 7 6 8 4 3 0 -2 5 8 (4,) Algoritmo di MiniMax Nodo J: non si può interrompere la ricerca (a< b) se esiste un altro figlio di J, lo si genera. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) D (4,) J (8,) L M N P Q R S V W 7 6 8 4 3 0 -2 5 8 (4,) Algoritmo di MiniMax Non ci sono più figli da generare si ritorna a al nodo padre D che, essendo un nodo OR, imposterà b come il minore tra il valore ritornato e il valore attuale di b. B (-,4) E (,) F (8,) G (4,) H A (4,) C (4,4) D (4,) J (8,) L M N P Q R S V W 7 6 8 4 3 0 -2 5 8 (4,) Algoritmo di MiniMax Nodo D: non si può interrompere la ricerca (a< b) se esiste un altro figlio di D, lo si genera. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) D (4,) J (8,) L M N P Q R S V W 7 6 8 4 3 0 -2 5 8 (4,8) Algoritmo di MiniMax Il nodo K non è un nodo foglia espansione del nodo K. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) J D (4,8) (8,) K L M N P Q R S V W 7 6 8 4 3 0 -2 5 8 (4,8) Algoritmo di MiniMax Il nodo X è un nodo foglia valutazione del nodo X. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) J D (4,8) (8,) K L M N P Q R S V W 7 6 8 4 3 0 -2 5 8 X (4,8) Algoritmo di MiniMax Il valore del nodo X è ritornato al nodo padre K che, essendo un nodo AND, imposterà a come il maggiore A tra il valore ritornato e il valore attuale di a. B (-,4) C E (,) F (8,) G (4,) H (4,) D (4,8) (8,) K (4,4) (4,) J L M N P Q R S V W X 7 6 8 4 3 0 -2 5 8 9 (4,8) Algoritmo di MiniMax Nodo K: si può interrompere la ricerca (a b) si ritorna b al nodo padre D. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) J D (4,8) (8,) K L M N P Q R S V W X 7 6 8 4 3 0 -2 5 8 9 (9,8) Algoritmo di MiniMax Il nodo D, essendo un nodo OR, imposterà b come il minore tra il valore ritornato e il valore attuale di b. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) J D (4,8) (8,) K L M N P Q R S V W X 7 6 8 4 3 0 -2 5 8 9 (9,8) Algoritmo di MiniMax Nodo D: non si può interrompere la ricerca (a< b) se esiste un altro figlio di D, lo si genera. E (,) B (-,4) F (8,) G (4,) H A (4,) C (4,4) (4,) J D (4,8) (8,) K L M N P Q R S V W X 7 6 8 4 3 0 -2 5 8 9 (9,8) Algoritmo di MiniMax Non ci sono più figli da generare si ritorna b al nodo padre A che, essendo un nodo AND, imposterà a come il maggiore tra il valore ritornato e il valore attuale di a. B (-,4) E (,) F (8,) G (4,) H A (4,) C (4,4) (4,) J D (4,8) (8,) K L M N P Q R S V W X 7 6 8 4 3 0 -2 5 8 9 (9,8) Algoritmo di MiniMax Nodo A: non si può interrompere la ricerca (a< b) se esiste un altro figlio di A, lo si genera. E (,) B (-,4) F (8,) G (4,) H A (8,) C (4,4) (4,) J D (4,8) (8,) K L M N P Q R S V W X 7 6 8 4 3 0 -2 5 8 9 (9,8) Algoritmo di MiniMax Non ci sono più figli da generare si ritorna a. La procedura ha termine. E (,) B (-,4) F (8,) G (4,) H A (8,) C (4,4) (4,) J D (4,8) (8,) K L M N P Q R S V W X 7 6 8 4 3 0 -2 5 8 9 (9,8) Algoritmo di MiniMax Il valore ritornato dalla procedura (8), indica il nodo finale corrispondente A al percorso migliore trovato nell’albero di ricerca. E (,) B (-,4) F (8,) C G (4,) H (8,) D (4,8) (8,) K (4,4) (4,) J L M N P Q R S V W X 7 6 8 4 3 0 -2 5 8 9 (9,8) Algoritmo di MiniMax Analisi dei risultati: L’applicazione di questa tecnica ha ridotto il numero dei nodi analizzati che sono passati da 25, ottenuti con l’applicazione del solo algoritmo di MiniMax, a 20. Anche se in questo esempio la riduzione del numero dei nodi analizzati è stata minima, l’algoritmo risulta molto efficiente nel caso di ricerca in grafi AND-OR molto più complessi. E’ da notare che anche l’ordine in cui viene effettuata la ricerca influisce sull’efficienza dell’algoritmo: in questo caso infatti lo stesso algoritmo se applicato da destra verso sinistra porta all’analisi di soli 16 nodi anziché 20. Algoritmo di MiniMax Situazione finale nel caso in cui l’albero è espanso da destra a sinistra. B (8,8) G A (8,) C (8,8) (8,) I (8,) J D (-,8) (8,) K (9,) P Q T U V W X Y 4 3 6 2 5 8 9 2