Miklix

Generatorul de labirint al algoritmului lui Kruskal

Publicat: 16 februarie 2025 la 18:00:08 UTC
Ultima actualizare: 12 ianuarie 2026 la 08:59:21 UTC

Generator de labirinturi care folosește algoritmul lui Kruskal pentru a crea un labirint perfect. Acest algoritm tinde să creeze labirinturi cu coridoare de lungime medie și multe fundături, precum și o soluție destul de dreaptă.

Această pagină a fost tradusă automat din limba engleză pentru a o face accesibilă cât mai multor persoane. Din păcate, traducerea automată nu este încă o tehnologie perfecționată, astfel încât pot apărea erori. Dacă preferați, puteți vizualiza versiunea originală în limba engleză aici:

Kruskal's Algorithm Maze Generator

Algoritmul lui Kruskal este un algoritm de tip arbore minim de acoperire care poate fi adaptat pentru generarea de labirinturi. Este deosebit de eficient pentru crearea de labirinturi perfecte. O alternativă la algoritmul lui Kruskal este algoritmul lui Prim, care este, de asemenea, un algoritm de tip arbore minim de acoperire, dar, deoarece generează labirinturi identice, iar algoritmul lui Kruskal rulează mai rapid, nu m-am obosit să implementez algoritmul lui Prim.

Un labirint perfect este un labirint în care există exact o singură cale de la orice punct din labirint la orice alt punct. Aceasta înseamnă că nu puteți ajunge să vă învârtiți în cerc, dar veți întâlni adesea fundături, forțându-vă să vă întoarceți.

Hărțile labirintului generate aici includ o versiune implicită fără poziții de început și de sfârșit, astfel încât să le puteți decide singuri: va exista o soluție din orice punct al labirintului către orice alt punct. Dacă doriți să vă inspirați, puteți activa o poziție de început și de sfârșit sugerată - și chiar să vedeți soluția între cele două.


Generați un labirint nou








Despre algoritmul lui Kruskal

Algoritmul lui Kruskal a fost creat de Joseph Bernard Kruskal, Jr., un matematician, statistician și informatician american. El a descris algoritmul pentru prima dată în 1956 în lucrarea sa „Despre subarborele cu cea mai scurtă întindere a unui graf și problema comisarului ambulant”.

Algoritmul este conceput pentru a găsi arborele de acoperire minimă (MST) al unui graf, asigurându-se că toate vârfurile sunt conectate cu ponderea totală minimă posibilă a muchiilor, evitând în același timp ciclurile.

Cum funcționează algoritmul lui Kruskal pentru generarea labirintului

Pasul 1: Inițializare

  • Tratați fiecare celulă din labirint ca un set separat (o componentă unică).
  • Enumerați toți pereții dintre celulele adiacente ca posibile muchii.

Pasul 2: Sortează pereții

  • Amestecați sau ordonați aleatoriu pereții. Dacă implementați algoritmul Kruskal, sortați pereții în ordine aleatorie (deoarece generarea labirinturilor nu necesită ponderi).

Pasul 3: Prelucrarea pereților

  • Iterează prin pereții amestecați.
  • Dacă cele două celule separate de perete aparțin unor mulțimi diferite (adică nu sunt încă conectate în labirint), îndepărtați peretele și uniți mulțimile.
  • Dacă sunt deja în același set, săriți peste perete (pentru a evita ciclurile).

Pasul 4: Continuați până la finalizare

  • Repetați acest proces până când toate celulele sunt conectate, formând un singur arbore de acoperire.
  • La final, fiecare celulă este conectată la celelalte fără bucle sau secțiuni izolate.

Întrucât algoritmul lui Kruskal se bazează pe fuzionarea seturilor, acesta poate fi optimizat utilizând algoritmul Union-Find, care oferă o modalitate eficientă de a urmări celulele conectate în timpul generării labirintului. Puteți vedea implementarea mea PHP a algoritmului Union-Find aici: Link

Lectură suplimentară

Dacă ți-a plăcut această postare, s-ar putea să-ți placă și aceste sugestii:


Distribuie pe BlueskyDistribuie pe FacebookDistribuie pe LinkedInDistribuie pe TumblrDistribuie pe XDistribuie pe LinkedInPin pe Pinterest

Mikkel Christensen

Despre autor

Mikkel Christensen
Mikkel este creatorul și proprietarul miklix.com. El are peste 20 de ani de experiență ca programator de calculatoare/dezvoltator software profesionist și este în prezent angajat cu normă întreagă pentru o mare corporație europeană de IT. Atunci când nu scrie pe blog, își petrece timpul liber cu o gamă largă de interese, hobby-uri și activități, care se pot reflecta într-o anumită măsură în varietatea de subiecte abordate pe acest site.