Miklix

Generador de laberints d'algoritmes d'arbres en creixement

Publicat: 6 de març del 2025, a les 11:17:45 UTC
Última actualització: 12 de gener del 2026, a les 9:06:15 UTC

Generador de laberints que utilitza l'algoritme Growing Tree per crear un laberint perfecte. Aquest algorisme tendeix a generar laberints similars a l'algoritme Hunt and Kill, però amb una solució típica una mica diferent.

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í:

Growing Tree Algorithm Maze Generator

L'algoritme Growing Tree és interessant, perquè pot emular el comportament de diversos altres algoritmes, depenent de com es tria la següent cel·la durant la generació. La implementació d'aquesta pàgina utilitza un enfocament d'amplitud primer, semblant a una cua.

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 de l'arbre creixent

L'algoritme Growing Tree és un mètode flexible i potent per generar laberints perfectes. L'algoritme és interessant perquè pot emular el comportament de diversos altres algoritmes de generació de laberints, com ara l'algoritme de Prim, el retrocés recursiu i la divisió recursiva, depenent de com seleccioneu la següent cel·la a processar.

Com funciona l'algoritme de l'arbre creixent

Pas 1: Inicialització

  • Comença amb una quadrícula de cel·les no visitades.
  • Trieu una cel·la inicial aleatòria i afegiu-la a una llista.

Pas 2: Bucle de generació de laberints

  • Mentre la llista de cel·les no estigui buida: seleccioneu una cel·la de la llista basant-vos en una estratègia específica (que s'explica a continuació). Traceu un passatge des de la cel·la seleccionada fins a un dels seus veïns no visitats (escollits a l'atzar). Afegiu el veí a la llista, ja que ara forma part del laberint. Si la cel·la seleccionada no té veïns no visitats, elimineu-la de la llista.

Pas 3: Rescissió

  • L'algoritme acaba quan no hi ha més cel·les a la llista, és a dir, s'ha esculpit tot el laberint.

Estratègies de selecció de cel·les (flexibilitat de l'algoritme)

La característica definidora de l'algoritme Growing Tree és com tries quina cel·la processar a continuació. Aquesta elecció afecta dràsticament l'aspecte del laberint:

Cel·la més nova (comportament similar a una pila): Retroseguidor recursiu:

  • Seleccioneu sempre la cel·la afegida més recentment.
  • Produeix passadissos llargs i sinuosos amb molts carrerons sense sortida (com un laberint de cerca en profunditat).
  • Els laberints solen tenir passatges llargs i són fàcils de resoldre.

Cel·la aleatòria (algoritme de Prim aleatoritzat):

  • Trieu una cel·la aleatòria de la llista cada vegada.
  • Crea un laberint més uniforme amb camins complexos i enredats.
  • Menys passadissos llargs i més ramificacions.

Cel·la més antiga (comportament similar a una cua):

  • Trieu sempre la cel·la més antiga de la llista.
  • Genera laberints amb una dispersió més uniforme, com un patró de cerca d'amplitud primer.
  • Passadissos curts i frondosos amb connexions denses.
  • (Aquesta és la versió implementada aquí)

Enfocaments híbrids:

Combina estratègies per a diverses característiques del laberint. Per exemple:

  • 90% més nou, 10% aleatori: Sembla principalment un laberint recursiu de retrocés, però amb ramificacions ocasionals que trenquen llargs passadissos.
  • 50% més nou, 50% més antic: Equilibra llargs corredors amb un creixement arbustiu.

Lectures addicionals

Si t'ha agradat aquesta publicació, també et poden agradar aquests suggeriments:


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

Mikkel Christensen

Sobre l'autor

Mikkel 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.