Miklix

Augančio medžio algoritmo labirinto generatorius

Paskelbta: 2025 m. vasario 16 d. 21:36:32 UTC
Paskutinį kartą atnaujinta: 2026 m. sausio 12 d. 09:05:49 UTC

Labirintų generatorius, naudojantis „Growing Tree“ algoritmą tobulam labirintui sukurti. Šis algoritmas linkęs generuoti labirintus, panašius į „Hunt and Kill“ algoritmą, tačiau su šiek tiek kitokiu tipiniu sprendimu.

Šis puslapis buvo mašininiu būdu išverstas iš anglų kalbos, kad juo galėtų naudotis kuo daugiau žmonių. Deja, mašininis vertimas dar nėra tobula technologija, todėl gali pasitaikyti klaidų. Jei pageidaujate, originalią versiją anglų kalba galite peržiūrėti čia:

Growing Tree Algorithm Maze Generator

Augančio medžio algoritmas yra įdomus, nes jis gali imituoti kelių kitų algoritmų elgesį, priklausomai nuo to, kaip generavimo metu pasirenkama kita ląstelė. Šiame puslapyje pateiktame įgyvendinime naudojamas pločio principu pagrįstas, eilės principu pagrįstas metodas.

Tobulasis labirintas - tai labirintas, kuriame iš bet kurio labirinto taško į bet kurį kitą tašką veda lygiai vienas kelias. Tai reiškia, kad negalite eiti ratu, bet dažnai susidursite su aklavietėmis, todėl būsite priversti apsisukti ir grįžti atgal.

Čia sukurtuose labirinto žemėlapiuose yra numatytoji versija be pradžios ir pabaigos pozicijų, todėl jas galite nustatyti patys: iš bet kurio labirinto taško į bet kurį kitą tašką bus rastas sprendimas. Jei norite įkvėpimo, galite įjungti siūlomą pradžios ir pabaigos padėtį ir net pamatyti sprendimą tarp šių dviejų padėčių.


Sukurti naują labirintą








Apie augančio medžio algoritmą

„Augančio medžio“ algoritmas yra lankstus ir galingas metodas tobuliems labirintams generuoti. Algoritmas įdomus tuo, kad jis gali imituoti kelių kitų labirintų generavimo algoritmų, tokių kaip Primo algoritmas, rekursinis atgalinis sekimas ir rekursinis dalyba, elgesį, priklausomai nuo to, kaip pasirenkate kitą langelį apdorojimui.

Kaip veikia augančio medžio algoritmas

1 veiksmas: inicijavimas

  • Pradėkite nuo neaplankytų langelių tinklelio.
  • Pasirinkite atsitiktinį pradinį langelį ir įtraukite jį į sąrašą.

Veiksmas: labirinto generavimo ciklas

  • Kol langelių sąrašas nėra tuščias: Pasirinkite langelį iš sąrašo pagal konkrečią strategiją (paaiškinta toliau). Nubrėžkite perėjimą iš pasirinkto langelio į vieną iš jo neaplankytų kaimynų (pasirinktų atsitiktinai). Pridėkite kaimyną prie sąrašo, nes jis dabar yra labirinto dalis. Jei pasirinktas langelis neturi neaplankytų kaimynų, pašalinkite jį iš sąrašo.

3 veiksmas: nutraukimas

  • Algoritmas baigia darbą, kai sąraše nebėra langelių, tai reiškia, kad visas labirintas yra iškaltas.

Ląstelių atrankos strategijos (algoritmo lankstumas)

Svarbiausias „Augančio medžio“ algoritmo bruožas yra tai, kaip pasirenkate, kurią ląstelę apdoroti toliau. Šis pasirinkimas smarkiai paveikia labirinto išvaizdą:

Naujausias langelis (steką primenantis elgesys) – rekursinis atgalinis sekimas:

  • Visada pasirinkite vėliausiai pridėtą langelį.
  • Sukuria ilgus, vingiuotus koridorius su daugybe akligatvių (kaip gylio paieškos labirintas).
  • Labirintai paprastai būna ilgi ir lengvai įveikiami.

Atsitiktinė ląstelė (atsitiktinės atrankos Prim algoritmas):

  • Kiekvieną kartą iš sąrašo pasirinkite atsitiktinę ląstelę.
  • Sukuria tolygiau paskirstytą labirintą su sudėtingais, painiotais takais.
  • Mažiau ilgų koridorių ir daugiau išsišakojusių.

Seniausia ląstelė (eilės tipo elgesys):

  • Visada pasirinkite seniausią sąrašo langelį.
  • Generuoja labirintus su tolygesniu išsidėstymu, pavyzdžiui, paieškos pagal plotį modelį.
  • Trumpi, krūmingi praėjimai su tankiomis jungtimis.
  • (Tai čia įdiegta versija)

Hibridiniai metodai:

Derinkite strategijas, atsižvelgdami į įvairias labirinto charakteristikas. Pavyzdžiui:

  • 90 % naujausi, 10 % atsitiktiniai: Dažniausiai atrodo kaip rekursinis atgalinio sekimo labirintas, bet su retkarčiais pasitaikančiomis šakomis, kurios skaido ilgus koridorius.
  • 50 % naujausių, 50 % seniausių: subalansuoja ilgus koridorius su krūminiais augalais.

Papildoma literatūra

Jei jums patiko šis įrašas, jums taip pat gali patikti šie pasiūlymai:


Pasidalinkite „Bluesky“.Dalintis FacebookBendrinkite „LinkedIn“.Bendrinkite „Tumblr“.Dalintis XBendrinkite „LinkedIn“.Prisegti prie Pinterest

Mikkel Christensen

Apie autorių

Mikkel Christensen
Mikkelis yra miklix.com kūrėjas ir savininkas. Jis turi daugiau nei 20 metų profesionalaus kompiuterių programuotojo ir programinės įrangos kūrėjo patirtį ir šiuo metu visą darbo dieną dirba didelėje Europos IT korporacijoje. Kai jis nerašo tinklaraščio, laisvalaikį skiria įvairiems interesams, pomėgiams ir užsiėmimams, kurie tam tikra prasme gali atsispindėti šioje svetainėje nagrinėjamų temų įvairovėje.