Miklix

Wilson's algoritme doolhofgenerator

Gepubliceerd: 16 februari 2025 om 19:33:09 UTC
Laatst bijgewerkt: 12 januari 2026 om 09:03:21 UTC

Doolhofgenerator die gebruikmaakt van Wilsons algoritme om een perfect doolhof te creëren. Dit algoritme genereert alle mogelijke doolhoven van een bepaalde grootte met dezelfde waarschijnlijkheid, waardoor het in theorie doolhoven met veel verschillende lay-outs kan genereren. Omdat er echter meer mogelijke doolhoven met kortere gangen zijn dan met langere, zul je die vaker tegenkomen.

Deze pagina is machinaal uit het Engels vertaald om hem voor zoveel mogelijk mensen toegankelijk te maken. Helaas is machinevertaling nog geen geperfectioneerde technologie, dus er kunnen fouten optreden. Als je dat liever hebt, kun je hier de originele Engelse versie bekijken:

Wilson's Algorithm Maze Generator

Het algoritme van Wilson is een lus-verwijderde random walk-methode die uniforme opspannende bomen genereert voor het creëren van doolhoven. Dit betekent dat alle mogelijke doolhoven van een bepaalde grootte een gelijke kans hebben om gegenereerd te worden, waardoor het een onbevooroordeelde techniek voor het genereren van doolhoven is. Het algoritme van Wilson kan worden beschouwd als een verbeterde versie van het Aldous-Broder-algoritme, omdat het doolhoven genereert met identieke kenmerken, maar het werkt veel sneller. Daarom heb ik het Aldous-Broder-algoritme hier niet geïmplementeerd.

Een perfect doolhof is een doolhof waarin er precies één pad is van elk punt in het doolhof naar elk ander punt. Dat betekent dat je geen rondjes kunt lopen, maar dat je vaak op doodlopende paden stuit, waardoor je gedwongen wordt om te keren en terug te gaan.

De doolhofkaarten die hier worden gegenereerd bevatten een standaardversie zonder start- en eindposities, zodat je die zelf kunt bepalen: er is een oplossing van elk punt in het doolhof naar elk ander punt. Als je inspiratie wilt, kun je een voorgestelde start- en eindpositie inschakelen - en zelfs de oplossing tussen die twee bekijken.


Nieuw doolhof genereren








Over Wilsons algoritme

Het algoritme van Wilson voor het genereren van uniforme opspannende bomen met behulp van een lusverwijderde willekeurige muur is ontwikkeld door David Bruce Wilson.

Wilson introduceerde dit algoritme oorspronkelijk in 1996 tijdens zijn onderzoek naar willekeurige opspannende bomen en Markovketens in de kansrekening. Hoewel zijn werk zich voornamelijk richtte op wiskunde en statistische fysica, is het algoritme sindsdien op grote schaal toegepast voor het genereren van doolhoven vanwege het vermogen om perfect uniforme doolhoven te produceren.

Hoe het algoritme van Wilson werkt voor het genereren van doolhoven.

Het algoritme van Wilson zorgt ervoor dat het uiteindelijke doolhof volledig verbonden is zonder lussen door iteratief paden te creëren vanuit nog niet bezochte cellen met behulp van willekeurige wandelingen.

Stap 1: Initialiseren

  • Begin met een raster gevuld met muren.
  • Definieer een lijst van alle mogelijke doorgangscellen.

Stap 2: Kies een willekeurige startcel

  • Kies een willekeurige cel en markeer deze als bezocht. Dit dient als startpunt van het doolhof tijdens het genereren.

Stap 3: Willekeurige wandeling met lusverwijdering

  • Kies een nog niet bezochte cel en begin een willekeurige wandeling (bewegen in willekeurige richtingen).
  • Als de route een reeds bezochte cel bereikt, verwijder dan alle lussen in het pad.
  • Zodra de wandeling aansluit op het bezochte gebied, markeer dan alle cellen op het pad als bezocht.

Stap 4: Herhaal dit totdat alle cellen bezocht zijn:

  • Ga door met het selecteren van nog niet bezochte cellen en het uitvoeren van willekeurige wandelingen totdat elke cel deel uitmaakt van het doolhof.

Verder lezen

Als je dit bericht leuk vond, vind je deze suggesties misschien ook interessant:


Delen op BlueskyDelen op FacebookDelen op LinkedInDelen op TumblrDelen op XDelen op LinkedInPin op Pinterest

Mikkel Christensen

Over de auteur

Mikkel Christensen
Mikkel is de bedenker en eigenaar van miklix.com. Hij heeft meer dan 20 jaar ervaring als professioneel computerprogrammeur/softwareontwikkelaar en werkt momenteel fulltime voor een groot Europees IT-bedrijf. Als hij niet blogt, besteedt hij zijn vrije tijd aan een breed scala aan interesses, hobby's en activiteiten, die tot op zekere hoogte weerspiegeld kunnen worden in de verscheidenheid aan onderwerpen op deze website.