Hay un número de diverso de los algoritmos de la generación del laberinto del, es decir, métodos automatizados para la creación de los laberintos
style=" del
El laberinto demostrado a la derecha ha sido generado por la versión modificada del algoritmo remilgado, abajo. Para el código fuente para un applet de Java que era responsable, chascar encendido el laberinto.
Un laberinto es básicamente un gráfico que presenta un desafío del traversal entre dos puntos. Si el gráfico no es conectado, después hay las regiones del gráfico se pierden que porque no contribuyen al espacio de búsqueda. Si el gráfico contiene lazos, después puede haber trayectorias múltiples entre las trayectorias elegidas. Debido a esto, la generación del laberinto se acerca a menudo como generación de un al azar que atraviesa - el árbol en un gráfico conectado. Los lazos que pueden confundir a disolventes ingenuos del laberinto pueden ser introducidos agregando los bordes al azar al resultado durante el curso del algoritmo.
Los algoritmos comunes se basan en atravesar mínimo de la búsqueda o - los algoritmos del árbol para los gráficos conectados, con los pesos del borde elegidos aleatoriamente. Porque los laberintos se acercan a menudo de un diverso paradigma a la teoría de gráfico tradicional, diversa nomenclatura es de uso general: bordes del gráfico no incluidos en el resultado que atraviesa - el árbol se llama " walls" ; bordes en atravesar - el árbol se llama " passages" ; y las cimas típicamente se llaman " cells" o " rooms". Aunque los algoritmos del laberinto se presenten a menudo en el contexto de órdenes rectangulares o hexagonales, se realizan típicamente igualmente bien en cualquier gráfico conectado .
en una célula particular y la llama el " exit."
Si su arquitectura de computadora tiene un pequeño apilado y no puede utilizar eficazmente la repetición, usted puede almacenar la información en el laberinto sí mismo de la vuelta hacia atrás; esto también proporciona una manera rápida de exhibir una solución, comenzando en cualquier punto dado y retrocediendo a la salida.
Los laberintos generados con una profundidad-primera búsqueda tienen un factor de ramificación bajo y contienen muchos pasillos largos, que hace profundidad-primera un buen algoritmo para generar los laberintos en los juegos video
En los laberintos generados por ese algoritmo, será típicamente relativamente fácil encontrar la manera al cuadrado que primero fue escogido al principio del algoritmo, puesto que la mayoría de las trayectorias llevan a o desde allí, pero encontrar difícilmente la salida.
El profundidad-primer algoritmo de búsqueda de la generación del laberinto se ejecuta con frecuencia usar la vuelta hacia atrás : Marca del
la célula actual como
crea una lista de todas las paredes, y crea un sistema para cada célula, cada uno que contiene apenas eso una célula.
Hay varias estructuras de datos que se pueden utilizar para modelar los sistemas de células. Una puesta en práctica eficiente usar un Desunir-fijó la estructura de datos puede realizar cada unión y encontrar la operación en dos sistemas en el casi-constante amortizado el tiempo (específicamente, ; el para cualquie valor plausible de ), así que el tiempo en marcha de este algoritmo es esencialmente proporcionales al número de paredes disponibles para el laberinto.
Importa poco si la lista de paredes esté seleccionada al azar inicialmente o si una pared se elige aleatoriamente de una lista nonrandom, cualquier manera está apenas como fácil cifrar.
Porque el efecto de este algoritmo es producir atravesar mínimo - árbol de un gráfico con los bordes igual-cargados, tiende a producir los patrones regulares que son bastante fáciles de solucionar.
con una rejilla llena de paredes.
Como el profundidad-primer algoritmo, será generalmente relativamente fácil encontrar la manera a la célula que comienza, pero encontrar difícilmente la manera en cualquier otro lugar.
Observar eso remilgado clásico simplemente que corriente en un gráfico con los pesos al azar crearía los laberintos estilístico idénticos a Kruskal, porque son ambos el atravesar mínimo - los algoritmos del árbol. En lugar, este algoritmo introduce la variación estilística porque los bordes más cercano al punto de partida tienen un peso eficaz más bajo.
Una forma relacionada de mover de un tirón una moneda para cada célula es crear una imagen usar una mezcla al azar de carácteres delanteros de la raya vertical y de la barra. Esto no genera un laberinto simplemente conectado válido, sino algo una selección de lazos cerrados y pasos unicursal. El generador del laberinto en los algoritmos de los edepot, sidos autor por Po-Han Lin en apenas 5 líneas de código, ejecuta esto donde el laberinto generado se inclina en ángulo debido a las rayas verticales.
| Random links: | Endocytosis | Enki Bilal | Andrei Kivilev | Juego ahorrado | Ciruelo de Don |