Professional Documents
Culture Documents
Chapter 8
Outline
Overview
Minimax search
Adding alpha-beta cutoffs
Additional refinements
Iterative deepening
Specific games
2
Overview
Old beliefs
Games provided a structured task in which it was very easy to
measure success or failure.
3
Overview
Chess
The average branching factor is around 35.
4
Overview
5
Overview
6
Overview
7
Overview
8
Minimax Search
9
Minimax Search
A -2 Maximizing ply
Player
B -6 C -2 D -4
Minimizing ply
E F G H I J K Opponent
9 -6 0 0 -2 -4 -3
Two-ply search
10
Minimax Search
Player(Position, Depth):
for each S SUCCESSORS(Position) do
RESULT = Opponent(S, Depth + 1)
NEW-V
ALUE = V
ALUE(RESUL
T)
Opponent(Position, Depth):
for each S SUCCESSORS(Position) do
RESULT = Player(S, Depth + 1)
NEW-V
ALUE = V
ALUE(RESUL
T)
Any-Player(Position, Depth):
for each S SUCCESSORS(Position) do
RESULT = Any-Player(S, Depth + 1)
ALUE = - V
NEW-V ALUE(RESUL
T)
MOVE-GEN(Position, Player).
ST
A
TIC(Position, Player).
DEEP-ENOUGH(Position, Depth)
14
Minimax Search
1. if DEEP-ENOUGH(Position, Depth), then return:
V
ALUE = STA
TIC(Position, Player)
P
A
TH = nil
15
Minimax Search
4. if SUCCESSORS is not empty:
RESUL
T-SUCC = MINIMAX(SUCC, Depth+1, Opp(Player))
NEW-V
ALUE = - V
ALUE(RESUL
T-SUCC)
if NEW-V
ALUE > BEST-SCORE, then:
BEST-SCORE = NEW-V
ALUE
BEST-P
A
TH = P
A
TH(RESUL
T-SUCC) + SUCC
5. Return:
V
ALUE = BEST-SCORE
P
A
TH = BEST-P
A
TH
16
AddingAlpha-Beta Cutoffs
17
AddingAlpha-Beta Cutoffs
A
Maximizing ply
>3
Player
B 3 C
Minimizing ply
D E F G Opponent
3 5 -5
Alpha cutoffs
18
AddingAlpha-Beta Cutoffs
A
Maximizing ply
>3
Player
B C
<5 Minimizing ply
Opponent
D E F G H
3 5 Maximizing ply
Player
I J M N
5 7 Minimizing ply
Alpha and Beta Opponent
cutoffs K L
0
19
AddingAlpha-Beta Cutoffs
Opponent
b
Player
a b a
Opponent
a b
Player
Alpha and Beta
cutoffs
20
Player(Position, Depth, a, b):
for each S SUCCESSORS(Position) do
RESULT = Opponent(S, Depth + 1, a, b)
NEW-V
ALUE = V
ALUE(RESUL
T)
if NEW-VALUE a, then
a = NEW-V
ALUE
BEST-P
A
TH = P
A
TH(RESUL
T) + S
if a b then return
ALUE = a
V
P
A
TH = BEST-P
A
TH
return
ALUE = a
V
P
A
TH = BEST-P
A
TH
21
Opponent(Position, Depth, a, b):
for each S SUCCESSORS(Position) do
RESULT = Player(S, Depth + 1, a, b)
NEW-V
ALUE = V
ALUE(RESUL
T)
if NEW-VALUE b, then
b = NEW-V
ALUE
BEST-P
A
TH = P
A
TH(RESUL
T) + S
if b a then return
ALUE = b
V
P
A
TH = BEST-P
A
TH
return
ALUE = b
V
P
A
TH = BEST-P
A
TH
22
Any-Player(Position, Depth, a, b):
for each S SUCCESSORS(Position) do
RESULT = Any-Player(S, Depth + 1, -b, -a)
ALUE = - V
NEW-V ALUE(RESUL
T)
if NEW-VALUE a, then
a = NEW-V
ALUE
BEST-P
A
TH = P
A
TH(RESUL
T) + S
if a b then return
ALUE = a
V
P
A
TH = BEST-P
A
TH
return
ALUE = a
V
P
A
TH = BEST-P
A
TH
23
AddingAlpha-Beta Cutoffs
24
AddingAlpha-Beta Cutoffs
1. if DEEP-ENOUGH(Position, Depth), then return:
V
ALUE = STA
TIC(Position, Player)
P
A
TH = nil
25
AddingAlpha-Beta Cutoffs
4. if SUCCESSORS is not empty:
RESUL
T-SUCC = MINIMAX-A-B(SUCC, Depth + 1,
Opp(Player), - PassTd, - UseTd)
NEW-V
ALUE = - V
ALUE(RESUL
T-SUCC)
if NEW-V
ALUE > PassTd, then:
PassTd = NEW-V
ALUE
BEST-P
A
TH = P
A
TH(RESUL
T-SUCC) + SUCC
Futility cutoffs
Waiting for quiescence
Secondary search
Using book moves
Not assuming opponents optimal move
27
Iterative Deepening
Iteration 1
Iteration 2
Iteration 3
28
Iterative Deepening
29
Iterative Deepening
30
Iterative Deepening
Depth-First Iterative Deepening (DFID)
1. Set SEARCH-DEPTH = 1
31
Iterative Deepening
Iterative-Deepening-A* (IDA*)
32
Iterative Deepening
33
Homework
Presentations
Specific games: Chess State of theArt
34