⚠️ Warning: This is a draft ⚠️

This means it might contain formatting issues, incorrect code, conceptual problems, or other severe issues.

If you want to help to improve and eventually enable this page, please fork RosettaGit's repository and open a merge request on GitHub.

{{draft task|Search and Evaluation}} This is a sub-task of the [[Chess player]] task.

Create a function or software component which will search the tree of moves from a given chess position up to a maximum depth and determine the best move for the computer. Use a previously written [[Chess player/Move generation]] component for enumerating the moves. This is where a lot of effort has been spent to improve chess-playing programs, so you can create a basic version or implement some of the features mentioned below to get a faster or cleverer version.

Basic implementation: #min-max search #static evaluation based on material (numbers and types of pieces)

Advanced implementation: #Alpha-beta, nega-scout or MTD-f #improved static evaluation using pawn structure and piece locations #Iterative deepening and move ordering #Quiescence searching extensions #Null move heuristic #Endgame database #(very advanced) Optimizing board evaluation functions via genetic algorithms