Miklix

Kruskals Algorithmus-Labyrinth-Generator

Veröffentlicht: 16. Februar 2025 um 17:56:39 UTC
Zuletzt aktualisiert: 12. Januar 2026 um 08:59:11 UTC

Labyrinthgenerator, der Kruskals Algorithmus verwendet, um ein perfektes Labyrinth zu erstellen. Dieser Algorithmus erzeugt tendenziell Labyrinthe mit mittellangen Gängen und vielen Sackgassen sowie einer relativ geraden Lösung.

Diese Seite wurde maschinell aus dem Englischen übersetzt, um sie so vielen Menschen wie möglich zugänglich zu machen. Leider ist die maschinelle Übersetzung noch keine ausgereifte Technologie, so dass Fehler auftreten können. Wenn Sie es vorziehen, können Sie sich die englische Originalversion hier ansehen:

Kruskal's Algorithm Maze Generator

Kruskals Algorithmus ist ein Algorithmus zur Berechnung minimaler Spannbäume, der sich zur Labyrinthgenerierung anpassen lässt. Er eignet sich besonders gut zur Erstellung perfekter Labyrinthe. Eine Alternative zu Kruskals Algorithmus ist Prims Algorithmus, der ebenfalls ein Algorithmus zur Berechnung minimaler Spannbäume ist. Da beide jedoch identische Labyrinthe erzeugen und Kruskals Algorithmus schneller ist, habe ich auf die Implementierung von Prims Algorithmus verzichtet.

Ein perfektes Labyrinth ist ein Labyrinth, in dem es genau einen Weg von jedem Punkt des Labyrinths zu jedem anderen Punkt gibt. Das bedeutet, dass man sich nicht im Kreis drehen kann, sondern oft auf Sackgassen stößt, die einen zwingen, umzudrehen und zurückzugehen.

Die hier generierten Labyrinthkarten enthalten eine Standardversion ohne Start- und Zielpositionen, so dass Sie diese selbst bestimmen können: Es gibt eine Lösung von jedem Punkt des Labyrinths zu jedem anderen Punkt. Wenn Sie sich inspirieren lassen möchten, können Sie eine vorgeschlagene Start- und Zielposition aktivieren - und sogar die Lösung zwischen den beiden Punkten sehen.


Neues Labyrinth generieren








Über Kruskals Algorithmus

Der Kruskal-Algorithmus wurde von Joseph Bernard Kruskal Jr., einem amerikanischen Mathematiker, Statistiker und Informatiker, entwickelt. Er beschrieb den Algorithmus erstmals 1956 in seiner Arbeit „Über den kürzesten Spannbaum eines Graphen und das Problem des Handlungsreisenden“.

Der Algorithmus ist so konzipiert, dass er den minimalen Spannbaum (MST) eines Graphen findet, der sicherstellt, dass alle Knoten mit dem geringstmöglichen Gesamtgewicht der Kanten verbunden sind und gleichzeitig Zyklen vermeidet.

Wie Kruskals Algorithmus zur Labyrinthgenerierung funktioniert

Schritt 1: Initialisieren

  • Jede Zelle im Labyrinth wird als separate Menge (eine einzigartige Komponente) betrachtet.
  • Alle Wände zwischen benachbarten Zellen sollen als potenzielle Kanten aufgeführt werden.

Schritt 2: Wände sortieren

  • Die Wände werden gemischt oder zufällig angeordnet. Bei der Implementierung als echter Kruskal-Algorithmus werden die Wände in zufälliger Reihenfolge sortiert (da die Labyrinthgenerierung keine Gewichte erfordert).

Schritt 3: Wände bearbeiten

  • Durchlaufe die neu angeordneten Wände.
  • Falls die beiden durch die Wand getrennten Zellen zu unterschiedlichen Mengen gehören (d. h., sie sind im Labyrinth noch nicht miteinander verbunden), wird die Wand entfernt und die Mengen werden zusammengeführt.
  • Wenn sie sich bereits im selben Set befinden, überspringen Sie die Wand (um Zyklen zu vermeiden).

Schritt 4: Fahren Sie fort, bis der Vorgang abgeschlossen ist.

  • Wiederholen Sie diesen Vorgang, bis alle Zellen miteinander verbunden sind und einen einzigen Spannbaum bilden.
  • Am Ende ist jede Zelle ohne Schleifen oder isolierte Abschnitte mit den anderen verbunden.

Da Kruskals Algorithmus auf dem Zusammenführen von Mengen basiert, lässt er sich mithilfe des Union-Find-Algorithmus optimieren. Dieser bietet eine effiziente Möglichkeit, verbundene Zellen während der Labyrinthgenerierung zu verfolgen. Meine PHP-Implementierung des Union-Find-Algorithmus finden Sie hier: Link

Weitere Informationen

Wenn Ihnen dieser Beitrag gefallen hat, könnten Ihnen auch diese Vorschläge gefallen:


Teilen auf BlueskyAuf Facebook teilenAuf LinkedIn teilenAuf Tumblr teilenTeilen auf XAuf LinkedIn teilenPin auf Pinterest

Mikkel Christensen

Über den Autor

Mikkel Christensen
Mikkel ist der Schöpfer und Eigentümer von miklix.com. Er verfügt über mehr als 20 Jahre Erfahrung als professioneller Computerprogrammierer/Softwareentwickler und ist derzeit in Vollzeit für ein großes europäisches IT-Unternehmen tätig. Wenn er nicht gerade bloggt, verbringt er seine Freizeit mit einer Vielzahl von Interessen, Hobbys und Aktivitäten, was sich bis zu einem gewissen Grad in der Vielfalt der auf dieser Website behandelten Themen widerspiegelt.