# Playing Games

**PGSS Computer Science Core Slides**
Game-playing is one of AI's greatest successes. We investigate the
techniques through tic-tac-toe.

X | O | X
--+---+--
O | X | X
--+---+--
O | X | O

### Game Restrictions

Classical game-playing techniques work for games with two features:

- alternating-play two-person
- no hidden information

Here are some legitimate examples.

tic-tac-toe Othello
checkers chess
backgammon Go

Here are some bad examples.
poker Stratego
bridge Scrabble
Boggle

### Game Trees

We can represent a game as a **game tree**.

---
_____________ ---
/ ________ --- ____________
/ / / \ \
X-- -X- --X --- ---
--- --- --- X-- ... ---
___ --- --- --- --- --X
/ / \ / \
XO- X-O X-- O-- ---
--- --- ... --- --- ... ---
--- --- --O --X -OX
/ | \
/ | \
XX- X-X X--
O-- O-- ... OX-
--- --- ---

If you calculate how big this can be, you'll see that this is at
must a few hundred thousand - quite tractable by today's
standards.

### Evaluating a Tree

Assign 1 to all wins for X, -1 for all wins to O, and 0 to all cat's
games.

Now by working up the tree, we can calculate the value of any
state by choosing the minimum if it's O's move and maximum if it's X's
move.

Evaluating for all nodes is called **minimax
search**.

-OX
OXX
O--
____ [1] ____
/ | \
XOX -OX -OX
OXX OXX OXX
O-- OX- O-X
[0] [-1] [1]
/ \ / \
XOX XOX OOX -OX
OXX OXX OXX OXX
OO- O-O OX- OXO
[1] [0] [-1] [0]
| | |
XOX XOX XOX
OXX OXX OXX
OOX OXO OXO
[1] [0] [0]

### Heuristics

Harder games can't be searched entirely. We use a **heuristic
function to estimate ``goodness'' of a board for X.**

**
**Go down as many levels as possible, evaluate heuristic function,
apply minimax search to tree.

### Example

We chose the heuristic function that is -.5 if O has a row, column,
or diagonal with two filled and a blank, otherwise
.5 if X has this, otherwise 0.

-OX
_____________ -XX _____________
/ __ O-- ___ \
/ / [1] \ \
OOX -OX -OX -OX
-XX OXX -XX -XX
O-- O-- OO- O-O
[1] [1] [1] [1]
/ | \ / | \ / | \ / | \
OOX OOX OOX XOX -OX -OX XOX -OX -OX XOX -OX -OX
XXX -XX -XX OXX OXX OXX -XX XXX -XX -XX XXX -XX
O-- OX- O-X O-- OX- O-X OO- OO- OOX O-O O-O OXO
[1] -.5 [1] .5 -.5 [1] -.5 [1] .5 -.5 [1] .5