Von Labyrinthen zu Algorithmen g m 3 Gerald Futschek Algorithmen prolog der Informatik Ariadne Faden Algorithmus Ariadne-Faden Modifizierte Grundoperationen: Aktionen: Beim Gehen in Gängen zusätzlich Faden abspulen bzw. aufwickeln zusätzliche Abfrage: Quert ein Faden die Kreuzung? Ariadne Algorithmus mit den Grundoperationen: solange Ziel nicht erreicht falls Sackgasse g oder Ariadnefaden q quert Kreuzung g drehe dich um und gehe Gang zurück (und wickle auf) sonst gehe 1. 1 Gang von links (falls Ariadnefaden im Gang, dann aufwickeln sonst abspulen) Es wird ein „Baum Baum“ von allen möglichen Wegen durchsucht durchsucht, dabei stets versucht zuerst möglichst tief zu kommen: Tiefensuche! Algorithmen prolog der Informatik Fragen zum Ariadne-Algorithmus Ariadne Algorithmus • Wie erkennt k Theseus, h dass sich h Minotaurus nicht im Labyrinth y aufhält? • Geht Theseus den kürzesten Weg aus dem Labyrinth hinaus? • Kann es vorkommen, dass der Algorithmus „ewig“ dauert? • Welche Pre- und Postonditions gelten? Algorithmen prolog der Informatik Aufwand des AriadneAlgorithmus • Wie Wi großß ist i t der d Aufwand A f d des d Al Algorithmus? ith ? – Wie misst man den Aufwand? • Anzahl A hl Ei Einzelschritte l h itt = Anzahl besuchter Kreuzungen? = Anzahl durchwanderter Gänge? • Aufwand entspricht der Anzahl verschiedener Wege von A nach B • Abhängig von Problemgröße n n = Anzahl der Kreuzungen (Knoten) Wenn maximal 3 weitere Gänge weggehen: Aufwand maximal 3n (exponentiell!) • Wie kann man den Ariadne Algorithmus beschleunigen? Algorithmen prolog der Informatik Kürzester Weg • Ariadnefaden f lliefert f nicht h immer den kürzesten Weg g • Warum? • Wie Wi kommt k t man zu einem i kürzesten kü t Weg? Algorithmen prolog der Informatik 1 Möglichkeit für Kürzeste Wege 1. • All Alle W Wege von A nach hBb bestimmen ti und den kürzesten davon auswählen • Im I Ariadne A i d Algorithmus Al ith b braucht ht man sich i h bl bloßß stets die Länge des zurückgelegten Weges merken und nach Auffinden von B nicht abbrechen, sondern umkehren und weitersuchen um weitere Wege zu finden weitersuchen, • Jedes Mal, wenn B erreicht wird, kann ein neuer kürzester Weg gefunden worden sein Algorithmen prolog der Informatik 2. Möglichkeit g für Kürzeste Wege • Man berechnet b h schrittweise h Zwischenergebnisse, also kürzeste Wege zu Zwischenknoten h k (Prinzip der Dynamischen Programmierung) • Beim ersten Schritt sind das die Nachbarknoten von A, sie haben Abstand 1 • Im nächsten Schritt alle Knoten mit Abstand 2,, dann die d e mit m t Abstand 3 usw. • solange bis B erreicht wird • Breitensuche! Algorithmen prolog der Informatik Aufwand Kürzeste Wege • Welche l h der beiden Möglichkeiten l hk ist schneller ? • Kann man die maximale Anzahl der Schritte angeben ? • Welche der beiden Möglichkeiten g kann Theseus im unbekannten Labyrinth durchführen ? Algorithmen prolog der Informatik Im Dunkeln aus einem Labyrinth entkommen • Also ohne Markierungen (Ariadne Faden) • Ohne Spuren zu hinterlassen • Für Rettungsroboter geeignet • Wie geht das? Algorithmen prolog der Informatik Im Dunkeln aus Labyrinth 2 • Linke k Wand entlang l ist nicht h geeignet Man muss sich von Hindernis wieder lösen! Algorithmen prolog der Informatik Im Dunkeln aus Labyrinth 3 Idee: • Hat man die Startrichtung wieder erreicht, erreicht dann geradeaus weiter, bis man wieder auf Hindernis trifft Algorithmen prolog der Informatik Im Dunkeln aus Labyrinth 4 • Geht h auch h nicht h immer!! Algorithmen prolog der Informatik Im Dunkeln aus Labyrinth 5 • Pledge l Algorithmus l h (John ( h Pledge) l ) • Auch Anzahl Umdrehungen muss 0 sein! Algorithmen prolog der Informatik Pledge Algorithmus Drehungswinkel auf 0 setzen wiederhole gehe geradeaus bis Wand erreicht drehe dich so, dass du nach rechts der Wand entlang gehst folge dem Hindernis bis Drehungswinkel = 0 bis ins Freie gelangt • Führt immer zu einem Ausgang am äußeren Rand (falls vorhanden) • http://www.geometrylab.de/Pledge/ htt :// m t l b d /Pl d / Algorithmen prolog der Informatik Fragen zu Algorithmen • Was ist ein Algorithmus? l h • Warum brauchen wir überhaupt Al Algorithmen? ith ? • Wann ist ein Algorithmus schneller als ein anderer? Algorithmen prolog der Informatik Charakterisierung Algorithmus Ein Algorithmus E l h • ist ein schrittweises Verfahren • ist exakt beschrieben • liefert nach endlich vielen Schritten as Erg Ergebnis n s (terminiert) (t rm n rt) das • liefert stets ein richtiges Ergebnis (ist korrekt) • löst ein allgemeines g Problem Algorithmen prolog der Informatik