Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Generación de laberintos: Algoritmo de Aldous-Broder

Generación de laberintos: Algoritmo de Aldous-Broder

Autor jc mouse martes, octubre 23, 2018

El Algoritmo de Aldous-Broder llamado así por dos matemáticos, David Aldous and A. Broder (quienes trabajaban en la investigación de arboles uniformes), es uno de los algoritmos para generar laberintos más sencillos que existen, pertenece a  la categoría de «cavar túneles», lo que quiere decir que dado una matriz nxn, se cava un camino a lo ancho y alto de la matriz hasta cubrirlo en su totalidad.

El algoritmo es el siguiente:

  1. Especificar el tamaño del laberinto. Una matriz NxM.
  2. Elegir al azar una casilla dentro del laberinto.
  3. Desplazarse a una casilla vecina adyacente al azar (vertical u horizontalmente, no en diagonal) , cavar un túnel hacia la casilla anterior en el caso de que la nueva casilla no haya sido visitada.
  4. Repetir el paso 3 hasta que todas las casillas hayan sido visitadas.
    Marcar la ubicación de la entrada o del punto inicial de la exploración y la ubicación de la salida.

Este algoritmo, si bien consigue su objetivo de trazar un laberinto, es ineficiente porque visita la misma casilla varias veces dado que se mueve al azar y a más grande el laberinto, más tiempo tardara en visitar todas y cada una de las casillas.

A continuación un ejemplo trivial del algoritmo:

Dado una matriz 3×3

maze 3

Se elige «al azar» una casilla

aletaorio

A continuación se desplaza a una casilla vecina adyacente al azar (vertical u horizontalmente, no en diagonal)

casilla adyacente

Si la casilla no ha sido visitada aun, se cava un túnel entre ambas

laberinto tunel

Y se repite nuevamente buscando otra casilla hasta cubrirlas todas

casilla siguiente

El siguiente video muestra el anterior proceso para varios tamaños de laberintos, se puede apreciar como a mayor dimensión del laberinto, más tiempo consumirá recorrer cada casilla y por tanto el tiempo para generar el laberinto es cada vez mayor.

enjoy!!!?

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

JASYPT : Cifrado simplificado Java

JASYPT : Cifrado simplificado Java

Jasypt es una biblioteca java que permite agregar capacidades básicas de encriptación a proyectos con el mínimo esfuerzo...

Ejemplo práctico de MVC java Swing con Netbeans

Ejemplo práctico de MVC java Swing con Netbeans

Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la inter...

Personaliza un JComboBox estilo Metro de Windows

Personaliza un JComboBox estilo Metro de Windows

Si bien se pueden encontrar en google estilos java (Look and Feel) listos para cambiar la apariencia de nuestras aplicac...

Introducción a PHP con Netbeans

Introducción a PHP con Netbeans

NetBeans es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programación Java. Sin em...

Gridview con imagen en ASP y Access

Gridview con imagen en ASP y Access

En este videotutorial se muestra la forma de colocar una imagen en un control GridView en Visual Studio, Se utiliza una...

Lo nuevo de HTTP Client

Lo nuevo de HTTP Client

Una de las novedades de Java 9 y 10 aunque por el momento en modo de prueba (jdk.incubator.http) es el Cliente HTTP el c...

Comparte lo que sabes

Categorias

Últimas entradas

Quasar es un proyecto Open Source basado en el Framework Vue que nos permite desarrollar proyectos de todo tipo, por eje...

Continuando el post de «Introducción a Retrofit» donde realizamos una breve preparación a lo que es el uso de la librerí...

Editar un documento PDF no es tan sencillo como editar un archivo de texto por ejemplo, para editar archivos PDFs necesi...

¿Alguna vez tuviste la necesidad de hacer una captura de pantalla de una página web? Si es así, seguramente buscaste y d...

Herramientas

Generador de Enlaces a Whatsapp