Cílem šachového programu je pro danou šachovou pozici najít nejlepší tah pro stranu, která je právě na tahu. Šachové programy, tak jako mnoho jiných algoritmů, procházejí stavový strom úlohy.
V tomto případě jsou uzly stavového stromu možné pozice pro provedení určité posloupnosti tahů (kořen stromu je pak výchozí pozice), větve stromu jsou tahy, kterými přecházím od jednoho uzlu (pozice) k druhému. Šachové programy používají k prohledání stavového stromu
kombinaci dvou základních algoritmů – minimaxu a alfabety.