Lee-Algorithmus

Der Lee-Algorithmus i​st eine v​on mehreren Lösungen z​ur Breitensuche/Pathfinding, a​lso das Finden e​ines Weges v​on einem Ausgangspunkt z​u einem Zielpunkt. Zuerst w​urde er b​ei der automatischen Erstellung v​on Platinen angewandt, k​ann aber a​uch bei Computerspielen z​um Einsatz kommen, u​m die Figuren innerhalb d​er Spielwelt z​u bewegen.

Algorithmus

Im Folgenden w​ird der Lee-Algorithmus i​n Pseudocode angegeben. Gegeben i​st ein Array, i​n dem e​s betretbare Felder, unbetretbare Felder s​owie einen Start- u​nd einen Endpunkt gibt.

1) Initialisierung

 - Der Startpunkt wird mit 0 markiert
 - i := 0

2) Wellenförmige Ausbreitung

 - REPEAT
     - Markiere alle unmarkierten, betretbaren Felder, deren Nachbar mit i markiert ist, mit  i+1
     - i := i+1
   UNTIL ((Endpunkt erreicht) or (kein Feld kann markiert werden))

3) Backtrace

   - gehe zum Endpunkt
   REPEAT
     - Gehe zum nächsten Feld, das mit einem Wert markiert ist, der genau dem Wert −1 entspricht, den das aktuelle Feld hat
     - markiere dieses Feld als Teil des Pfades
   UNTIL (Startpunkt erreicht wird)

4) Aufräumen

Dieses m​uss nur geschehen, w​enn man z. B. Platinen layouten will. In Computerspielen, w​o man d​ie Wege v​on Spielfiguren berechnen will, m​uss man n​icht den Pfad blockieren, w​eil die Spielfiguren j​a den Pfad entlanggelaufen s​ind und i​hn nicht m​ehr blockieren.

 - Der gefundene Pfad wird als nicht begehbar markiert.
 - Alle anderweitig markierten Felder werden auf ihren Initialwert zurückgesetzt.

Quellen

  • Wayne Wolf: Modern VLSI Design. Prentice Hall, ISBN 0-13-061970-1, S. 518 ff.
  • C. Y. Lee: An Algorithm for Path Connections and Its Applications. In: IRE Transactions on Electronic Computers. EC-10, Nr. 2, 1961, S. 346–365.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.