Quais são as técnicas que podemos usar para manter todas as peças em um tabuleiro? É como um problema da rainha
É uma combinação de n-queen
Quais são as técnicas que podemos usar para manter todas as peças em um tabuleiro? É como um problema da rainha
É uma combinação de n-queen
Respostas:
Para direcionar a edição à pergunta Se você estiver recebendo as peças em uma ordem aleatória e não tiver informações sobre peças futuras, a maneira de organizá-las seria conceder às peças a menor quantidade possível de escopo. Por exemplo, se eu recebesse uma dama no primeiro turno, colocaria em uma das quatro esquinas. Mais algumas regras seriam manter os cavaleiros próximos uns dos outros e os peões empilhados um em cima do outro. Todas essas estratégias são um pouco óbvias, mas é difícil ter uma estratégia consistente para usar, pois existem muitas combinações potenciais de peças.
Isso me parece mais uma questão de programação do que uma questão de xadrez, mas é interessante! Depois de pensar um pouco, eu diria que a melhor maneira de abordar esse problema seria usar os cavaleiros como linha de base. É sabido que o número máximo de cavaleiros que alguém pode caber em um tabuleiro é 32 (basta colocá-los em todos os quadrados da mesma cor), portanto, ter isso como sua posição inicial é lógico, pois é a ocupação máxima que você pode ter com um peça individual. Essa estratégia se estende a um quadro N x N.
Posteriormente, eu usaria peões, pois suas proezas de ataque são limitadas a encaminhar diagonais de um quadrado no escopo. Eles podem ocupar todas as outras colunas (não linhas, pois isso seria limitado a 2, 4 e 6 se seguirem as regras convencionais), e isso adicionará N / 4 quadrados mais ocupados para um quadro NxN. Isso generaliza para um número total de quadrados ocupados em N / 2 + N / 4, ou simplesmente 3N / 4 total de quadrados ocupados.
Este é o resultado de cerca de 5 minutos de consideração, portanto meu algoritmo pode estar com defeito. Eu espero que isso ajude a responder sua pergunta!
Eu pensaria que, com uma seleção aleatória de peças, a estratégia básica seria colocá-las no tabuleiro para que eles atacassem o mínimo possível de quadrados e não obstruíssem nenhuma classificação ou arquivo que ainda não estivesse obstruído sempre que possível. isto é, cavaleiros nos cantos, peças móveis de curta distância, como o rei e o cavaleiro na mesma fila ou fila, e bispos na mesma fila ou fila que as outras peças. Em geral, ao escolher um quadrado para a nova peça, seria semelhante a uma caça ao rei. Ao tentar determinar o rei, você deseja reduzir o número de quadrados que ele pode ocupar com segurança o máximo possível (sem reduzi-lo um). Aqui você deseja que cada peça seja colocada para reduzir o número de quadrados ainda não atacado por nenhuma peça o mínimo possível.
Como a definição do problema foi atualizada recentemente, estou assumindo que você está começando com um quadro NxN vazio e recebe uma peça aleatória e é solicitado a colocá-lo. Quando terminar, você recebe outra peça aleatória até que nada mais possa ser colocado.
Para uma estratégia humana , acho que uma boa regra geral seria escolher uma posição (válida) que minimize o número de quadrados ainda abertos negados pela nova peça. Existem dois componentes principais para isso, em um nível alto:
Para uma estratégia de programação , precisamos analisar o problema novamente. A maneira como afirmamos acima não é realmente um problema de programação, pois nosso sucesso depende de encontrar a melhor estratégia possível (o que claramente não fizemos). A programação tradicional não ajuda muito nesse sentido, porque as regras do problema negam ao computador o conhecimento perfeito de quais peças estão por vir. Isso torna as abordagens tradicionais de forçar brutais ou voltar atrás (normalmente usadas para resolver o problema 8 / N-Queens ), impossíveis de empregar.
Pode-se, no entanto, empregar várias técnicas de IA em busca de uma estratégia ótima. Essencialmente, isso se resumia a encontrar uma maneira de representar uma estratégia em algum tipo de estrutura de dados. Esta é realmente a parte difícil e pode ser extremamente complicada. Você provavelmente teria que criar algum tipo de linguagem específica de domínio que permitisse regras como "escolher a coluna mais à direita que ainda não tem um cavaleiro" ou qualquer outra coisa. Em seguida, você escolheria algum tipo de algoritmo de otimização (pesquisa aleatória, algoritmos genéticos, enxames de partículas, etc.) para encontrar um conjunto de regras particularmente bom, que parece superar todo o resto que você encontrou até agora. Há uma boa chance de que isso seja tão terrivelmente complicado que nunca possamos entender como e por que funciona tão bem, mas pode muito bem superar os que nós '
Os dois pontos principais são:
Por exemplo, vou postar um estudo rápido que fiz sobre cavaleiros, é um pouco bobo, já que sabemos que podemos colocar 32 cavaleiros em um tabuleiro 8x8 apenas colocando todos da mesma cor, mas ainda o fiz para veja como poucos cavaleiros devem ser arranjados:
(observe como o ponto 2 determina qual arranjo é melhor quando temos um empate)
Além disso, dois links úteis que encontrei são:
Mantenha as peças fora do centro, nas laterais.