Miklix

Wilsons algoritme labyrintgenerator

Publisert: 16. februar 2025 kl. 19:32:51 UTC

Labyrintgenerator som bruker Wilsons algoritme for å lage en perfekt labyrint. Denne algoritmen genererer alle mulige labyrinter av en gitt størrelse med samme sannsynlighet, så den kan i teorien generere labyrinter med mange blandede oppsett, men ettersom det er flere mulige labyrinter med kortere korridorer enn lengre, vil du oftere se dem.

Denne siden er maskinoversatt fra engelsk for å gjøre den tilgjengelig for så mange som mulig. Dessverre er maskinoversettelse ennå ikke en fullkommen teknologi, så det kan forekomme feil. Hvis du foretrekker det, kan du se den engelske originalversjonen her:

Wilson's Algorithm Maze Generator

Wilsons algoritme er en sløyfeslettet tilfeldig gangmetode som genererer ensartede spennede trær for labyrintoppretting. Dette betyr at alle mulige labyrinter av en gitt størrelse er like sannsynlig å bli generert, noe som gjør det til en objektiv labyrintgenereringsteknikk. Wilsons algoritme kan betraktes som en forbedret versjon av Aldous-Broder-algoritmen, siden den genererer labyrinter med identiske egenskaper, men den kjører mye raskere, så jeg har ikke brydd meg med å implementere Aldous-Broder-algoritmen her.

En perfekt labyrint er en labyrint der det finnes nøyaktig én vei fra et hvilket som helst punkt i labyrinten til et hvilket som helst annet punkt. Det betyr at du ikke kan ende opp med å gå i sirkler, men at du ofte vil støte på blindveier som tvinger deg til å snu og gå tilbake.

Labyrintkartene som genereres her, inneholder en standardversjon uten start- og målposisjoner, slik at du selv kan bestemme disse: Det vil finnes en løsning fra et hvilket som helst punkt i labyrinten til et hvilket som helst annet punkt. Hvis du vil ha inspirasjon, kan du aktivere en foreslått start- og målposisjon - og til og med se løsningen mellom de to.


Generer ny labyrint








Om Wilsons algoritme

Wilsons algoritme for å generere ensartede spennende trær ved å bruke en sløyfeslettet tilfeldig vegg ble laget av David Bruce Wilson.

Wilson introduserte opprinnelig denne algoritmen i 1996 mens han undersøkte tilfeldig spennende trær og Markov-kjeder i sannsynlighetsteori. Selv om arbeidet hans først og fremst var innen matematikk og statistisk fysikk, har algoritmen siden blitt bredt tatt i bruk for labyrintgenerering på grunn av dens evne til å produsere perfekt ensartede labyrinter.

Hvordan Wilsons algoritme fungerer for labyrintgenerering

Wilsons algoritme sikrer at den endelige labyrinten er fullstendig koblet sammen uten løkker ved iterativt å skjære ut stier fra ubesøkte celler ved hjelp av tilfeldige turer.

Trinn 1: Initialiser

  • Start med et rutenett fylt med vegger.
  • Definer en liste over alle mulige passasjeceller.

Trinn 2: Velg en tilfeldig startcelle

  • Velg en tilfeldig celle og merk den som besøkt. Dette fungerer som utgangspunktet for labyrinten under generasjonen.

Trinn 3: Tilfeldig gange med sløyfesletting

  • Velg en ubesøkt celle og begynn en tilfeldig spasertur (beveg deg i tilfeldige retninger).
  • Hvis turen når en allerede besøkt celle, slett eventuelle løkker i banen.
  • Når turen kobles til den besøkte regionen, merker du alle cellene i stien som besøkt.

Trinn 4: Gjenta til alle celler er besøkt :

  • Fortsett å velge ubesøkte celler og utfør tilfeldige turer til hver celle er en del av labyrinten.
Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFest på Pinterest

Mikkel Bang Christensen

Om forfatteren

Mikkel Bang Christensen
Mikkel er skaperen og eieren av miklix.com. Han har over 20 års erfaring som profesjonell dataprogrammerer/programvareutvikler og er for tiden ansatt på fulltid i et stort europeisk IT-selskap. Når han ikke blogger, bruker han fritiden sin på en lang rekke interesser, hobbyer og aktiviteter, noe som til en viss grad kan gjenspeiles i de mange ulike temaene som dekkes på dette nettstedet.