Pathfinding (Graphsuche)

Die unauffällige Mathematik hinter Google Maps, Spielfiguren und Logistik.

Wegfindungsalgorithmen

AnalogieDefinition

Stell dir vor, du bist in einer fremden Stadt und suchst den Weg zum Bahnhof. Es gibt verschiedene Suchstrategien:

Uninformierte Suche (wie BFS oder Dijkstra): Durchsucht systematisch alle Straßen, ohne zu wissen wo der Bahnhof ist. Gründlich, aber zeitaufwändig. Informierte Suche (wie A* oder Greedy): Nutzt einen 'Kompass' - schätzt die Richtung zum Ziel und priorisiert Wege, die dorthin führen.

Die Wahl des richtigen Algorithmus hängt von der Situation ab: Brauchst du den kürzesten Weg? Wie viel weißt du über den Standort des Ziels?

Diese Demo zeigt, wie verschiedene Wegfindungsalgorithmen arbeiten. Du kannst den Algorithmus bei der Arbeit beobachten und sehen, wie er Schritt für Schritt den Weg findet.

Interaktion mit der Demo

Zeichne Wände auf das Raster, um Hindernisse zu erstellen. Setze Start- und Zielpunkte. Wähle einen Algorithmus und klicke 'Start', um die Suche zu beobachten.

Was die Farben bedeuten

Gelbe Zellen sind in der Open List (noch zu erkunden). Blaue Zellen wurden bereits besucht (Closed List). Der grüne Pfad zeigt die gefundene Route.

Die verschiedenen Algorithmen

Jeder Algorithmus sucht anders: A* nutzt eine Heuristik für die Richtung, Dijkstra sucht gleichmäßig in alle Richtungen, und Greedy rennt direkt zum Ziel. Vergleiche sie, um ihre Stärken und Schwächen zu sehen.

Interaktive Pathfinding-Demo

Was auf dem Spielfeld passiert

Diese Demo sucht den kürzesten Weg durch ein Gitter. Hier steht, was du auf dem Bild siehst — die Zahlen unter dem Gitter zählen das Ganze mit.

Was du siehst
Ein Gitter aus Kacheln mit einem Start (🤖), einem Ziel (🚩) und schwarzen Wänden dazwischen. Rund um den Start liegt eine Fläche eingefärbter Felder, die um die Wände herumreicht.
Was passiert
Vom Start aus wächst eine Front besuchter Felder nach außen und fließt um die Wände herum — wie sich ausbreitendes Wasser. Sobald sie das Ziel erreicht, leuchtet der kürzeste Weg als zusammenhängende Linie vom Start zum Ziel auf.
Was du tun kannst
Zeichne Wände oder verschiebe Start und Ziel, wähle einen Algorithmus, und starte die Suche oder gehe Schritt für Schritt vor. Über das Tempo bestimmst du, wie schnell sich die Front ausbreitet.
Worauf du achtest
Die Suche tastet nicht blind in alle Richtungen. Manche Verfahren streben gezielt Richtung Ziel, andere breiten sich gleichmäßig aus — den kürzesten Weg finden sie am Ende garantiert.
Bereit! Klicke Start oder zeichne Wände und starte dann den Algorithmus.
⚡ x5 (200ms)
x1x100
Wähle den Suchalgorithmus. Verschiedene Algorithmen erkunden das Gitter unterschiedlich.

Benannt nach den rechtwinkligen Straßen von Manhattan: Man kann nur horizontal oder vertikal gehen, nie schräg. Die Distanz ist die Summe der Schritte in X- und Y-Richtung.

SzenarienZeichenmodus

Wähle ein Szenario, um verschiedene Algorithmus-Verhaltensweisen zu beobachten:

Zufälliges Labyrinth:

So funktioniert A*

TheoriePseudo-CodeSchritt für SchrittFlussdiagramm

Der A* Suchalgorithmus

A* (gesprochen 'A-Stern') ist einer der beliebtesten Wegfindungsalgorithmen. Er wurde 1968 von Peter Hart, Nils Nilsson und Bertram Raphael entwickelt. A* kombiniert das Beste aus Dijkstras Algorithmus (garantiert kürzester Weg) mit der Greedy Best-First-Suche (schnelle Richtungssuche).

Die Schlüsselidee von A* ist die Formel f(n) = g(n) + h(n), wobei g(n) die tatsächlichen Kosten vom Start zum aktuellen Knoten sind und h(n) die geschätzten Kosten vom aktuellen Knoten zum Ziel (die Heuristik). Durch das ständige Expandieren des Knotens mit dem niedrigsten f-Wert findet A* effizient den optimalen Pfad.

Die Heuristik-Funktion

Die Heuristik h(n) ist eine Schätzung der verbleibenden Distanz. Gängige Heuristiken sind: Manhattan-Distanz (Summe horizontaler und vertikaler Abstände), Euklidische Distanz (Luftlinie), und Chebyshev-Distanz (Maximum aus horizontalem und vertikalem Abstand).

Damit A* den optimalen Pfad garantiert, muss die Heuristik zulässig sein - sie darf die tatsächlichen Kosten niemals überschätzen. Eine optimistische Heuristik stellt sicher, dass wir keinen besseren Pfad verpassen.

Vorteile von A*

  • Optimal: Garantiert den kürzesten Pfad bei zulässiger Heuristik
  • Effizient: Erkundet weniger Knoten als Dijkstra durch Richtungsführung
  • Flexibel: Funktioniert mit verschiedenen Heuristiken für unterschiedliche Szenarien
  • Vollständig: Findet einen Pfad, wenn einer existiert

Praktische Anwendungen

A* wird überall eingesetzt: Videospiel-Wegfindung, GPS-Navigation, Robotik, Netzwerk-Routing, Puzzle-Lösung (wie das 15-Puzzle) und KI-Planung. Seine Effizienz und Optimalität machen ihn zum Standard-Algorithmus für Wegfindungsprobleme.

Probiere die Demo! Beobachte, wie A* die Heuristik nutzt, um den kürzesten Pfad effizient zu finden. Vergleiche mit Dijkstra, um den Unterschied zu sehen!

So funktioniert Dijkstra

TheoriePseudocodeSchritt für SchrittFlussdiagramm

Dijkstras Algorithmus

Dijkstras Algorithmus, 1956 von Edsger Dijkstra erfunden, findet den kürzesten Weg von einem Startknoten zu allen anderen Knoten im Graphen. Anders als A* verwendet er keine Heuristik - er erkundet systematisch in alle Richtungen.

Der Algorithmus verwaltet einen Distanzwert für jeden Knoten. Beginnend mit 0 am Startknoten, expandiert er immer den Knoten mit der kleinsten bekannten Distanz. Das garantiert das Finden des optimalen Pfades.

Wie es funktioniert

Dijkstra expandiert in einem kreisförmigen Muster vom Start, wie Wellen auf dem Wasser. Er besucht Knoten in der Reihenfolge ihrer Distanz zum Start und stellt so sicher, dass der kürzeste Pfad gefunden wird, wenn das Ziel erreicht ist.

Eigenschaften

  • Optimal: Findet immer den kürzesten Pfad
  • Vollständig: Findet einen Pfad, wenn einer existiert
  • Keine Heuristik: Kennt die Zielrichtung nicht
  • Mehr Exploration: Besucht oft mehr Knoten als A*

Schau dir die Demo an! Sieh wie Dijkstra in alle Richtungen erkundet - vergleiche mit A*, um den Unterschied zu sehen!

So funktioniert Greedy Best-First

TheoriePseudocodeSchritt für SchrittFlussdiagramm

Greedy Best-First Search

Greedy Best-First Search bewegt sich immer so direkt wie möglich zum Ziel. Er berücksichtigt nur die Heuristik h(n) - die geschätzte Entfernung zum Ziel - und ignoriert, wie weit er bereits gelaufen ist.

Das macht ihn sehr schnell wenn keine Hindernisse im Weg sind, aber er kann in Sackgassen geraten, weil er die tatsächlichen Pfadkosten nicht berücksichtigt.

Der gierige Ansatz

Wie jemand, der auf einen Berg zuläuft - immer in seine Richtung, ohne zu bedenken, ob eine Klippe im Weg ist. Schnell wenn der Weg frei ist, problematisch wenn Hindernisse existieren.

Eigenschaften

  • Schnell: Geht direkt zum Ziel
  • Nicht Optimal: Findet möglicherweise nicht den kürzesten Pfad
  • Kann stecken bleiben: Fallen täuschen ihn leicht
  • Wenig Speicher: Erkundet weniger Knoten

Probiere das Spiral-Szenario! Schau wie Greedy in die Falle läuft, während A* den Weg drumherum findet.

So funktioniert Breitensuche

TheoriePseudocodeSchritt für SchrittFlussdiagramm

Breitensuche (BFS)

BFS erkundet einen Graphen Ebene für Ebene, wie Wellen, die sich von einem in Wasser geworfenen Stein ausbreiten. Er besucht zuerst alle Knoten mit Distanz 1, dann Distanz 2, dann Distanz 3, und so weiter.

Mit einer Warteschlange (FIFO) garantiert BFS das Finden des kürzesten Pfades in ungewichteten Graphen - wo alle Kanten die gleichen Kosten haben.

Das Wellenmuster

Stell dir vor, du wirfst einen Stein in einen Teich - die Wellen breiten sich gleichmäßig in alle Richtungen aus. BFS funktioniert genauso und erkundet alle Richtungen gleichmäßig, bevor er sich weiter vom Start entfernt.

Eigenschaften

  • Optimal: Kürzester Pfad in ungewichteten Graphen
  • Vollständig: Findet immer einen Pfad wenn einer existiert
  • Fair: Erkundet alle Richtungen gleichmäßig
  • Hoher Speicherbedarf: Speichert alle Knoten der aktuellen Ebene

Schau dir die Demo an! Sieh wie BFS sich wie eine Welle ausbreitet - vergleiche mit DFS um den Unterschied zu sehen!

So funktioniert Tiefensuche

TheoriePseudocodeSchritt für SchrittFlussdiagramm

Tiefensuche (DFS)

DFS erkundet so weit wie möglich entlang jedes Zweigs, bevor er zurückgeht. Er geht zuerst tief in den Graphen und erkundet andere Pfade erst, wenn er auf eine Sackgasse trifft.

Mit einem Stapel (LIFO) ist DFS speichereffizient, garantiert aber nicht das Finden des kürzesten Pfades.

Der Labyrinth-Erkunder

Stell dir vor, du erkundest ein Labyrinth, indem du an jeder Kreuzung immer in die gleiche Richtung abbiegst (z.B. rechts). Du wirst schließlich alles erkunden, aber du könntest lange Umwege machen.

Eigenschaften

  • Speichereffizient: Speichert nur den aktuellen Pfad
  • Nicht Optimal: Kann lange Umwege finden
  • Vollständig: Findet einen Pfad wenn er existiert (endliche Graphen)
  • Schnell für tiefe Ziele: Gut wenn Ziel weit vom Start entfernt

Schau dir die Demo an! Sieh wie DFS tief taucht bevor er zurückgeht - vergleiche mit BFS!

Teste dein Wissen

Frage 1 / 10
Noch offen

Was berechnet die Formel f(n) = g(n) + h(n) bei A*?

Wählen Sie eine Antwort
Auflösung: 1) B · 2) C · 3) A · 4) D · 5) B · 6) B · 7) C · 8) B · 9) B · 10) B