First to
Shannon observed that human players (Why do we care?):
1. Can evaluate a position as good for one player or the other
2. Look ahead a few moves to see how the value of the position changes along various lines of play.
Once this strategy is adopted, Other decisions are:
S = 200(K-K') + 9(Q-Q') + 5(R-R') + 3(B-B'+N-N') + (P-P') - .5(D-D'+S-S'+I-I') + .1(M-M')
| K,Q,R,B,N,P = Material | M = Legal Moves |
| D = Double Pawns | ' indicates opponent |
| S = Backward Pawns | + => good for machine |
| I = Isolated Pawns | - => bad for machine |
1. Terminate Look-ahead only if beyond a fixed minimum depth and position is quiescent
2. Follow only most promising moves (Known as forward pruning)
Quiescent - feedover conditions (AKA - "Dead" Positions)
Board positions in the middle of exchanges, captures, checks, and so on cannot be accurately evaluated statically. These positions should be followed up. Feedover conditions define non-quiescence. (i.e. Search continues if feedover conditions are met)
Shannon's algorithm:
Type A with 2 move Look-ahead (program's choices) with possible replies using the evaluation function above.
Hard to say with all of Shannon's achievements and foresight, who was cooler...Shannon or Turing!
Another nice page.
Type B program, 2 move Look-ahead, examine certain special positions beyond that. Evaluation was material plus some Tie-breakers.
On the cool page First working program
Played Mini-chess:
No bishops,
6 pawns/side
Alex - Not this one.
First full chess program
Type B algorithm, 4-ply Look-ahead considering 7 most plausible moves from each
position, scored using material, Mobility, area control, and king defense.
Forward pruning is accomplished by decision routines which answer questions
like:
On the cool page
First to be written in a high-level language (1 ply)
First to use pruning (alpha-beta)
Type C algorithm, based on psychological studies of human chess play.
The program contains a number of goals with a predefined order of importance.
e.g. King safety, Material balance, center control, etc.
Each goal is associated with
The program also contains many chess situations, each associated with a set of
appropriate goals.
An acceptance level is set before a games. The first move found to have a value
above this is chosen.
Process --
Apparently none ever won a game
( <= no wins were published)
Times to move varied from 12 minutes (for Los Alamos) to 10 hours (for NSS). So
they could not compete in tournaments.
Horizon Effect
Some undesirable, but unavoidable, events is postponed (possibly at some cost)
until the limit of Look-ahead is reached.
e.g. sacrifice a bishop to avoid losing a queen, but the queen is later lost.
Continuing to dead positions helps.
Deeper search helps
Real problem is that evaluation is inadequate.
* In general, good evaluation beats deep search. (Proven in recent othello
tournaments in which all play is brute force.)
Los Alamos (1956)
6x6 board,
Type A algorithm, 4-ply Look-ahead, Material and Mobility in evaluation
functionBernstein (1958)
These questions are asked in a predefined order, if the answer to a question is
Yes, then moves relevant to it are generated and placed on the plausible moves
list. When 7 moves are found, Stop.
Newell,Shaw, and Simon (1958) GPS
These early programs played mediocre chess.
Greenblatt
(1966) (Aka MacHack G)
First to compete respectably with humans.
Tapered forward pruning using plausibility ordering, , Hash coding, secondary search.
Forward pruning was to best 15, 15, 9, 9, 7 moves at plies 1, 2, 3, 4, 5+. The width might be exceeded under certain conditions (e.g. checks and captures).
Look-ahead to 4-ply plus feedover.
Also uses a 2 ply plus feedover secondary search from the bottom of the best path. This is used to increase confidence in the best path.
Plausible move generator
Plausibility evaluation is based on moves not positions.
e.g. -- decides "This move is bad because it blocks my Bishop" Rather than "This position is bad because my bishop is blocked"
Hash coding -- remembers positions to reduce search.
Also uses book openings (~5000 Moves).
Greenblatt's program began more intense work on chess and games in general. Many used exactly the same techniques, faster algorithms, faster hardware.
Plan-based play, mid-game only.
Chess knowledge coded in the form of production rules (condition -> action).
Conditions = chess game patterns
Action = post concepts for use in construction plans (e.g. -- queen checked)
The concepts found by the rules are analyzed to select a move sequence (plan) with most likely replies. The program follows its plan until the end or the opponent deviates.
Search is done to verify that the selected move is good (10's -- 100's of nodes)
Based on the observation that human players construct plans of 4-5 moves to accomplish same tactical goal.
Dominant chess program throughout the 70's was northwestern's chess X.X (Now 4.7). Won most national and international computer tournaments.
Chess 4.5 introduced iterative deepening
search to 2-ply and return a move.
then to 3-ply and return a move ...
until a time limit is reach.
Purpose is dynamic ordering of moves (To increase cutoffs)
Chess 4.5 also had some Goal-seeking
The initial position is analyzed and certain squares are identified where pieces should be. Positions are evaluated partly according to how well the goals have been achieved.
Belle was developed at Bell Labs and has won numerous tournaments, including against humans. First program to be rated a chess master (~2350)
Belle uses strictly brute-force methods, 8-ply + feedover Look-ahead, plausibility ordering, MiniMax
Uses specially designed, parallel, "chess-machine" hardware. Capable of examining 30 million positions per move.
And of course Deep Thought and Deep Blue
Good ole wikipedia
First computer program to defeat a human world champion (1979).
Branching factor for backgammon (800) precludes reliance on search, requires more intelligent play -- use positional judgment. A problem with Chess is that even much of human judgment is in playing out alternatives.
The program generates all legal moves from a given position. A static evaluation function is applied. Dest move is followed up to verify its value. (i.e. -- 1 ply Look-ahead with 1 ply secondary search).
The static evaluation function is a very complex polynomial in which the coefficients vary non-linearly depending on the board position. These SNAC functions (Smoothness, Non-Linear, Application Coefficient) Represent Micro-strategies for accumulating or avoiding features.
Developed from 1947-1967 (or Later)
Primarily interested in learning, particularly learning to evaluate board positions.
Checkers is simpler than chess -- fewer pieces, less freedom of movement, many
more forced moves -- so it is easier to concentrate on learning.
Nice page on
checkers.
This description is of later versions of the program.
The program uses Look-ahead with plausibility ordering, forward pruning, MiniMax with .
Moves with plausibility below a threshold are pruned, the threshold increases with depth.
Initially a polynomial evaluation function was used, like those in chess, with features (like piece advantage, mobility, center control). As terms and their coefficients representing relative weights. The game was divided into 6 phases and a different function was used for each phase.
The polynomial evaluation function has limits as a means of evaluating alternatives.
A Function can be computed or memorized
A signature table is a memorized static eval (like ROM) function. (Samuel used the term "Signature" to mean a set of values for the inputs = a row of the table.)
Example of a signature table:
| Signature | Signature | Output |
| -1 | -1 | -1 |
| -1 | 0 | -2 |
| -1 | +1 | +1 |
| 0 | -1 | -1 |
| 0 | 0 | +1 |
| 0 | +1 | +1 |
| +1 | -1 | -1 |
| +1 | 0 | +2 |
| +1 | +1 | +1 |
Two 3-valued (-1, 0, 1)inputs possible
5-valued (-2, -1, 0, 1, 2) outputs
2nd Pram if 2nd pram /= 0
Output =
2 x 1st Pram otherwise
If There were 30 Features in the function, each 16-bit integers (as Samuel used) the table would be very big -- 64,00030.
Samuel noticed that human experts make qualitative (symbolic) judgments about features and board positions rather than the quantitative judgments normally required by polynomial eval functions. This reduces the range of values to 3-15
Samuel also knew that there would not be interaction among all the features. Features with potential interaction could be grouped into a single table. (mk k/m vs. kn)
So the number of signature table entries can be held to a reasonable size using symbolic descriptions and appropriate groupings.
Samuel's final signature table arrangement:
| Look-ahead | 1950 | Shannon |
| Minimax | 1950 | Shannon |
| Pruning | 1959 | NewellSimonShaw |
| Plausibility ordering | 1966 | Greenblatt |
| Forward pruning | 1950 | Shannon |
| Feedover conditions | 1950 | Shannon |
| Secondary search | 1966 | Greenblatt |
| Static evaluation | 1950 | Shannon |
Human play?
Closest to human play now is Wilkins' program but it is very slow.
The problem of recognizing a tactical position and using it to guide search in a short enough time to be competitive may be insoluble without some perceptual processing of the actual chess board. (Note that this does not have to be "vision" but can be any highly parallel mechanism for "accessing" the entire board at once.)
Mastermind revisited
Tree search is probably not good -- essentially that is the UNIX version (with the entire tree collapsed into a single list).
There might be a set of criteria for the first (and subsequent) guess to maximize the information which might be received. Guesses could be generated to meet this criteria and chosen randomly.
The sequence of guesses and answers can contribute to the knowledge used in constructing guesses.