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:
- Grid: Cria uma grade de células, cada uma com 4 paredes
- Início: Escolhe uma célula inicial
- 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
- Backtracking: Se não há vizinhos não visitados, volta (backtrack)
- 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
- Wikipedia - Maze Generation Algorithm - Visão geral completa
- Wikipedia - Depth-First Search - DFS
- MathWorld - Maze - Definição matemática
Tutoriais e Código
- The Coding Train - Maze Generation - Tutorial passo a passo
- Rosetta Code - Maze - Implementações
- Processing Examples - Exemplos práticos
Aprofundamento Matemático
- Introduction to Algorithms - CLRS - Algoritmos
- Graph Theory - Diestel - Teoria de grafos
Visualizações Interativas
- Maze Generator - Gerador interativo
- Algorithm Visualizations - Visualizações de algoritmos
Arquivo do processo
Todas as gerações — incluindo as ruins — fazem parte do processo.
4quadros