Miklix

Kruskalův Algorithm Maze Generator

Vydáno: 16. února 2025 v 17:56:30 UTC
Poslední aktualizace: 12. ledna 2026 v 8:59:10 UTC

Generátor bludišť využívající Kruskalův algoritmus k vytvoření dokonalého bludiště. Tento algoritmus má tendenci vytvářet bludiště se středně dlouhými chodbami a mnoha slepými uličkami, a také s poměrně přímým řešením.

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:

Kruskal's Algorithm Maze Generator

Kruskalův algoritmus je algoritmus minimální kostry, který lze upravit pro generování bludišť. Je obzvláště efektivní pro vytváření dokonalých bludišť. Alternativou ke Kruskalovu algoritmu je Primův algoritmus, který je také algoritmem minimální kostry, ale protože generují identická bludiště a Kruskalův algoritmus běží rychleji, neobtěžoval jsem se implementovat Primův algoritmus.

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 Kruskalově algoritmu

Kruskalův algoritmus vytvořil Joseph Bernard Kruskal Jr., americký matematik, statistik a informatik. Poprvé jej popsal v roce 1956 ve svém článku „O nejkratším podstromu grafu a problému obchodního cestujícího“.

Algoritmus je navržen tak, aby našel minimální kostru (MST) grafu a zajistil, že všechny vrcholy jsou propojeny s minimální možnou celkovou vahou hran a zároveň se vyhnul cyklům.

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

Krok 1: Inicializace

  • S každou buňkou v bludišti zacházejte jako se samostatnou sadou (jedinečnou komponentou).
  • Vypište všechny stěny mezi sousedními buňkami jako potenciální hrany.

Krok 2: Seřazení stěn

  • Promíchejte nebo náhodně uspořádejte stěny. Pokud to implementujete jako skutečný Kruskalův algoritmus, seřaďte stěny v náhodném pořadí (protože generování bludiště nevyžaduje váhy).

Krok 3: Zpracování stěn

  • Projděte si zamíchané zdi.
  • Pokud dvě buňky oddělené zdí patří do různých množin (tj. ještě nejsou v bludišti propojeny), odstraňte zeď a množiny sloučte.
  • Pokud jsou již ve stejné sadě, zeď přeskočte (abyste se vyhnuli cyklům).

Krok 4: Pokračujte až do dokončení

  • Tento postup opakujte, dokud nebudou všechny buňky propojeny a nevytvoří jeden kostrový strom.
  • Nakonec je každá buňka propojena s ostatními bez smyček nebo izolovaných úseků.

Protože Kruskalův algoritmus spoléhá na slučování množin, lze jej optimalizovat pomocí algoritmu Union-Find, který poskytuje efektivní způsob sledování propojených buněk během generování bludiště. Svou implementaci algoritmu Union-Find v PHP si můžete prohlédnout zde: Odkaz

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.