Dai un'occhiata a questo link:
Qui, l'algoritmo teorico dato è:
Consider the space for a maze being a large grid of cells (like a large chess board), each cell starting with four walls. Starting from a random cell, the computer then selects a random neighbouring cell that has not yet been visited. The computer removes the 'wall' between the two cells and adds the new cell to a stack (this is analogous to drawing the line on the floor). The computer continues this process, with a cell that has no unvisited neighbours being considered a dead-end. When at a dead-end it backtracks through the path until it reaches a cell with an unvisited neighbour, continuing the path generation by visiting this new, unvisited cell (creating a new junction). This process continues until every cell has been visited, causing the computer to backtrack all the way back to the beginning cell.
Ma non penso che l'animazione a destra usi lo stesso algoritmo per generare il labirinto, anche se non è corretto.
Ritengo che l'animazione utilizzi questo algoritmo:
- Inizia con qualsiasi cella non visitata, fallo diventare parte del labirinto e contrassegnalo come visitato.
- Aggiungi i vicini non visitati di quella cella al gruppo di celle che può essere considerato successivo
- Scegli una qualsiasi cella dal set e contrassegnala come visitata.
- Controlla se quella cella non ha nessun vicino visitato tranne ONE (quello che ha causato l'aggiunta di questa cella al set in primo luogo). Altro vai a 3.
- Continua fino a quando tutte le celle sono visitate.
Mi sbaglio?