Miklix

Generator labirinta Ellerovog algoritma

Objavljeno: 16. veljače 2025. u 20:37:31 UTC

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

Ova je stranica strojno prevedena s engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, strojno prevođenje još nije usavršena tehnologija pa se mogu pojaviti pogreške. Ako želite, izvornu englesku verziju možete pogledati ovdje:

Eller's Algorithm Maze Generator

Ellerov algoritam je algoritam za generiranje labirinta koji učinkovito proizvodi savršene labirinte (labirinte bez petlji i s jednim putem između bilo koje dvije točke) korištenjem pristupa red po red. Proizvodi labirinte slične Kruskalovom algoritmu, ali to čini generiranjem samo jednog reda u isto vrijeme, bez potrebe za pohranjivanjem cijelog labirinta u memoriju. To ga čini korisnim za generiranje vrlo velikih labirinta na vrlo ograničenim sustavima i za proceduralno generiranje sadržaja.

Savršen labirint je labirint u kojem postoji točno jedan put od bilo koje točke u labirintu do bilo koje druge točke. To znači da se ne možete vrtjeti u krug, ali ćete često naići na slijepe ulice, zbog čega ćete se morati okrenuti i vratiti.

Ovdje generirane karte labirinta 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 labirintu do bilo koje druge točke. Ako želite inspiraciju, možete omogućiti predloženu početnu i ciljnu poziciju - pa čak i vidjeti rješenje između ta dva.


Generirajte novi labirint








O Ellerovom algoritmu

Ellerov algoritam predstavio je David Eller.

Algoritam je poznat po svom učinkovitom pristupu red po red generiranju labirinta, što ga čini idealnim za beskonačne labirinte ili labirinte generirane u stvarnom vremenu. Obično se navodi u proceduralnom stvaranju sadržaja i literaturi o stvaranju labirinta, ali nisam uspio pronaći primarne izvore koji opisuju njegovu izvornu publikaciju.

Kako Ellerov algoritam radi za stvaranje labirinta

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

Teoretski se može koristiti za generiranje beskonačnih labirinta, no kako bi se osiguralo da je generirani labirint stvarno rješiv, potrebno je u nekom trenutku prijeći na logiku "konačnog reda" kako bi se labirint završio.

Korak 1: Inicijalizirajte prvi red

  • Svakoj ćeliji u retku dodijelite jedinstveni ID skupa.

Korak 2: Spojite neke susjedne ćelije vodoravno

  • Nasumično spojite susjedne ćelije tako da im postavite isti ID skupa. To osigurava postojanje horizontalnih prolaza.

Korak 3: Stvorite okomite veze sa sljedećim redom

  • Za svaki skup koji se pojavljuje u retku, najmanje jedna ćelija mora se povezati prema dolje (kako bi se osigurala povezanost).
  • Nasumično odaberite jednu ili više ćelija iz svakog skupa za povezivanje sa sljedećim redom.

Korak 4: Prijeđite na sljedeći red

  • Prenesite vertikalne veze dodjeljujući isti ID skupa odgovarajućim ćelijama u nastavku.
  • Dodijelite nove skupne ID-ove svim nedodijeljenim ćelijama.

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

  • Nastavite s obradom red po red.

Korak 6: Obradite posljednji red

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

Podijeli na BlueskyPodijelite na FacebookuPodijelite na LinkedInuPodijelite na TumblrPodijeli na XPodijelite na LinkedInuPrikvači na Pinterest

Mikkel Bang Christensen

O autoru

Mikkel Bang Christensen
Mikkel je kreator i vlasnik miklix.com. Ima više od 20 godina iskustva kao profesionalni računalni programer/razvijač softvera i trenutno je zaposlen na puno radno vrijeme za veliku europsku IT korporaciju. Kada ne piše blog, svoje slobodno vrijeme provodi na široku lepezu interesa, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme obrađene na ovoj web stranici.