Miklix

Ellerův algoritmus bludiště generátor

Vydáno: 16. února 2025 v 19:55:00 UTC
Poslední aktualizace: 12. ledna 2026 v 9:04:02 UTC

Generátor bludišť využívající Ellerův algoritmus k vytvoření dokonalého bludiště. Tento algoritmus je zajímavý, protože vyžaduje uchování pouze aktuálního řádku (ne celého bludiště) v paměti, takže jej lze použít k vytváření velmi, velmi velkých bludišť i na velmi omezených systémech.

Tato stránka byla strojově přeložena z angličtiny, aby byla přístupná co největšímu počtu lidí. Strojový překlad bohužel ještě není dokonalá technologie, takže může dojít k chybám. Pokud si přejete, můžete si prohlédnout původní anglickou verzi zde:

Eller's Algorithm Maze Generator

Ellerův algoritmus je algoritmus pro generování bludišť, který efektivně vytváří dokonalá bludiště (bludiště bez smyček a s jedinou cestou mezi libovolnými dvěma body) pomocí přístupu řádek po řádku. Vytváří bludiště podobně jako Kruskalův algoritmus, ale generuje pouze jeden řádek po druhém, bez nutnosti ukládat celé bludiště do paměti. Díky tomu je užitečný pro generování velmi velkých bludišť na velmi omezených systémech a pro generování procedurálního obsahu.

Dokonalé bludiště je bludiště, ve kterém existuje přesně jedna cesta z kteréhokoli bodu bludiště do kteréhokoli jiného bodu. To znamená, že nemůžete skončit v kruhu, ale často narazíte na slepé uličky, které vás donutí se otočit a vrátit se zpět.

Zde vygenerované mapy bludiště obsahují výchozí verzi bez počátečních a cílových pozic, takže si je můžete určit sami: z jakéhokoli bodu v bludišti do jakéhokoli jiného bodu existuje řešení. Pokud se chcete inspirovat, můžete zapnout navrhovanou startovní a cílovou pozici - a dokonce si prohlédnout řešení mezi nimi.


Generování nového bludiště








O Ellerově algoritmu

Ellerův algoritmus představil David Eller.

Tento algoritmus je pozoruhodný svým efektivním přístupem k generování bludišť řádek po řádku, což ho činí ideálním pro nekonečná bludiště nebo bludiště generovaná v reálném čase. Často se cituje v literatuře o procedurálním generování obsahu a generování bludišť, ale nepodařilo se mi najít primární zdroje s podrobnostmi o jeho původní publikaci.

Jak Ellerův algoritmus funguje pro generování bludiště

Ellerův algoritmus zpracovává jeden řádek po druhém, udržuje a upravuje sady propojených buněk. Zajišťuje propojení, vyhýbá se smyčkám a efektivně rozšiřuje bludiště směrem dolů.

Teoreticky se dá použít ke generování nekonečných bludišť, nicméně aby se zajistilo, že vygenerované bludiště je skutečně řešitelné, je nutné v určitém okamžiku přepnout na logiku „posledního řádku“, aby se bludiště dokončilo.

Krok 1: Inicializace prvního řádku

  • Přiřaďte každé buňce v řádku jedinečné ID sady.

Krok 2: Spojte několik sousedních buněk vodorovně

  • Náhodně sloučit sousední buňky nastavením stejného ID sady. Tím se zajistí, že budou existovat horizontální průchody.

Krok 3: Vytvořte vertikální spojení s dalším řádkem

  • Pro každou sadu, která se v řádku objeví, musí být alespoň jedna buňka spojena směrem dolů (aby byla zajištěna konektivita).
  • Každé sady náhodně vyberte jednu nebo více buněk, které se propojí s dalším řádkem.

Krok 4: Přejděte na další řádek

  • Vertikální propojení přeneste dál přiřazením stejného ID sady odpovídajícím buňkám níže.
  • Přiřaďte nová ID sad všem nepřiřazeným buňkám.

Krok 5: Opakujte kroky 2–4, dokud nedosáhnete poslední řady

  • Pokračujte ve zpracování řádek po řádku.

Krok 6: Zpracování poslední řady

  • Zajistěte, aby všechny buňky v posledním řádku patřily do stejné sady sloučením všech zbývajících samostatných sad.

Další čtení

Pokud se vám tento příspěvek líbil, mohly by se vám líbit i tyto návrhy:


Sdílet na BlueskySdílejte na FacebookuSdílet na LinkedInSdílet na TumblrSdílet na XSdílet na LinkedInPřipnout na Pinterest

Mikkel Christensen

O autorovi

Mikkel Christensen
Mikkel je tvůrcem a majitelem webu miklix.com. Má více než 20 let zkušeností jako profesionální programátor/vývojář softwaru a v současné době pracuje na plný úvazek pro velkou evropskou IT společnost. Pokud zrovna nepíše blog, věnuje svůj volný čas široké škále zájmů, koníčků a aktivit, což se může do jisté míry odrážet v rozmanitosti témat na tomto webu.