Recentemente, estive em uma discussão com uma pessoa que não é codificadora sobre as possibilidades dos computadores de xadrez. Não sou muito versado em teoria, mas acho que sei o suficiente.
Argumentei que não poderia existir uma máquina de Turing determinística que sempre ganhasse ou empatasse no xadrez. Eu acho que, mesmo se você pesquisar todo o espaço de todas as combinações de movimentos do jogador 1/2, o único movimento que o computador decide em cada etapa é baseado em uma heurística. Sendo baseado em uma heurística, não necessariamente vence TODOS os movimentos que o oponente poderia fazer.
Meu amigo pensava, ao contrário, que um computador sempre ganharia ou empataria se nunca fizesse uma jogada "errada" (como você define isso?). No entanto, sendo um programador que estudou CS, eu sei que mesmo suas boas escolhas - dado um oponente sábio - podem forçá-lo a cometer movimentos "errados" no final. Mesmo se você souber de tudo, seu próximo movimento é ganancioso em combinar uma heurística.
A maioria dos computadores de xadrez tenta combinar um possível jogo final com o jogo em andamento, que é essencialmente um rastreio de programação dinâmico. Mais uma vez, o final do jogo em questão é evitável.
Edit: Hmm ... parece que errei algumas penas aqui. Isso é bom.
Pensando novamente, parece que não há problema teórico em resolver um jogo finito como o xadrez. Eu diria que o xadrez é um pouco mais complicado do que as damas, pois uma vitória não é necessariamente por exaustão numérica das peças, mas por um companheiro. Minha afirmação original provavelmente está errada, mas, novamente, acho que apontei algo que ainda não foi provado satisfatoriamente (formalmente).
Acho que meu experimento mental foi que sempre que um galho da árvore é pego, o algoritmo (ou caminhos memorizados) deve encontrar um caminho para um parceiro (sem ser acasalado) para qualquer galho possível nos movimentos do oponente. Depois da discussão, comprarei que, com mais memória do que podemos sonhar, todos esses caminhos podem ser encontrados.