Como os motores de xadrez "pensam"?


28

O que eu quero saber é como os motores são programados para encontrar movimentos. Tenho certeza de que eles primeiro calculam as linhas mais violentas, como capturas e verificações. Mas e os movimentos posicionais profundos e sutis? Eles parecem encontrá-los muito rapidamente também (de um modo geral. É claro que eles perdem tais movimentos de vez em quando). Como, como eles são programados para procurar movimentos tranquilos / idéias posicionais? Eles não podem simplesmente usar força bruta a cada movimento, já que isso levaria muito tempo; portanto, deve haver uma maneira inteligente de que eles cheguem aos melhores movimentos rapidamente. Estou interessado em saber disso, porque acho que ajudaria os jogadores a pensar no mundo real também.


Os motores de xadrez olham para vários milhões de posições por segundo, para que eles possam realmente olhar para todos eles até conseguir alguns movimentos profundos.
RemcoGerlich 26/03

2
Esta é uma pergunta incrível, eu realmente gostei das respostas.
Travis J

Basicamente, eles pesquisam com um algoritmo de pesquisa (por exemplo, minimax) e avaliam as posições usando heurísticas pré-programadas. Embora alguns mecanismos recentes (por exemplo, AlphaZero) desenvolvam seus próprios métodos de avaliação, jogando sozinhos.
Ignorância inercial

Respostas:


22

De uma maneira geral, os mecanismos de xadrez usam uma árvore de decisão. A raiz da árvore é a posição atual e possui um nó filho para cada posição que pode ser feita com uma movimentação legal. Cada um desses nós, por sua vez, possui um nó filho para as posições que podem ser alcançadas fazendo uma mudança legal a partir delas. O mecanismo empurra a árvore para uma profundidade definida por suas capacidades e pelo tempo que é permitido "pensar". As posições que podem ser alcançadas de mais de uma maneira são simplesmente cruzadas, para que não precisem ser consideradas mais de uma vez. Depois que a árvore é criada, o computador usa um conjunto de regras ponderadas para analisar as posições finais na árvore e começa a remover aquelas que são indesejáveis ​​ou que o oponente pode impedir de alcançar. A árvore é cortada dessa maneira até que apenas um movimento permaneça e o computador faça esse movimento.

http://www.chess.com/blog/zaifrun possui séries ou artigos sobre a criação de um mecanismo de xadrez, se você quiser uma visão mais aprofundada de como eles funcionam.


Boa resposta, então quando você vê profundidade de 30, isso significa que o mecanismo pesquisou 30 nós de profundidade? Além disso, o que significa Ply?
xaisoft 26/03

Não tenho certeza do que Ply representa sem fazer mais pesquisas; nunca fui bom com acrônimos. Em vez disso, profundidade refere-se a quantos nós de profundidade, cada nó seria meio movimento ou se o movimento fosse profundo, poderia depender do programador. No entanto, acho que essa convenção seria o número de movimentos profundos.
Edward Goodson 26/03

5
Uma dobra é meio movimento. Um movimento no xadrez é um 'conjunto' completo, se você preferir por branco + preto. Uma dobra é metade disso, então apenas uma cor.
ErebusBat

21

Você está fazendo uma pergunta bastante complexa, mas é bom voltar ao básico. Existem alguns conceitos a serem considerados:

Avaliação

Se um jogador (real) recebe uma posição e pergunta "quem está ganhando este jogo?", Como ele decide? Provavelmente, eles verificarão algumas coisas básicas, como: diferenças de material, o grau em que as peças foram desenvolvidas ou posicionadas "bem", duplicados / isolados / conectados / passados, peões, arquivos abertos (controlados), até que ponto o tabuleiro são os peões.

Agora, se necessário, você pode criar uma maneira sistemática de calcular uma pontuação de posição com base no exposto acima. Você pode decidir, por exemplo, que um peão vale 1 ponto e que um peão passado vale 0,3 pontos a mais. Peões isolados ou dobrados podem valer um pouco menos, etc. Se você somar tudo, obterá um valor estimado para a posição imediata em mãos.

Isso é conhecido como avaliação , e basicamente todos os programas de xadrez têm uma maneira de avaliar posições (ignorando os novos mecanismos de xadrez da IA, que geralmente são muito fracos).

Mas e os movimentos posicionais profundos e sutis?

Bem, apenas arranhamos a superfície da avaliação de posição. A implementação real de uma função de avaliação pode ser simplista, para permitir que mais posições sejam avaliadas por segundo (embora de maneira grosseira) ou mais complexa, levando a menos posições avaliadas, mas com um maior grau de confiança. Não é incomum que a função de avaliação leve em consideração centenas ou mesmo milhares de informações separadas.

Procurar

Eu especificamente deixei de fora algo do exposto acima, no qual a maioria dos jogadores reais pensará imediatamente - existe alguma maneira de ganhar o jogo imediatamente para ambos os lados? Visíveis companheiros ou peças "penduradas"? Embora seja fácil trivializar isso, é tudo menos trivial.

O que significa para um jogador ter total confiança em uma combinação? No final, tudo se resume a ter calculado todas as opções. Jogadores reais normalmente não fazem isso (exceto para companheiros triviais ou muito forçados); na maioria das vezes, consideraremos apenas algumas opções e descartamos outras que parecem "não construtivas" ou que obviamente levam a uma perda . Muitas vezes cometemos erros durante esse cálculo, por exemplo, podemos perceber que uma mudança nas ordens de movimentação faz com que as ameaças se evaporem etc. O ponto é que, para ter certeza absoluta de uma combinação, você realmente precisa calcular todo o caminho até sua conclusão, assumindo que cada o jogador apenas disponibilizará a melhor jogada possível (isso é conhecido como "min / max").

Agora, considerando que o xadrez tem um espaço de pesquisa muito maior (é o que se refere a "todas as jogadas possíveis no futuro") do que é viável para um computador calcular, é preciso fazer compromissos. Assim como os humanos, os computadores podem decidir desconsiderar linhas inteiras de pensamento com base em certos critérios. Isso é conhecido como heurística . Vale a pena notar que, embora você possa ter certeza de uma combinação apenas se for forçada, uma função de avaliação complexa pode frequentemente detectar a presença de ameaças (por exemplo, poderíamos contar garfos, oportunidades de espetos, etc., para orientar uma pesquisa nessa direção )

No final, embora os computadores sejam extremamente rápidos, são as heurísticas que permitem que eles calculem tão profundamente. Dito isso, você pode se surpreender com a profundidade dos motores modernos, que geralmente são superiores a 3 movimentos, mesmo em jogos rápidos.

Conclusão / combinação de tudo

Portanto, para resumir: as funções de avaliação têm muita inteligência embutida nelas (ou seja, levam em consideração mais coisas do que o jogador humano comum), as heurísticas permitem que o computador elimine as linhas de pensamento que decide que provavelmente não vão terminar bem, e os computadores são extremamente rápidos. Adicione-os e eles são bem difíceis de vencer.


6

Eu concordo com as respostas.

Lembro-me do GM Roman Dzindzichashvili falando sobre isso. Em um dos vídeos do laboratório de Roman , não lembro qual vídeo era (se alguém souber os detalhes, edite minha resposta).

Roman disse que o desenvolvedor do motor Fritz é seu amigo. Então Roman testou Fritz para ver como era bom, e o desenvolvedor disse a Roman que, para que fritz tomasse decisões complexas (sacrificando materiais em troca de vantagem posicional, por exemplo), eles precisavam mudar o valor das peças, como contar ao programa. que um bispo ruim vale 1 ponto, um bispo em uma diagonal aberta vale 7 pontos, cavaleiros valem 5 pontos em posições próximas ...

Não sei os números exatos de cada peça, mas é assim que funciona, e agora seu motor não terá nenhum problema em sacrificar um bispo ruim ou o que for, se você puder dizer a ele o valor de cada peça em cada posição.

EDITAR

Veja também o The Chess Programming Wiki .


4

É simplesmente impossível para os computadores olhar profundamente o suficiente (25 dobras e mais) e verificar todos os movimentos possíveis.

O que torna possível é a técnica chamada poda alfa-beta, que significa que computadores, semelhantes aos humanos (mas muito melhores), seguem apenas as continuações promissoras.

Eles avaliam as posições constantemente (com base em algumas regras pré-codificadas, material de valorização, segurança do rei, atividade, estruturas de peões etc.) e analisam variações que parecem estar levando-as à melhor posição.

Ainda é quase mágico como eles conseguem fazê-lo com eficiência suficiente para avaliar milhões dessas posições em um segundo.

Então, para resumir - você está correto, eles não podem olhar para todos os movimentos se jogarem xadrez estratégico, mas podem rapidamente olhar para movimentos decentes. O problema ainda está nos planos e no horizonte de longo prazo que eles podem ver, mas isso está sendo trabalhado (Rybka analisa muito mais devagar, mas joga muito mais xadrez posicional, enquanto Houdini é romântico por seu "coração mecânico" calcular mais movimentos e jogando de forma mais agressiva). Até os computadores têm seus próprios estilos!


3

A poda alfa-beta significa simplesmente que, se você encontrar uma linha que acaba mal para você, pare de olhar para aquela jogada de candidato e tente outras. É um tipo de poda para trás, o que significa que você nunca perderá uma boa jogada como resultado. A poda direta, por outro lado, baseia-se mais em suposições. Poda de futilidade, reduções tardias de movimento e corte são tipos de poda direta, e todos confiam no sentimento do programador sobre que tipo de movimento deve ser considerado. Um programa que realiza muitas podas para a frente pode perder sacrifícios surpreendentes que levam ao acasalamento, mas, por outro lado, elimina muitas jogadas muito ruins e, portanto, pode ir mais fundo ao olhar para as jogadas que favorece.

A maioria dos mecanismos pesquisa os primeiros movimentos em profundidade, examinando todas as possibilidades. Se nenhum movimento falhar alto (ou seja, parece claramente pior do que um movimento que você já considerou), você amplia a pesquisa um pouco mais. Em geral, você continua explorando cada linha até chegar a uma posição de repouso (sem verificações, capturas, ameaças de posicionamento etc.) e, em seguida, faz sua avaliação. Movimentos silenciosos podem não ser considerados quando estão no fundo da árvore de pesquisa, mas quando você chega à posição real no jogo, o mecanismo exibe todos os movimentos, silenciosos e nítidos. Às vezes, você pode ver isso na saída do mecanismo, quando um mecanismo repentinamente favorece um movimento que não estava considerando alguns movimentos para trás.

Os motores calculam tão rapidamente que não é tão importante para eles pensar em qual movimento olhar primeiro, mas para os seres humanos essa é uma questão fundamental. Jonathan Tisdall responde a isso em seu livro, Melhore seu xadrez agora. Quando você está no ataque, ele sugere que você observe primeiro os movimentos mais violentos. Quando você está defendendo, você olha primeiro as linhas mais difíceis. Ele também cita regras práticas posicionais (por exemplo, centralização, coordenação) ao decidir quais movimentos procurar primeiro.

Outros livros que podem ser relevantes são os movimentos de xadrez invisíveis de Emmanuel Neimann e os movimentos de xadrez de Charles Hertan, ambos que argumentam pela importância de considerar movimentos improváveis ​​ou surpreendentes em posições agudas. Hertan até fala sobre desenvolver 'olhos de computador' para essas táticas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.