Sobre

Geração de Labirinto

Geração de labirinto usando algoritmo de busca em profundidade (DFS - Depth-First Search), criando um labirinto perfeito onde existe exatamente um caminho entre quaisquer dois pontos.

Algoritmo Principal

O algoritmo usa DFS recursivo:

  1. Grid: Cria uma grade de células, cada uma com 4 paredes
  2. Início: Escolhe uma célula inicial
  3. Busca: Para cada célula:
    • Marca como visitada
    • Escolhe aleatoriamente um vizinho não visitado
    • Remove a parede entre as células
    • Recursivamente visita o vizinho
  4. Backtracking: Se não há vizinhos não visitados, volta (backtrack)
  5. Resultado: Quando todas as células são visitadas, o labirinto está completo

Equações Implementadas

No código:

function generateMaze(cell) {
  cell.visited = true
  
  // Escolhe vizinhos não visitados
  neighbors = getUnvisitedNeighbors(cell)
  
  while (neighbors.length > 0) {
    // Escolhe aleatoriamente
    next = random(neighbors)
    
    // Remove parede
    removeWall(cell, next)
    
    // Recursão
    generateMaze(next)
    
    // Atualiza vizinhos
    neighbors = getUnvisitedNeighbors(cell)
  }
}

Complexidade de Compreensão

Nível: Intermediário

  • Conceitos necessários: Grafos, busca em profundidade, recursão, backtracking
  • Matemática: Teoria de grafos, algoritmos de busca
  • Programação: Recursão, estruturas de dados, algoritmos de grafos

Referências e Recursos para Estudo

Artigos e Documentação

Tutoriais e Código

Aprofundamento Matemático

Visualizações Interativas

Arquivo do processo

Todas as gerações — incluindo as ruins — fazem parte do processo.

4quadros