Miklix

Gerador de labirintos do algoritmo de Wilson

Publicado: 16 de fevereiro de 2025 às 19:33:16 UTC
Última atualização: 12 de janeiro de 2026 às 09:03:22 UTC

Gerador de labirintos usando o algoritmo de Wilson para criar um labirinto perfeito. Este algoritmo gera todos os labirintos possíveis de um dado tamanho com a mesma probabilidade, por isso, em teoria, pode gerar labirintos com muitos layouts mistos, mas como há mais labirintos possíveis com corredores mais curtos do que mais longos, verá esses com mais frequência.

Esta página foi traduzida automaticamente do inglês para a tornar acessível ao maior número possível de pessoas. Infelizmente, a tradução automática ainda não é uma tecnologia aperfeiçoada, pelo que podem ocorrer erros. Se preferir, pode ver a versão original em inglês aqui:

Wilson's Algorithm Maze Generator

O algoritmo de Wilson é um método de passeio aleatório apagado por loops que gera árvores uniformes para a criação de labirintos. Isto significa que todos os labirintos possíveis de um dado tamanho têm a mesma probabilidade de serem gerados, tornando-o uma técnica de geração de labirintos imparcial. O algoritmo de Wilson pode ser considerado uma versão melhorada do algoritmo de Aldous-Broder, pois gera labirintos com características idênticas, mas corre muito mais rápido, por isso não me dei ao trabalho de implementar o algoritmo de Aldous-Broder aqui.

Um labirinto perfeito é um labirinto em que existe exatamente um caminho de qualquer ponto do labirinto para qualquer outro ponto. Isto significa que não pode acabar por andar em círculos, mas encontrará frequentemente becos sem saída, obrigando-o a dar meia volta e regressar.

Os mapas de labirinto gerados aqui incluem uma versão predefinida sem posições de início e fim, para que possas decidir por ti próprio: haverá uma solução de qualquer ponto do labirinto para qualquer outro ponto. Se quiseres inspiração, podes ativar uma posição de início e de fim sugerida - e até ver a solução entre as duas.


Gerar novo labirinto








Sobre o Algoritmo de Wilson

O algoritmo de Wilson para gerar árvores geradoras uniformes usando uma parede aleatória apagada por laços foi criado por David Bruce Wilson.

Wilson introduziu originalmente este algoritmo em 1996 enquanto investigava árvores geradoras aleatórias e cadeias de Markov na teoria da probabilidade. Embora o seu trabalho tenha sido principalmente em matemática e física estatística, o algoritmo foi desde então amplamente adotado para a geração de labirintos devido à sua capacidade de produzir labirintos perfeitamente uniformes.

Como Funciona o Algoritmo de Wilson para a Geração de Labirintos

O algoritmo de Wilson assegura que o labirinto final está totalmente ligado sem quaisquer ciclos, ao esculpir iterativamente caminhos a partir de células não visitadas usando passeios aleatórios.

Passo 1: Inicializar

  • Começa com uma grelha cheia de paredes.
  • Defina uma lista de todas as células possíveis de passagem.

Passo 2: Escolha uma Célula Inicial Aleatória

  • Escolhe qualquer célula aleatória e marca-a como visitada. Isto serve como ponto de partida do labirinto durante a geração.

Passo 3: Caminhada Aleatória com Apagamento de Loops

  • Escolhe uma célula não visitada e começa uma caminhada aleatória (movendo-te em direções aleatórias).
  • Se a caminhada chegar a uma cela já visitada, apague quaisquer laços no caminho.
  • Quando o percurso se liga à região visitada, assinala todas as celas do percurso como visitadas.

Passo 4: Repita até que todas as células sejam visitadas:

  • Continue a selecionar células não visitadas e a fazer caminhadas aleatórias até que todas as células façam parte do labirinto.

Leitura adicional

Se gostou deste post, também pode gostar destas sugestões:


Partilhar no BlueskyPartilhar no FacebookPartilhar no LinkedInPartilhar no TumblrPartilhar em XPartilhar no LinkedInFixar no Pinterest

Mikkel Christensen

Sobre o autor

Mikkel Christensen
Mikkel é o criador e proprietário do miklix.com. Tem mais de 20 anos de experiência como programador informático/desenvolvedor de software profissional e trabalha atualmente a tempo inteiro para uma grande empresa europeia de TI. Quando não está a escrever no blogue, dedica o seu tempo livre a um vasto leque de interesses, passatempos e actividades, que podem, em certa medida, refletir-se na variedade de tópicos abordados neste sítio Web.