Miklix

Generator Labirinta Algoritma Eller

Objavljeno: 16. februar 2025. u 20:37:20 UTC

Generator labirinta koristi Ellerov algoritam za stvaranje savršenog labirinta. Ovaj algoritam je zanimljiv jer zahtijeva samo zadržavanje trenutnog reda (ne cijelog labirinta) u memoriji, tako da se može koristiti za kreiranje vrlo, vrlo velikih labirinta čak i na vrlo ograničenim sistemima.

Ova stranica je mašinski prevedena sa engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, mašinsko prevođenje još nije usavršena tehnologija, pa može doći do grešaka. Ako želite, možete pogledati originalnu englesku verziju ovdje:

Eller's Algorithm Maze Generator

Ellerov algoritam je algoritam za generiranje labirinta koji efikasno proizvodi savršene labirinte (labirinte bez petlji i jednom putanjom između bilo koje dvije tačke) koristeći pristup red-po-red. Proizvodi labirinte slične Kruskalovom algoritmu, ali to čini generiranjem samo jednog po jednog reda, bez potrebe za pohranjivanjem cijelog labirinta u memoriju. To ga čini korisnim za generiranje vrlo velikih labirinta na vrlo ograničenim sistemima i za proceduralno generiranje sadržaja.

Savršen labirint je labirint u kojem postoji tačno jedan put od bilo koje tačke u labirintu do bilo koje druge tačke. To znači da ne možete završiti u krugu, ali ćete često nailaziti na slijepe ulice, prisiljavajući vas da se okrenete i vratite.

Mape lavirinta koje se ovdje generiraju uključuju zadanu verziju bez ikakvih početnih i završnih pozicija, tako da ih možete sami odlučiti: postojat će rješenje od bilo koje točke u lavirintu do bilo koje druge točke. Ako želite inspiraciju, možete omogućiti predloženi početni i ciljni položaj - pa čak i vidjeti rješenje između njih.


Stvorite novi labirint








O Ellerovom algoritmu

Ellerov algoritam je predstavio David Eller.

Algoritam je značajan po svom efikasnom pristupu generiranju labirinta, što ga čini idealnim za beskonačne labirinte ili labirinte generirane u realnom vremenu. Obično se citira u proceduralnom stvaranju sadržaja i literaturi o stvaranju labirinta, ali nisam bio u mogućnosti pronaći primarne izvore koji detaljno opisuju njegovo originalno objavljivanje.

Kako Ellerov algoritam radi za stvaranje labirinta

Ellerov algoritam obrađuje jedan po jedan red, održavajući i modificirajući skupove povezanih ćelija. Osigurava povezanost uz izbjegavanje petlji i efikasno proširuje labirint prema dolje.

Teoretski se može koristiti za generiranje beskonačnih labirinta, međutim kako bi se osiguralo da je generirani labirint zapravo rješiv, potrebno je prebaciti se na logiku "posljednjeg reda" u nekom trenutku da bi se labirint završio.

Korak 1: Inicijalizirajte prvi red

  • Dodijelite svakoj ćeliji u redu jedinstveni ID skupa.

Korak 2: Spojite neke susjedne ćelije horizontalno

  • Nasumično spojite susjedne ćelije tako što ćete ih postaviti na isti ID skupa. To osigurava da postoje horizontalni prolazi.

Korak 3: Kreirajte vertikalne veze sa sljedećim redom

  • Za svaki skup koji se pojavi u redu, najmanje jedna ćelija mora se spojiti prema dolje (kako bi se osigurala povezanost).
  • Nasumično odaberite jednu ili više ćelija iz svakog skupa da biste se povezali sa sljedećim redom.

Korak 4: Prelazak na sljedeći red

  • Prenesite vertikalne veze dodjeljivanjem istog ID-a odgovarajućim ćelijama ispod.
  • Dodijelite nove ID skupa svim nedodijeljenim ćelijama.

Korak 5: Ponavljajte korake 2-4 dok se ne dođe do posljednjeg reda

  • Nastavite s obradom red po red.

Korak 6: Obrada posljednjeg reda

  • Osigurajte da sve ćelije u posljednjem redu pripadaju istom skupu spajanjem svih preostalih zasebnih skupova.

Podijelite na BlueskyPodijelite na FacebookuPodijelite na LinkedIn-uPodijelite na Tumblr-uPodijeli na XPodijelite na LinkedIn-uPrikači na Pinterest

Mikkel Bang Christensen

O autoru

Mikkel Bang Christensen
Mikkel je kreator i vlasnik miklix.com. Ima preko 20 godina iskustva kao profesionalni kompjuterski programer/programer softvera i trenutno je zaposlen sa punim radnim vremenom u velikoj evropskoj IT korporaciji. Kada ne piše blog, svoje slobodno vrijeme provodi na širokom spektru interesovanja, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme koje se obrađuju na ovoj web stranici.