An Integer Linear Programming Model for the Evolomino Puzzle

Este artigo formaliza o quebra-cabeça lógico Evolomino como um modelo de programação linear inteira, apresenta um algoritmo para gerar instâncias com solução única e demonstra a eficácia de um solver CP-SAT na resolução de puzzles de até 18x18 em tempo computacional viável.

Andrei V. Nikolaev, Yuri A. Myasnikov

Publicado Wed, 11 Ma
📖 4 min de leitura🧠 Leitura aprofundada

Each language version is independently generated for its own context, not a direct translation.

Imagine que você está diante de um novo jogo de lógica, como um "Sudoku" ou "Slitherlink", mas com uma regra especial de crescimento. Esse jogo se chama Evolomino.

Aqui está a explicação do que os autores desse artigo fizeram, traduzida para uma linguagem simples e cheia de analogias:

1. O Que é o Jogo (Evolomino)?

Pense em um tabuleiro de xadrez onde algumas casas têm setas desenhadas. O seu objetivo é desenhar quadrados em algumas casas brancas para formar "blocos" (como peças de Tetris).

A mágica do jogo é a evolução:

  • Cada seta deve guiar uma "família" de blocos.
  • O primeiro bloco da família é pequeno (apenas 1 quadrado).
  • O segundo bloco é um pouco maior (2 quadrados), mas tem exatamente a mesma forma do primeiro, apenas deslocado.
  • O terceiro bloco é maior ainda (3 quadrados), mantendo a mesma forma, e assim por diante.
  • É como se você estivesse criando uma "sombra" que cresce a cada passo, mas nunca muda de formato e nunca gira.

2. O Problema: Como Resolver Isso?

O jogo parece fácil de entender, mas é matematicamente muito difícil para computadores. É como tentar adivinhar a forma de uma nuvem que está crescendo, mas você só pode ver pequenas partes dela e precisa garantir que todas as peças se encaixem perfeitamente sem se chocar.

Os autores do artigo (Andrei e Yuri) queriam ensinar um computador a resolver esses quebra-cabeças. Eles não usaram "intuição" ou "tentativa e erro" comum. Em vez disso, eles criaram uma receita matemática rigorosa chamada Programação Linear Inteira (ILP).

3. A "Receita" Matemática (O Modelo ILP)

Imagine que você é um chefe de cozinha tentando organizar uma cozinha gigante. Você precisa de regras estritas para que nada dê errado. O modelo matemático deles funciona como um livro de regras com três partes principais:

  • As Regras de Ocupação: "Se eu colocar um quadrado aqui, ele não pode pertencer a dois blocos ao mesmo tempo." (É como dizer: "Um ingrediente só pode estar em um prato por vez").
  • A Regra do Crescimento (Evolução): "Se o bloco 1 tem um quadrado na posição X, o bloco 2 deve ter um quadrado na posição Y, que é exatamente X mais um passo." Eles usam equações para garantir que a forma do bloco não mude, apenas cresça.
  • A Regra da Conexão (O Fluxo): Como garantir que os quadrados formem uma peça única e não várias pedacinhos soltos? Eles usaram uma ideia de "fluxo de água". Imagine que o quadrado na seta é uma torneira. A água (o fluxo) deve sair da torneira e encher todos os quadrados do bloco. Se houver um quadrado isolado, a água não chega lá, e o computador sabe que a solução está errada.

4. Criando os Jogos (Gerador de Quebra-Cabeças)

Não basta resolver o jogo; é preciso criar novos jogos que tenham uma única solução correta.
Os autores criaram um algoritmo (um robô criador) que:

  1. Começa com um tabuleiro vazio.
  2. Desenha setas aleatoriamente (como se estivesse desenhando com os olhos fechados, mas tentando não sair do papel).
  3. Tenta preencher os blocos seguindo as regras.
  4. Se o jogo ficar com várias soluções possíveis, o robô "apaga" algumas dicas e tenta de novo, até encontrar o ponto perfeito onde o jogo é desafiador, mas tem apenas uma resposta certa.

5. O Resultado: O Computador Venceu!

Eles testaram esse sistema em computadores poderosos.

  • O que aconteceu? O computador (usando um software chamado CP-SAT) conseguiu resolver quebra-cabeças de tamanho médio (11x11) em menos de um segundo.
  • O recorde: Ele conseguiu resolver tabuleiros grandes (18x18) em menos de um minuto.

Isso é impressionante porque, para um computador, tentar todas as combinações possíveis de um tabuleiro 18x18 seria como tentar encontrar uma agulha em um palheiro que é do tamanho de um planeta. Mas, graças às regras matemáticas inteligentes que os autores escreveram, o computador "pula" as combinações impossíveis e vai direto para a solução.

Resumo Final

Os autores pegaram um jogo de lógica novo e divertido, traduziram suas regras para uma linguagem que os computadores entendem perfeitamente (matemática pura) e criaram um método para gerar novos jogos automaticamente.

É como se eles tivessem ensinado um computador a jogar xadrez não apenas movendo peças, mas entendendo a lógica profunda de como as peças devem evoluir, permitindo que ele resolva desafios que antes pareciam impossíveis de serem feitos tão rápido.