Wednesday, March 18, 2009

Chess database

The first step is to consider a chess database or opening explorer that works as follows. The user navigates through and selects a leaf of the already evaluated tree and expands it. The computer generates all the children of the node and runs a quick evaluation of all the children. (For more sophistication, use multi PV to only evaluate the most promising of the children.) The key is the minimax value of the children replaces the evaluation of what was a leaf node, and the minimax value is automatically propagated all the way up the tree.

The computer's quick evaluation might not be so good, but by selectively expanding promising lines, the human "expert" or explorer can validate, refute, or correct, in a principled and structured fashion, the computer's analysis.

The initial root node can be the standard chess starting position, or perhaps a position from a game or problem that the user wishes to analyze.

The second step is to place this database interface online so that many people can simultaneously collaborate on the tree, again in a structured, principled manner.

With many users expanding many different nodes simultaneously, we run into a computational bottleneck. The nodes to be evaluated are placed in a priority queue. The priority is some measure of the distance of the node from the "main line". For example, consider a node's ancestors. Each has a delta value of evaluation from the best move at that position (delta is zero if it is the best move ). The distance is the maximum of the deltas of the ancestors.

No comments :