Miklix

Kruskal's algoritme-doolhofgenerator

Gepubliceerd: 16 februari 2025 om 17:59:47 UTC
Laatst bijgewerkt: 12 januari 2026 om 08:59:19 UTC

Doolhofgenerator die gebruikmaakt van het algoritme van Kruskal om een perfect doolhof te creëren. Dit algoritme genereert doorgaans doolhoven met gangen van gemiddelde lengte en veel doodlopende wegen, evenals een redelijk rechte oplossing.

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:

Kruskal's Algorithm Maze Generator

Het algoritme van Kruskal is een algoritme voor het vinden van een minimale opspannende boom dat kan worden aangepast voor het genereren van doolhoven. Het is bijzonder effectief voor het creëren van perfecte doolhoven. Een alternatief voor het algoritme van Kruskal is het algoritme van Prim, dat ook een algoritme voor het vinden van een minimale opspannende boom is, maar aangezien ze identieke doolhoven genereren en het algoritme van Kruskal sneller is, heb ik Prim's algoritme 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 het algoritme van Kruskal

Het algoritme van Kruskal werd ontwikkeld door Joseph Bernard Kruskal jr., een Amerikaanse wiskundige, statisticus en computerwetenschapper. Hij beschreef het algoritme voor het eerst in 1956 in zijn artikel "On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem".

Het algoritme is ontworpen om de minimaal opspannende boom (MST) van een graaf te vinden, waarbij ervoor wordt gezorgd dat alle knooppunten met elkaar verbonden zijn met het minimaal mogelijke totale randgewicht, terwijl cycli worden vermeden.

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

Stap 1: Initialiseren

  • Beschouw elke cel in het doolhof als een aparte set (een uniek onderdeel).
  • Geef alle wanden tussen aangrenzende cellen weer als mogelijke randen.

Stap 2: Muren sorteren

  • Schud de muren door elkaar of rangschik ze willekeurig. Als je het implementeert als een echt Kruskal-algoritme, sorteer de muren dan in een willekeurige volgorde (aangezien het genereren van een doolhof geen gewichten vereist).

Stap 3: Proceswanden

  • Doorloop de herschikte muren.
  • Als de twee cellen die door de muur gescheiden zijn tot verschillende verzamelingen behoren (d.w.z. ze zijn nog niet met elkaar verbonden in het doolhof), verwijder dan de muur en voeg de verzamelingen samen.
  • Als ze al in dezelfde set zitten, sla dan de muur over (om herhalingen te voorkomen).

Stap 4: Ga door tot het voltooid is.

  • Herhaal dit proces totdat alle cellen met elkaar verbonden zijn en een enkele opspannende boom vormen.
  • Uiteindelijk is elke cel met de andere verbonden zonder lussen of geïsoleerde gedeelten.

Omdat het algoritme van Kruskal gebaseerd is op het samenvoegen van verzamelingen, kan het worden geoptimaliseerd met behulp van het Union-Find-algoritme. Dit algoritme biedt een efficiënte manier om verbonden cellen te volgen tijdens het genereren van een doolhof. Mijn PHP-implementatie van het Union-Find-algoritme is hier te vinden: Link

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.