Miklix

Algoritem rastočega drevesa Generator labirinta

Objavljeno: 16. februar 2025 ob 9:37:08 pop. UTC
Nazadnje posodobljeno: 12. januar 2026 ob 9:05:55 dop. UTC

Generator labirintov, ki uporablja algoritem Rastoče drevo za ustvarjanje popolnega labirinta. Ta algoritem običajno ustvarja labirinte, podobne algoritmu Lov in ubijanje, vendar z nekoliko drugačno tipično rešitvijo.

Ta stran je bila strojno prevedena iz angleščine, da bi bila dostopna čim večjemu številu ljudi. Žal strojno prevajanje še ni popolna tehnologija, zato lahko pride do napak. Če želite, si lahko izvirno angleško različico ogledate tukaj:

Growing Tree Algorithm Maze Generator

Algoritem Rastoče drevo je zanimiv, ker lahko posnema vedenje več drugih algoritmov, odvisno od tega, kako je med generiranjem izbrana naslednja celica. Implementacija na tej strani uporablja pristop, ki odloča v širino in je podoben čakalni vrsti.

Popoln labirint je labirint, v katerem obstaja natanko ena pot od katere koli točke v labirintu do katere koli druge točke. To pomeni, da se ne morete vrteti v krogu, vendar boste pogosto naleteli na slepe ulice, zaradi česar se boste morali obrniti in vrniti nazaj.

Tukaj ustvarjeni zemljevidi labirintov vključujejo privzeto različico brez začetnih in končnih položajev, tako da jih lahko določite sami: iz katere koli točke v labirintu do katere koli druge točke obstaja rešitev. Če želite navdih, lahko omogočite predlagana začetni in končni položaj - in si celo ogledate rešitev med njima.


Ustvarjanje novega labirinta








O algoritmu rastočega drevesa

Algoritem Rastoče drevo je prilagodljiva in zmogljiva metoda za ustvarjanje popolnih labirintov. Algoritem je zanimiv, ker lahko posnema vedenje več drugih algoritmov za ustvarjanje labirintov, kot so Primov algoritem, rekurzivno sledenje nazaj in rekurzivno deljenje, odvisno od tega, kako izberete naslednjo celico za obdelavo.

Kako deluje algoritem rastočega drevesa

1. korak: Inicializacija

  • Začnite z mrežo neobiskanih celic.
  • Izberite naključno začetno celico in jo dodajte na seznam.

2. korak: Zanka generiranja labirinta

  • Dokler seznam celic ni prazen: Izberite celico s seznama na podlagi določene strategije (pojasnjeno spodaj). Izrežite prehod iz izbrane celice do enega od njenih neobiskanih sosedov (izbranih naključno). Dodajte soseda na seznam, saj je zdaj del labirinta. Če izbrana celica nima neobiskanih sosedov, jo odstranite s seznama.

3. korak: Prekinitev

  • Algoritem se konča, ko na seznamu ni več celic, kar pomeni, da je celoten labirint izrezljan.

Strategije izbire celic (fleksibilnost algoritma)

Ključna značilnost algoritma Rastoče drevo je, kako izberete, katero celico boste obdelali naslednjo. Ta izbira močno vpliva na videz labirinta:

Najnovejša celica (vedenje, podobno skladu) – Rekurzivni povratni sledilnik:

  • Vedno izberite nazadnje dodano celico.
  • Ustvari dolge, zavite hodnike s številnimi slepimi ulicami (kot labirint za iskanje v globino).
  • Labirinti imajo običajno dolge prehode in jih je enostavno rešiti.

Naključna celica (randomiziran Primov algoritem):

  • Vsakič izberi naključno celico s seznama.
  • Ustvari bolj enakomerno porazdeljen labirint s kompleksnimi, prepletenimi potmi.
  • Manj dolgih hodnikov in več razvejanih.

Najstarejša celica (obnašanje podobno čakalni vrsti):

  • Vedno izberite najstarejšo celico na seznamu.
  • Ustvari labirinte z bolj enakomerno razporeditvijo, kot vzorec iskanja v širino.
  • Kratki, košati prehodi z gostimi povezavami.
  • (To je različica, ki je implementirana tukaj)

Hibridni pristopi:

Združujte strategije za različne značilnosti labirinta. Na primer:

  • 90 % najnovejših, 10 % naključnih: Izgleda večinoma kot rekurzivni labirint povratnega sledenja, vendar z občasnimi vejami, ki prekinjajo dolge hodnike.
  • 50 % najnovejših, 50 % najstarejših: Uravnoteži dolge hodnike z bujno rastjo.

Nadaljnje branje

Če vam je bila ta objava všeč, vam bodo morda všeč tudi ti predlogi:


Delite na BlueskyDelite na FacebookuDelite na LinkedInuDelite na TumblrDelite na XDelite na LinkedInuPripni na Pinterest

Mikkel Christensen

O avtorju

Mikkel Christensen
Mikkel je avtor in lastnik spletne strani miklix.com. Ima več kot 20 let izkušenj kot profesionalni računalniški programer/razvijalec programske opreme in je trenutno za polni delovni čas zaposlen v veliki evropski IT korporaciji. Kadar ne piše bloga, svoj prosti čas posveča številnim interesom, hobijem in dejavnostim, kar se do neke mere odraža v raznolikosti tem na tem spletnem mestu.