Miklix

Generatorul de labirint al algoritmului lui Wilson

Publicat: 16 februarie 2025 la 19:33:20 UTC

Generator de labirint folosind algoritmul lui Wilson pentru a crea un labirint perfect. Acest algoritm generează toate labirinturile posibile de o dimensiune dată cu aceeași probabilitate, astfel încât, în teorie, poate genera labirinturi cu multe aspecte mixte, dar, deoarece există mai multe labirinturi posibile cu coridoare mai scurte decât mai lungi, le veți vedea mai des.

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:

Wilson's Algorithm Maze Generator

Algoritmul lui Wilson este o metodă de mers aleatoriu șters prin buclă care generează arbori uniformi care se întind pentru crearea labirintului. Aceasta înseamnă că toate labirinturile posibile de o anumită dimensiune au șanse egale de a fi generate, ceea ce face din aceasta o tehnică imparțială de generare a labirintului. Algoritmul lui Wilson poate fi considerat o versiune îmbunătățită a algoritmului Aldous-Broder, deoarece generează labirinturi cu caracteristici identice, dar rulează mult mai repede, așa că nu m-am deranjat să implementez algoritmul Aldous-Broder aici.

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 Wilson

Algoritmul lui Wilson pentru generarea de arbori uniformi care se întinde folosind un perete aleator șters prin buclă a fost creat de David Bruce Wilson.

Wilson a introdus inițial acest algoritm în 1996, în timp ce cerceta arbori de întindere aleatoriu și lanțuri Markov în teoria probabilității. Deși munca sa a fost în primul rând în matematică și fizică statistică, algoritmul a fost adoptat pe scară largă pentru generarea labirintului datorită capacității sale de a produce labirinturi perfect uniforme.

Cum funcționează algoritmul lui Wilson pentru Maze Generation

Algoritmul lui Wilson asigură că labirintul final este complet conectat, fără bucle, sculptând în mod iterativ căi din celulele nevizitate folosind plimbări aleatorii.

Pasul 1: Inițializați

  • Începeți cu o rețea plină cu pereți.
  • Definiți o listă cu toate celulele de trecere posibile.

Pasul 2: Alegeți o celulă de pornire aleatorie

  • Alegeți orice celulă aleatorie și marcați-o ca vizitată. Acesta servește drept punct de plecare al labirintului în timpul generării.

Pasul 3: Mers aleatoriu cu ștergerea buclei

  • Alegeți o celulă nevizitată și începeți o plimbare aleatorie (deplasându-vă în direcții aleatorii).
  • Dacă mersul ajunge la o celulă deja vizitată, ștergeți buclele din cale.
  • Odată ce plimbarea se conectează la regiunea vizitată, marcați toate celulele din cale ca fiind vizitate.

Pasul 4: Repetați până când toate celulele sunt vizitate :

  • Continuați să selectați celule nevizitate și să efectuați plimbări aleatorii până când fiecare celulă face parte din labirint.
Distribuie pe BlueskyDistribuie pe FacebookDistribuie pe LinkedInDistribuie pe TumblrDistribuie pe XDistribuie pe LinkedInPin pe Pinterest

Mikkel Bang Christensen

Despre autor

Mikkel Bang 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.