KnightCap
Encyclopedia
KnightCap is an open source computer
chess engine. Its primary author is Andrew Tridgell
and it was created circa 1996. Major contributions have also been made by Jon Baxter and probably minor contributions by a few others.
In most ways, KnightCap is a fairly typical modern program. It uses bitboard
data structures that are slightly different from those that were well known in 1996, but obvious enough and probably well known now. There is backward pruning using MTD-f
(a method approximately equivalent to Alpha-beta pruning
but slightly more efficient in some settings). There is Null-move heuristic
. There is a fairly complex end-node evaluation process that considers similar features to other programs.
In addition, KnightCap has support for multi-processor computers, in particular the now obsolete Fujitsu CAP computer
research machines.
The most original feature of KnightCap, introduced in the late 1990s, was an experiment in temporal difference learning
as applied to chess. This technique allowed KnightCap to automatically tune the weights applied to the various features in its evaluation function
based on the games it played.
For a while in the 1990s, KnightCap was quite active on chess servers on the Internet, but it is now semi-retired and rarely seen. Its strength is below that of the strongest programs, but still quite good.
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...
chess engine. Its primary author is Andrew Tridgell
Andrew Tridgell
Andrew "Tridge" Tridgell is an Australian computer programmer best known as the author of and contributor to the Samba file server, and co-inventor of the rsync algorithm....
and it was created circa 1996. Major contributions have also been made by Jon Baxter and probably minor contributions by a few others.
In most ways, KnightCap is a fairly typical modern program. It uses bitboard
Bitboard
A bitboard is a data structure commonly used in computer systems that play board games.A bitboard, often used for boardgames such as chess, checkers and othello, is a specialization of the bitset data structure, where each bit represents a game position or state, designed for optimization of speed...
data structures that are slightly different from those that were well known in 1996, but obvious enough and probably well known now. There is backward pruning using MTD-f
MTD-f
MTD, an abbreviation of MTD is a minimax search algorithm, an alternative to the alpha-beta pruning algorithm.- Zero Window Searches :...
(a method approximately equivalent to Alpha-beta pruning
Alpha-beta pruning
Alpha-beta pruning is a search algorithm which seeks to decrease the number of nodes that are evaluated by the minimax algorithm in its search tree. It is an adversarial search algorithm used commonly for machine playing of two-player games...
but slightly more efficient in some settings). There is Null-move heuristic
Null-move heuristic
In computer chess programs, the null-move heuristic is a heuristic technique used to enhance the speed of the alpha-beta pruning algorithm.- Rationale :...
. There is a fairly complex end-node evaluation process that considers similar features to other programs.
In addition, KnightCap has support for multi-processor computers, in particular the now obsolete Fujitsu CAP computer
research machines.
The most original feature of KnightCap, introduced in the late 1990s, was an experiment in temporal difference learning
Temporal difference learning
Temporal difference learning is a prediction method. It has been mostly used for solving the reinforcement learning problem. "TD learning is a combination of Monte Carlo ideas and dynamic programming ideas." TD resembles a Monte Carlo method because it learns by sampling the environment according...
as applied to chess. This technique allowed KnightCap to automatically tune the weights applied to the various features in its evaluation function
Evaluation function
An evaluation function, also known as a heuristic evaluation function or static evaluation function, is a function used by game-playing programs to estimate the value or goodness of a position in the minimax and related algorithms...
based on the games it played.
For a while in the 1990s, KnightCap was quite active on chess servers on the Internet, but it is now semi-retired and rarely seen. Its strength is below that of the strongest programs, but still quite good.