Miklix

Ellerio algoritmo labirinto generatorius

Paskelbta: 2025 m. vasario 16 d. 19:59:54 UTC
Paskutinį kartą atnaujinta: 2026 m. sausio 12 d. 09:04:10 UTC

Labirinto generatorius, naudojantis Ellerio algoritmą tobulam labirintui sukurti. Šis algoritmas įdomus tuo, kad jam reikia atmintyje laikyti tik dabartinę eilutę (ne visą labirintą), todėl jį galima naudoti kuriant labai, labai didelius labirintus net ir labai ribotose sistemose.

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

Eller's Algorithm Maze Generator

Ellerio algoritmas yra labirintų generavimo algoritmas, kuris efektyviai sukuria tobulus labirintus (labirintus be kilpų ir vienu keliu tarp bet kurių dviejų taškų), naudodamas eilutė po eilutės metodą. Jis sukuria labirintus, panašius į Kruskalo algoritmą, tačiau tai daro generuodamas tik po vieną eilutę, nereikalaujant viso labirinto saugoti atmintyje. Tai daro jį naudingą generuojant labai didelius labirintus labai ribotose sistemose ir procedūriniam turiniui generuoti.

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 Ellerio algoritmą

Ellerio algoritmą pristatė Davidas Elleris.

Šis algoritmas pasižymi efektyviu eilutė po eilutės labirintų generavimo metodu, todėl idealiai tinka begaliniams labirintams arba realiuoju laiku generuojamiems labirintams. Jis dažnai cituojamas procedūrinio turinio generavimo ir labirintų generavimo literatūroje, tačiau man nepavyko rasti pirminių šaltinių, kuriuose būtų išsamiai aprašytas jo originalus publikavimas.

Kaip Ellerio algoritmas veikia labirinto generavimui

Ellerio algoritmas apdoroja po vieną eilutę, išlaikydamas ir keisdamas sujungtų langelių rinkinius. Jis užtikrina sujungiamumą, vengdamas ciklų, ir efektyviai plečia labirintą žemyn.

Teoriškai tai galima naudoti begaliniams labirintams generuoti, tačiau norint užtikrinti, kad sugeneruotas labirintas iš tikrųjų būtų išsprendžiamas, tam tikru momentu reikia pereiti prie „paskutinės eilutės“ logikos, kad labirintas būtų baigtas.

1 veiksmas: inicijuokite pirmąją eilutę

  • Kiekvienam eilutės langeliui priskirkite unikalų rinkinio ID.

2 veiksmas: horizontaliai sujunkite kelias gretimas ląsteles

  • Atsitiktinai sujungti gretimus langelius, nustatant jiems tą patį rinkinio ID. Tai užtikrina horizontalių ištraukų buvimą.

3 veiksmas: sukurkite vertikalius ryšius su kita eilute

  • Kiekvienam eilutėje rodomam rinkiniui bent viena ląstelė turi būti prijungta žemyn (kad būtų užtikrintas ryšys).
  • Atsitiktinai pasirinkite vieną ar daugiau langelių iš kiekvieno rinkinio, kad sujungtumėte juos su kita eilute.

4 veiksmas: pereikite prie kitos eilutės

  • Perkelkite vertikalius ryšius, priskirdami tą patį rinkinio ID atitinkamoms langeliams žemiau.
  • Priskirkite naujus rinkinio ID visoms nepriskirtoms ląstelėms.

5 veiksmas: kartokite 2–4 veiksmus, kol bus pasiekta paskutinė eilutė

  • Tęskite apdorojimą eilutė po eilutės.

6 veiksmas: apdorokite paskutinę eilutę

  • Sujungdami visus likusius atskirus rinkinius, užtikrinkite, kad visi paskutinės eilutės langeliai priklausytų tam pačiam rinkiniui.

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.