Miklix

Elleri algoritmi labürindi generaator

Avaldatud: 16. veebruar 2025, kell 19:58:32 UTC
Viimati uuendatud: 12. jaanuar 2026, kell 09:04:06 UTC

Labürindi generaator, mis kasutab Elleri algoritmi täiusliku labürindi loomiseks. See algoritm on huvitav, kuna see nõuab ainult praeguse rea (mitte kogu labürindi) hoidmist mälus, seega saab seda kasutada väga-väga suurte labürintide loomiseks isegi väga piiratud süsteemides.

See lehekülg on inglise keelest masintõlgitud, et muuta see võimalikult paljudele inimestele kättesaadavaks. Kahjuks ei ole masintõlge veel täiuslik tehnoloogia, mistõttu võivad esineda vead. Kui soovite, võite vaadata ingliskeelset originaalversiooni siin:

Eller's Algorithm Maze Generator

Elleri algoritm on labürindi genereerimise algoritm, mis loob rida-realt lähenedes tõhusalt täiuslikke labürinte (labürinte ilma silmusteta ja ühe teega mis tahes kahe punkti vahel). See loob labürinte, mis on sarnased Kruskali algoritmiga, kuid teeb seda genereerides korraga ainult ühe rea, ilma et oleks vaja kogu labürinti mällu salvestada. See teeb selle kasulikuks väga suurte labürintide genereerimiseks väga piiratud süsteemides ja protseduurilise sisu genereerimiseks.

Täiuslik labürint on labürint, kus on täpselt üks tee labürindi mis tahes punktist mis tahes teise punkti. See tähendab, et te ei saa sattuda ringiratastesse, kuid sageli satute ummikteedesse, mis sunnib teid ümber pöörama ja tagasi minema.

Siin genereeritud labürindi kaardid sisaldavad vaikimisi versiooni ilma algus- ja lõpp-punktideta, nii et saate need ise otsustada: labürindi mis tahes punktist mis tahes teise punkti on olemas lahendus. Kui soovite inspiratsiooni, saate lubada soovitatud algus- ja lõpupositsiooni - ja isegi näha lahendust nende kahe vahel.


Uue labürindi loomine








Elleri algoritmi kohta

Elleri algoritmi tutvustas David Eller.

Algoritm on tähelepanuväärne oma tõhusa rida-realt lähenemise poolest labürindi genereerimisel, mis teeb sellest ideaalse lahenduse lõpmatute või reaalajas genereeritud labürintide jaoks. Seda tsiteeritakse sageli protseduurilise sisu genereerimise ja labürindi genereerimise kirjanduses, kuid ma ei ole suutnud leida algseid avaldamist kirjeldavaid allikaid.

Kuidas Elleri algoritm labürindi genereerimiseks töötab

Elleri algoritm töötleb korraga ühte rida, säilitades ja muutes ühendatud lahtrite komplekte. See tagab ühenduvuse, vältides samal ajal tsükleid, ning pikendab labürinti tõhusalt allapoole.

Teoreetiliselt saab seda kasutada lõpmatute labürintide genereerimiseks, kuid selleks, et loodud labürint oleks tegelikult lahendatav, on vaja mingil hetkel lülituda "viimase rea" loogikale, et labürint lõpetada.

1. samm: esimese rea initsialiseerimine

  • Määrake igale rea lahtrile unikaalne komplekti ID.

2. samm: ühendage mõned külgnevad lahtrid horisontaalselt

  • Ühenda külgnevad lahtrid juhuslikult, määrates neile sama komplekti ID. See tagab horisontaalsete lõikude olemasolu.

3. samm: looge vertikaalsed ühendused järgmise reaga

  • Iga reas kuvatava komplekti kohta peab vähemalt üks lahter olema allapoole ühendatud (ühenduvuse tagamiseks).
  • Vali igast komplektist juhuslikult üks või mitu lahtrit, et need järgmise reaga ühendada.

4. samm: liikuge järgmisele reale

  • Kandke vertikaalsed ühendused edasi, määrates vastavatele allpool olevatele lahtritele sama komplekti ID.
  • Määrake määramata lahtritele uued komplekti ID-d.

5. samm: korrake samme 2–4, kuni jõutakse viimase reani

  • Jätka töötlemist rida-realt.

6. samm: töötle viimane rida

  • Veenduge, et kõik viimase rea lahtrid kuuluvad samasse komplekti, ühendades kõik ülejäänud eraldi komplektid.

Lisalugemist

Kui see postitus teile meeldis, võivad teile meeldida ka need soovitused:


Jagage Bluesky'sJaga FacebookisJagage LinkedInisJaga TumblrisJaga X-isJagage LinkedInisKinnitage Pinterestis

Mikkel Christensen

Autorist

Mikkel Christensen
Mikkel on miklix.com looja ja omanik. Tal on üle 20 aasta kogemust professionaalse programmeerija/tarkvaraarendajana ning praegu töötab ta täiskohaga suures Euroopa IT-ettevõttes. Kui ta ei kirjuta blogi, veedab ta oma vaba aega mitmesuguste huvide, hobide ja tegevustega, mis võib mingil määral kajastuda sellel veebisaidil käsitletavate teemade mitmekesisuses.