Miklix

Wilsono algoritmo labirinto generatorius

Paskelbta: 2025 m. vasario 16 d. 19:32:22 UTC
Paskutinį kartą atnaujinta: 2026 m. sausio 12 d. 09:03:19 UTC

Labirintų generatorius, naudojantis Wilsono algoritmą tobulam labirintui sukurti. Šis algoritmas generuoja visus galimus tam tikro dydžio labirintus su ta pačia tikimybe, todėl teoriškai jis gali generuoti įvairių išdėstymų labirintus, tačiau kadangi yra daugiau galimų labirintų su trumpesniais koridoriais nei ilgesniais, juos matysite dažniau.

Šis puslapis buvo mašininiu būdu išverstas iš anglų kalbos, kad juo galėtų naudotis kuo daugiau žmonių. Deja, mašininis vertimas dar nėra tobula technologija, todėl gali pasitaikyti klaidų. Jei pageidaujate, originalią versiją anglų kalba galite peržiūrėti čia:

Wilson's Algorithm Maze Generator

Wilsono algoritmas yra ciklų ištrinimu pagrįstas atsitiktinio klaidžiojimo metodas, kuris generuoja vienodus besidriekiančius medžius labirintų kūrimui. Tai reiškia, kad visi galimi tam tikro dydžio labirintai turi vienodą tikimybę būti sugeneruoti, todėl tai yra nešališkas labirintų generavimo metodas. Wilsono algoritmą galima laikyti patobulinta Aldouso-Broderio algoritmo versija, nes jis generuoja labirintus su identiškomis charakteristikomis, bet veikia daug greičiau, todėl čia nesivarginau įgyvendinti Aldouso-Broderio algoritmo.

Tobulasis labirintas - tai labirintas, kuriame iš bet kurio labirinto taško į bet kurį kitą tašką veda lygiai vienas kelias. Tai reiškia, kad negalite eiti ratu, bet dažnai susidursite su aklavietėmis, todėl būsite priversti apsisukti ir grįžti atgal.

Čia sukurtuose labirinto žemėlapiuose yra numatytoji versija be pradžios ir pabaigos pozicijų, todėl jas galite nustatyti patys: iš bet kurio labirinto taško į bet kurį kitą tašką bus rastas sprendimas. Jei norite įkvėpimo, galite įjungti siūlomą pradžios ir pabaigos padėtį ir net pamatyti sprendimą tarp šių dviejų padėčių.


Sukurti naują labirintą








Apie Wilsono algoritmą

Wilsono algoritmą vienodiems besidriekiantiems medžiams generuoti naudojant kilpomis ištrintą atsitiktinę sieną sukūrė Davidas Bruce'as Wilsonas.

Wilsonas šį algoritmą pirmą kartą pristatė 1996 m., tyrinėdamas atsitiktinius besidriekiančius medžius ir Markovo grandines tikimybių teorijoje. Nors jo darbai daugiausia buvo skirti matematikai ir statistinei fizikai, vėliau algoritmas buvo plačiai pritaikytas labirintų generavimui dėl jo gebėjimo sukurti idealiai vienodus labirintus.

Kaip Wilsono algoritmas veikia labirinto generavimui

Wilsono algoritmas užtikrina, kad galutinis labirintas būtų visiškai sujungtas be jokių ciklų, iteratyviai iškirsdamas kelius iš neaplankytų langelių, naudodamas atsitiktinius ėjimus.

1 veiksmas: inicijavimas

  • Pradėkite nuo tinklelio, užpildyto sienomis.
  • Apibrėžkite visų galimų pasažo ląstelių sąrašą.

Veiksmas: pasirinkite atsitiktinę pradinę ląstelę

  • Pasirinkite bet kurią atsitiktinę ląstelę ir pažymėkite ją kaip aplankytą. Tai bus labirinto pradžios taškas generavimo metu.

3 veiksmas: atsitiktinis pasivaikščiojimas su ciklo trynimu

  • Pasirinkite neaplankytą ląstelę ir pradėkite atsitiktinį ėjimą (judėjimą atsitiktinėmis kryptimis).
  • Jei pasivaikščiojimas pasiekia jau aplankytą langelį, ištrinkite visas kilpas kelyje.
  • Kai pasivaikščiojimas susijungs su aplankyta sritimi, pažymėkite visas kelio langelius kaip aplankytas.

4 veiksmas: kartokite, kol aplankytos visos ląstelės:

  • Toliau pasirinkite neaplankytas ląsteles ir atlikite atsitiktinius ėjimus, kol kiekviena ląstelė taps labirinto dalimi.

Papildoma literatūra

Jei jums patiko šis įrašas, jums taip pat gali patikti šie pasiūlymai:


Pasidalinkite „Bluesky“.Dalintis FacebookBendrinkite „LinkedIn“.Bendrinkite „Tumblr“.Dalintis XBendrinkite „LinkedIn“.Prisegti prie Pinterest

Mikkel Christensen

Apie autorių

Mikkel Christensen
Mikkelis yra miklix.com kūrėjas ir savininkas. Jis turi daugiau nei 20 metų profesionalaus kompiuterių programuotojo ir programinės įrangos kūrėjo patirtį ir šiuo metu visą darbo dieną dirba didelėje Europos IT korporacijoje. Kai jis nerašo tinklaraščio, laisvalaikį skiria įvairiems interesams, pomėgiams ir užsiėmimams, kurie tam tikra prasme gali atsispindėti šioje svetainėje nagrinėjamų temų įvairovėje.