Miklix

Labyrinthgenerator mit wachsendem Baumalgorithmus

Veröffentlicht: 16. Februar 2025 um 21:36:10 UTC
Zuletzt aktualisiert: 12. Januar 2026 um 09:05:42 UTC

Labyrinthgenerator, der den Growing-Tree-Algorithmus verwendet, um ein perfektes Labyrinth zu erstellen. Dieser Algorithmus erzeugt tendenziell Labyrinthe, die dem Hunt-and-Kill-Algorithmus ähneln, jedoch mit einer etwas anderen typischen 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:

Growing Tree Algorithm Maze Generator

Der Growing-Tree-Algorithmus ist interessant, da er das Verhalten verschiedener anderer Algorithmen nachahmen kann, je nachdem, wie die nächste Zelle während der Generierung ausgewählt wird. Die Implementierung auf dieser Seite verwendet einen breitensuchenden, warteschlangenähnlichen Ansatz.

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 den Wachstumsbaum-Algorithmus

Der Growing-Tree-Algorithmus ist eine flexible und leistungsstarke Methode zur Erzeugung perfekter Labyrinthe. Er ist deshalb interessant, weil er das Verhalten verschiedener anderer Labyrinthgenerierungsalgorithmen, wie beispielsweise des Prim-Algorithmus, des rekursiven Backtrackings und der rekursiven Division, nachahmen kann, je nachdem, wie die nächste zu verarbeitende Zelle ausgewählt wird.

Wie der Wachstumsbaum-Algorithmus funktioniert

Schritt 1: Initialisierung

  • Beginnen Sie mit einem Raster aus unbesuchten Zellen.
  • Wähle eine zufällige Startzelle und füge sie einer Liste hinzu.

Schritt 2: Labyrinthgenerierungsschleife

  • Solange die Zellenliste nicht leer ist: Wähle eine Zelle anhand einer bestimmten Strategie (siehe unten) aus. Erschaffe einen Durchgang von der ausgewählten Zelle zu einem ihrer unbesuchten Nachbarn (zufällig ausgewählt). Füge den Nachbarn der Liste hinzu, da er nun Teil des Labyrinths ist. Hat die ausgewählte Zelle keine unbesuchten Nachbarn, entferne sie aus der Liste.

Schritt 3: Beendigung

  • Der Algorithmus ist beendet, wenn keine Zellen mehr in der Liste vorhanden sind, was bedeutet, dass das gesamte Labyrinth erstellt wurde.

Zellselektionsstrategien (Flexibilität des Algorithmus)

Das entscheidende Merkmal des Growing-Tree-Algorithmus ist die Auswahl der jeweils nächsten zu verarbeitenden Zelle. Diese Wahl beeinflusst das Erscheinungsbild des Labyrinths maßgeblich:

Neueste Zelle (stapelartiges Verhalten) – Rekursiver Backtracker:

  • Wählen Sie immer die zuletzt hinzugefügte Zelle aus.
  • Es entstehen lange, gewundene Gänge mit vielen Sackgassen (ähnlich einem Tiefensuchlabyrinth).
  • Labyrinthe haben in der Regel lange Gänge und sind leicht zu lösen.

Zufallszelle (Randomisierter Prim-Algorithmus):

  • Wähle jedes Mal eine zufällige Zelle aus der Liste aus.
  • Erzeugt ein gleichmäßiger verteiltes Labyrinth mit komplexen, verschlungenen Pfaden.
  • Weniger lange Korridore und mehr Verzweigungen.

Älteste Zelle (warteschlangenähnliches Verhalten):

  • Wähle immer die älteste Zelle in der Liste.
  • Erzeugt Labyrinthe mit einer gleichmäßigeren Verteilung, ähnlich einem Breitensuche-Muster.
  • Kurze, buschige Gänge mit dichten Verbindungen.
  • (Dies ist die hier implementierte Version)

Hybride Ansätze:

Strategien für unterschiedliche Labyrintheigenschaften kombinieren. Zum Beispiel:

  • 90 % neueste Einträge, 10 % zufällige Einträge: Sieht größtenteils aus wie ein rekursives Backtracker-Labyrinth, jedoch mit gelegentlichen Abzweigungen, die lange Gänge unterbrechen.
  • 50 % neueste, 50 % älteste Pflanzen: Schafft ein Gleichgewicht zwischen langen Korridoren und buschigem Bewuchs.

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.