Implementation Issues
The developers of a chess-playing computer system must decide on a number of fundamental implementation issues. These include:
- Board representation — how a single position is represented in data structures,
- Search techniques — how to identify the possible moves and select the most promising ones for further examination,
- Leaf evaluation — how to evaluate the value of a board position, if no further search will be done from that position.
Computer chess programs usually support a number of common de facto standards. Nearly all of today's programs can read and write game moves as Portable Game Notation (PGN), and can read and write individual positions as Forsyth-Edwards Notation (FEN). Older chess programs often only understood long algebraic notation, but today users expect chess programs to understand standard algebraic chess notation.
Most computer chess programs are divided into an engine (which computes the best move given a current position) and a user interface. Most engines are separate programs from the user interface, and the two parts communicate to each other using a public communication protocol. The most popular protocol is the Chess Engine Communication Protocol (CECP). Another open alternate chess communication protocol is the Universal Chess Interface (UCI). By dividing chess programs into these two pieces, developers can write only the user interface, or only the engine, without needing to write both parts of the program. (See also List of chess engines.)
Implementers also need to decide if they will use endgame databases or other optimizations, and often implement common de facto chess standards.
Read more about this topic: Computer Chess
Famous quotes containing the word issues:
“Cynicism formulates issues clearly, but only to dismiss them.”
—Mason Cooley (b. 1927)