Qual é a complexidade computacional da “resolução” do xadrez?

8

A idéia básica da indução reversa é começar com todas as posições finais possíveis de um jogo em que o jogador X vence. Portanto, para o xadrez, observe todas as maneiras pelas quais as brancas podem fazer xeque-mate nas pretas. Agora trabalhe para trás em todos os movimentos / posições possíveis que permitiriam às Brancas se mudarem para uma dessas posições. Se White alguma vez se encontrasse em tal posição, ela poderia vencer passando para o movimento de checkmating relevante. Agora trabalhamos para trás mais um passo e assim por diante. Eventualmente, voltamos a todos os primeiros movimentos possíveis que as brancas poderiam fazer. O ponto é que, uma vez feito isso, sabemos que temos a melhor resposta das brancas a qualquer movimento que as pretas fazem.

Recentemente (nos últimos cinco anos ou mais), o Damas foi "resolvido" dessa maneira. Obviamente, nada e cruzes (o que os coloniais podem chamar de "Tic-Tac-Toe") foram resolvidos há séculos. No mínimo, desde este xkcd, mas presumivelmente muito antes.

Portanto, a pergunta é: de quais fatores esse tipo de procedimento depende? O número de possíveis posições legais, presumivelmente. Mas talvez também o número de movimentos legais em qualquer nó ... E, considerando isso, quão complexo é esse tipo de problema?

Pergunta de bônus: quanto tempo antes de um PC de US $ 2.000 poder resolver damas em um dia? Xadrez? Vai? (É claro que, para isso, você também deve levar em consideração o aumento da velocidade dos computadores domésticos ...)

Eu adicionei o tag porque você pode representar estes jogos como árvores, mas se eu estou abusando da tag favor adicionar algo mais apropriado

Seamus
fonte
4
Perguntas sobre a complexidade do xadrez foram reformuladas em muitos lugares. A árvore do jogo tem comprimento finito, modulo das regras precisas que governam os sorteios, mas a árvore do jogo possui um fator de ramificação muito alto, de modo que as soluções de força bruta parecem fora de alcance. Para ser franco: a árvore do jogo tem tamanho em torno de , para k semi-movimentos. Não vejo uma pergunta do TCS aqui? 10kk
András Salamon
6
É atrevido apontar que a complexidade é pela regra dos cinquenta movimentos? O(1)
Joe Fitzsimons
Seamus, o escopo da cstheory é questões de nível de pesquisa no tcs, por favor leia o FAQ. Você pode usar math.SE para perguntas que não são de nível de pesquisa.
Kaveh
existem algumas questões relacionadas à complexidade no xadrez, mas, como foi formulado, essa não é por causa da árvore finita de jogos. esta pergunta é um pouco semelhante, pode haver um algoritmo de xadrez perfeito
vzn

Respostas:

26

Como @Joe aponta, o xadrez é trivial para resolver em time usando uma tabela de pesquisa. (Uma implementação real desse algoritmo exigiria um universo significativamente maior que o em que vivemos, mas este é um site para a ciência da computação teórica . O tamanho da constante é irrelevante.)O(1)

Obviamente, não existe uma generalização canônica do xadrez, mas várias variantes foram consideradas; sua complexidade depende de como as regras sobre movimentos sem capturas e posições repetidas são generalizadas.n×n

Se um empate é declarado após um número polinomial de movimentos livres de captura, ou depois de qualquer posição repete um número polinomial de vezes, então qualquer extremidades do jogo de xadrez depois de um número polinomial de movimentos, então o problema está claramente em PSPACE. Storer provou que essa variante é difícil para o PSPACE.n×n

Para a variante sem limites sobre as posições repetidas ou movimentos livres de captura, o número de legal posições de xadrez é exponencial em n , então o problema está claramente em EXPTIME. Fraenkel e Lichtenstein provaram que essa variante é EXPTIME-hard.n×nn

Jeffε
fonte
3
"ou depois de qualquer posição repetir um número polinomial de vezes". Acho que apenas essa restrição ainda permite jogos super-polinomialmente longos. Por exemplo imaginar um placa com 2 n cavaleiros (por ex. Por meio de promoção) e dois reis. Para m = n 2 , o número de posições será Ω ( C ( m , 2 n×n2nm=n2, que é superpolinomial, e não consigo imaginar que alguma degeneração diminua o número de posições atingíveis em um jogo até algunsp(m). Ω(C(m,2m))p(m)
Yonatan N
AlphaGo me fez pensar. Não é uma canônica versão do Go, certo? Então essa seria uma pergunta melhor? n×n
Seamus
Eu realmente odeio esses problemas, O(1)mas na verdade não há computador ou algoritmos para resolvê-los em um tempo humano razoável. Eu estaria curiosa para saber o número deste tipo de problemas para uma determinada memória limitador fixo e tempo
albanx
1
n×n
11

50×(16×6+1)+1=48511324851234172O(1). Por outro lado, com uma abordagem tão ingênua levaria aproximadamente cinquenta mil anos para o problema se tornar tratável, assumindo que a lei de Moore continuasse indefinidamente.

Joe Fitzsimons
fonte
Quibble menor: o número máximo de movimentos é mais como 50 * (16 * 6 + 1) + 1. Mas então 16 * 6 desses são movimentos de peões, 16 dos quais são potencialmente retirados de 4 opções, embora uma dessas opções seja reduzida diminua o número de movimentos mais tarde ... (Para não discordar do ponto básico, que é sólido. Curiosamente, sua estimativa sai em torno de 10 ^ 10 ^ 5, enquanto Mathworld diz que Hardy a estimou em 10 ^ 10 ^ 50. seja uma má transcrição das anotações dele).
Peter Taylor
@ Peter Meu erro, desculpe. Corrigi a resposta agora. Não tenho certeza se foi assim que a estimativa em Mathworld foi alcançada. Se simplesmente contasse os arranjos legais do conselho (ignorando a regra dos cinquenta movimentos), pode ter sido muito maior.
Joe Fitzsimons 15/05
Outro problema: você usou uma versão incorreta da regra dos cinquenta movimentos. Deve ser "50 movimentos sem um movimento de peão ou uma captura". O número de peças no tabuleiro diminui monotonicamente durante um jogo e a regra ainda permite um limite finito. Embora o jogo ainda seja finito sem a regra dos cinquenta movimentos, pela regra da tríplice repetição, que gera um limite muito maior.
Olaf
Ah sim. Isso aumenta o número máximo de movimentos em cerca de um terço.
Joe Fitzsimons
Você perdeu algo em 50 movimentos: após 50 movimentos sem movimento de peão e sem nenhum item morto, temos empate (o poder do seu cálculo cresce drasticamente, mas ainda é constante).
Saeed
8

Na verdade, existem algumas perguntas diferentes aqui: (a) quanta capacidade computacional é necessária para a pesquisa em árvore de jogos e (b) qual é a complexidade computacional desses problemas? O melhor recurso para todos os fins para esse tipo de coisa é provavelmente a página da Wikipedia sobre Complexidade de jogos , mas para entrar em um pouco mais detalhadamente:

dbbd/2bddb

Na prática, a pesquisa pura em árvore é complementada por um dicionário de baixo para cima; por exemplo, os resultados de todos os jogos finais de xadrez de 6 peças são conhecidos e muitos jogos finais de 7 peças foram analisados ​​(consulte http://en.wikipedia.org/wiki/Endgame_tablebase ), para que o resultado de uma ramificação do jogo possa ser procurou no 'dicionário' (um enorme banco de dados de posições) depois que a posição foi reduzida a poucas partes suficientes, atalho para muitas pesquisas de árvore extras que, de outra forma, seriam necessárias. Foi o que foi feito com as damas - os bancos de dados foram construídos para todos os jogos finais com poucas peças e depois estendidos para adicionar mais peças e mais, até que os resultados de todos os jogos finais de 10 peças fossem conhecidos; então a pesquisa em árvore foi usada a partir da posição inicial, e essencialmente os dois se encontraram no meio.

Além dessas abordagens práticas, porém, existe o lado (b) da questão: qual é a complexidade computacional desses tipos de problemas? Abstratamente, a maioria dos problemas desse tipo tende a se enquadrar em duas categorias; eles são completos para PSPACE - o que significa aproximadamente 'se você pode resolver isso, pode resolver qualquer problema que ocupe muito espaço polinomialmente' - ou EXPTIME-complete (que significa aproximadamente 'se você pode resolver isso, você pode resolver qualquer problema leva exponencialmente muito tempo '), dependendo de quanto tempo o jogo pode durar; novamente, a página da Wikipedia sobre EXPTIME-completeness apresenta uma discussão muito boa sobre os problemas envolvidos e o que diferencia os diferentes jogos dessa frente.

Steven Stadnicki
fonte
-2

Essas estimativas são muito altas.

Você está focado na ramificação com base em movimentos legais. Isso faz muito sentido se você estiver tentando criar um computador de xadrez rápido, mas não é assim que você escreveria um programa para "resolver" o xadrez.

Há <<<<< 13 ^ 64 estados possíveis de jogo no xadrez. Cada quadrado pode conter apenas uma das peças de xadrez ou nada. Você pode iterar por todos eles e marcá-los como vitória em preto ou vitória em branco em não mais que 2 ^ 256 operações.

Uma estimativa mais realista do número de estados de jogo razoavelmente alcançáveis ​​é de cerca de 2 ^ 100

user15969
fonte
3
Devido à regra de que repetir uma configuração do tabuleiro três vezes é um empate, o estado do jogo não inclui apenas as posições atuais das peças, mas também todas as configurações anteriores do tabuleiro. Mas de qualquer forma; uma constante é uma constante.
913 Jeff Jeff
1
Ele também precisa de direitos de castling, mas precisa apenas das 100 configurações anteriores da placa.
Você parece estar absorvendo grande parte da complexidade em "e marcando-as como vitória em preto ou vitória em branco".
Joe Fitzsimons
1
@ Jɛ ff E Nem todas as configurações anteriores da placa, uma vez que qualquer posição antes da última captura ou movimentação do peão nunca poderá ser alcançada novamente. Mas, ainda assim, tanto faz; uma constante ainda é uma constante.
precisa saber é o seguinte
Você não precisaria das últimas 100 configurações de tabuleiro (digamos 100 bits cada), mas apenas dos últimos 100 movimentos e não precisará considerar movimentos de peões. Nunca deve exigir mais de 8 bits. Então, um total de menos de 900 bits, eu diria.
gnasher729