Miklix

Generador de laberints d'algoritmes d'Eller

Publicat: 6 de març del 2025, a les 11:17:30 UTC

Generador de laberints amb l'algoritme d'Eller per crear un laberint perfecte. Aquest algorisme és interessant, ja que només requereix mantenir la fila actual (no tot el laberint) a la memòria, de manera que es pot utilitzar per crear laberints molt i molt grans fins i tot en sistemes molt limitats.

Aquesta pàgina es va traduir automàticament de l'anglès per tal de fer-la accessible al màxim de persones possible. Malauradament, la traducció automàtica encara no és una tecnologia perfeccionada, de manera que es poden produir errors. Si ho prefereixes, pots veure la versió original en anglès aquí:

Eller's Algorithm Maze Generator

L'algoritme d'Eller és un algorisme de generació de laberints que produeix de manera eficient laberints perfectes (laberints sense bucles i un sol camí entre dos punts qualsevol) mitjançant un enfocament fila per fila. Produeix laberints similars a l'algorisme de Kruskal, però ho fa generant només una fila alhora, sense necessitat d'emmagatzemar tot el laberint a la memòria. Això el fa útil per generar laberints molt grans en sistemes molt limitats i per a la generació de contingut procedimental.

Un laberint perfecte és un laberint en el qual hi ha exactament un camí des de qualsevol punt del laberint fins a qualsevol altre punt. Això vol dir que no pots acabar donant voltes, però sovint et trobaràs amb carrerons sense sortida, obligant-te a donar la volta i tornar enrere.

Els mapes de laberint generats aquí inclouen una versió predeterminada sense cap posició d'inici i d'arribada, de manera que les podeu decidir vosaltres mateixos: hi haurà una solució des de qualsevol punt del laberint fins a qualsevol altre punt. Si voleu inspiració, podeu activar una posició d'inici i d'arribada suggerida, i fins i tot veure la solució entre les dues.


Genera un laberint nou








Sobre l'algoritme d'Eller

L'algoritme d'Eller va ser introduït per David Eller.

L'algoritme destaca pel seu enfocament eficient fila per fila per a la generació de laberints, el que el fa ideal per a laberints infinits o generats en temps real. Es cita habitualment a la generació de contingut procedimental i la literatura de generació de laberints, però no he pogut trobar fonts primàries que detallin la seva publicació original.

Com funciona l'algoritme d'Eller per a la generació de laberints

L'algoritme d'Eller processa una fila a la vegada, mantenint i modificant conjunts de cel·les connectades. Assegura la connectivitat evitant bucles i amplia el laberint cap avall de manera eficient.

Teòricament es pot utilitzar per generar laberints infinits, però per assegurar-se que el laberint generat és realment resoluble, cal canviar a la lògica de la "fila final" en algun moment per acabar el laberint.

Pas 1: inicialitzeu la primera fila

  • Assigna a cada cel·la de la fila un ID de conjunt únic.

Pas 2: uneix algunes cel·les adjacents horitzontalment

  • Combina aleatòriament les cel·les adjacents configurant-les amb el mateix ID de conjunt. Això garanteix que hi hagi passatges horitzontals.

Pas 3: creeu connexions verticals a la fila següent

  • Per a cada conjunt que apareix a la fila, almenys una cel·la s'ha de connectar cap avall (per garantir la connectivitat).
  • Trieu aleatòriament una o més cel·les de cada conjunt per connectar-vos a la fila següent.

Pas 4: aneu a la fila següent

  • Continueu les connexions verticals assignant el mateix identificador de conjunt a les cel·les corresponents a continuació.
  • Assigna els nous ID de conjunt a les cel·les no assignades.

Pas 5: repetiu els passos 2-4 fins que s'arribi a l'última fila

  • Continueu processant fila per fila.

Pas 6: processeu la fila final

  • Assegureu-vos que totes les cel·les de l'última fila pertanyin al mateix conjunt combinant els conjunts separats restants.

Comparteix a BlueskyComparteix a FacebookComparteix a LinkedInComparteix a TumblrComparteix a XComparteix a LinkedInPin a Pinterest

Mikkel Bang Christensen

Sobre l'autor

Mikkel Bang Christensen
Mikkel és el creador i propietari de miklix.com. Té més de 20 anys d'experiència com a programador/desenvolupador de programari informàtic professional i actualment treballa a temps complet per a una gran corporació informàtica europea. Quan no fa blocs, dedica el seu temps lliure a una gran varietat d'interessos, aficions i activitats, que fins a cert punt es poden reflectir en la varietat de temes tractats en aquest lloc web.