Von Labyrinthen zu Algorithmen g m Gerald Futschek F Algorithmen prolog der Informatik Wie kommt man aus einem Labyrinth heraus? • Labyrinth b h (griechisch: Haus der Doppelaxt, wahrscheinlich Knossos auf Kreta) Labrys Grundriss des Palastes von Knossos Algorithmen prolog der Informatik Fragestellungen zu Labyrinthen • Finde einen Weg durch das Labyrinth • Finde einen Weg hinaus • Finde einen Weg zu einem bestimmten Punkt im Labyrinth • Gibt es vielleicht mehrere Wege? • Welcher Weg g ist der kürzeste? • Wie findet man solche Wege? Algorithmen prolog der Informatik Präzisierung g der Aufgabenstellung • Gesucht ist ein Weg von Position A nach B • Form, Größe und Struktur des Labyrinths ist zunächst nicht bekannt Algorithmen prolog der Informatik Sichtweise in einem Labyrinth Algorithmen prolog der Informatik Algorithmen prolog der Informatik Algorithmen prolog der Informatik Suche nach einem Weg • A An jeder j d Kreuzung: K Welchen W l h Gang G soll ll man gehen? – einen zufälligen? – einen bestimmten Gang? – alle Gänge der Reihe nach? (wie geht das genau?) Strategie gesucht! Algorithmen prolog der Informatik Eine Idee für eine Strategie • „Man geht h immer der d linken l k Wand d entlang!“ l !“ • Diese Strategie g funktioniert jedenfalls j sicher von einem Eingang zu einem Ausgang (Spiegelkabinett) p g Algorithmen prolog der Informatik Eine Lösungsstrategie • Immer die linke Wand entlang gehen Gesucht: Nicht die Lösung für ein bestimmtes Labyrinth, y , sondern ein Verfahren, wie man zur Lösung bei beliebigen Labyrinthen kommt! (ein Algorithmus löst ein allgemeines Problem) Algorithmen prolog der Informatik Abstraktion • Labyrinth besteht aus – Kreuzungen und – Gängen G zwischen i h Kreuzungen K • Länge und Form der Gänge nicht wichtig goal Modellierung als Graph: start Knoten und Kanten Kreuzungen werden zu Knoten Gänge werden zu Kanten Algorithmen prolog der Informatik Labyrinth - Graph goal start Was entspr entspricht cht der linken l nken Wand in ne einem nem Graphen? Algorithmen prolog der Informatik Der Graph p und der 1.Gang g von links • In jedem Knoten müssen wir den 1. Gang von links kennen. • Welche Kante ist der 1. Gang von links? goal start Der 1. Gang von links g von dem Gang g ab, hängt der zur Kreuzung führt! Algorithmen prolog der Informatik Modellierung g der Reihenfolge g der Gänge • Ei Ein G Graph h beschreibt b h ib nur K Knoten und d welche l h Knoten K durch Kanten verbunden sind. • In I einem i Graph G h gibt ibt ess k keine i Reihenfolge R ih f l d der K Kanten t Für jeden Knoten müssen wir eine Reihenfolge der Kanten zusätzlich modellieren. Da alle Kanten „gleichberechtigt“ sind, definieren wir gleich eine zyklische kli h Ordnung: Od Zu jeder Kante e eines Knoten gibt es eine Nachfolgerkante succ(e) Algorithmen succ(e) ist der 1.Gang von links! prolog der Informatik Modellierung als Embedded Graph • E Ein Embedded E b dd d G Graph h (in ( die d Eb Ebene eingebettet) hat die Kanten jedes Knoten zyklisch kl h geordnet d • dh. man kann, wenn man über eine Kante e zu einem Knoten kommt, mit succ(e) den 1. Gang von links bestimmen • Mit der zyklischen Ordnung hat man auch eine Reihenfolge, Re henfolge, um alle Gänge einer e ner Kreuzung systematisch zu durchlaufen! Algorithmen prolog der Informatik Grundoperationen für Labyrinthe Die folgenden g Grundoperationen p dürfen in einem Labyrinth-Algorithmus verwendet werden: Man kommt stets von einem Gang an eine Kreuzung: • Abfrage: Anzahl weiterer Gänge bei dieser Kreuzung? (Sackgasse bei null weiteren Gängen) • Akti Aktion: M Man wählt ählt den d i-ten i t G Gang von links li k und d geht in diesem Gang bis zur nächsten Kreuzung • Aktion: Man geht den Gang, Gang den man soeben gekommen ist, bis zur letzten Kreuzung zurück • Abfrage: g Ziel erreicht? Ja/Nein Kann man mit diesen Grundoperationen einen Weg von A nach B im Labyrinth finden? Wie? Algorithmen prolog der Informatik Linke Wand entlang • Wie W formuliert f mu man m den Algorithmus g mu mit m den Grundoperationen? • Es gibt ja in der Abstraktion (Graph) keine Wände, sondern nur mehr Kanten! Algorithmus g mit den 4 Grundoperationen: p solange Ziel nicht erreicht falls Sackgasse g drehe dich um und gehe Gang zurück sonst gehe 1. 1 Gang von links Algorithmen prolog der Informatik Vereinfachung g des Linke Wand Algorithmus statt solange Ziel nicht erreicht falls Sackgasse drehe dich um und gehe Gang zurück sonst gehe 1. Gang von links in einer Sackgasse ist der erste Gang von links der Weg zurück: solange Ziel nicht erreicht gehe 1. Gang von links Algorithmen prolog der Informatik Flussdiagramm ja Ziel erreicht? nein Sackgasse? ja nein drehe dich um und gehe Gang zurück gehe 1. Gang von links Algorithmen prolog der Informatik Welche Anfangsbedingungen müssen erfüllt sein, damit dieser Algorithmus terminiert? Precondition eines Algorithmus • P Precondition diti (Vorbedingung, (V b di Anfangsbedingung) muss vor dem d Al Algorithmus ith erfüllt sein, damit er terminiert und die gewünschten Ergebnisse liefert Preconditions für Linke Wand Algorithmus: • Ziel Zi l muss erreichbar i hb sein i • Am Weg zum Ziel ist kein Zyklus Algorithmen Precondition Algorithmus solange Ziel nicht erreicht falls Sackgasse drehe dich um und gehe Gang zurück sonst gehe 1. Gang von links prolog der Informatik Postcondition eines Algorithmus • P Postcondition t diti (Nachbedingung, Endbedingung) beschreibt den gewünschten Endzustand des Algorithmus Postcondition des Linke Wand Algorithmus: Ziel ist erreicht Algorithmen Algorithmus Postcondition solange l Zi l nicht Ziel i ht erreicht i ht falls Sackgasse drehe dich um und gehe Gang zurück sonst gehe 1. 1 Gang von links prolog der Informatik Bedeutung der Precondition • Precondition ist erfüllt: f ll Algorithmus terminiert sicher und nachher ist die Postcondition erfüllt • Precondition ist nicht erfüllt: Es ist nicht garantiert, dass der Algorithmus terminiert oder nachher die Postcondition erfüllt ist. In di diesem Fall F ll soll ll d der Algorithmus l i h gar nicht ausgeführt werden! Precondition Algorithmus Postcondition Problem der Zyklen • Die Strategie „Linke Wand entlang“ funktioniert leider nicht bei allen Labyrinthen, wenn man von A nach h B will! ill! • Möglicherweise gibt es Zyklen sodass es auch Zyklen, unendlich lange Pfade gibt (das Verfahren terminiert nicht!) • Gibt es trotzdem Strate ien zum Ziel zu Strategien, kommen? Algorithmen prolog der Informatik Ariadne, die erste Informatikerin • Th Theseus ist i wild ild entschlossen, Minotaurus in seinem Labyrinth umzubringen • Ariadne hilft ihm dabei mit einer genialen Idee, den Minotaurus zu finden und das Labyrinth auf schnellem W zu verlassen Weg v l ss n Algorithmen prolog der Informatik Der Ariadne-Faden Ariadne Faden • Theseus durchsucht systematisch das gesamte Labyrinth: Er spult dabei einen Faden ab, geht an Kreuzungen immer den Gang ganz links. • Bei B i Sackgassen S k und d an Kreuzungen, K bei b i denen der Ariadnefaden quert (Zyklus!) muss er umkehren (back tracking) g und d F den Faden d zurückverfolgen k f l und d aufwickeln, um dann den nächsten Gang g bei einer bereits besuchten Kreuzung einzuschlagen. • Mit dieser Technik kommt Theseus mit Sicherheit durch jeden Gang und zu allen Kreuzungen. • Um schließlich zum Eingang zurückzukehren muss er zuletzt nur zurückzukehren, den Faden zurückverfolgen Algorithmen prolog der Informatik Fragen zum Ariadne-Faden Ariadne Faden • Welchen Vorteil bringt der Ariadne-Faden? • Warum wickelt man den Faden beim Zurückgehen wieder auf? • Wie lang muss der Faden sein? Theseus tötet den Minotaurus (schwarzfigurige Amphore) Algorithmen prolog der Informatik Ariadne Faden Algorithmus Ariadne-Faden Modifizierte Grundoperationen: p 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 oder Ariadnefaden quert Kreuzung drehe dich um und gehe Gang zurück (und wickle auf) sonst gehe 1. Gang von links (falls Ariadnefaden im Gang, dann aufwickeln sonst abspulen) Algorithmen prolog der Informatik Ariadne Algorithmus im Detail Ariadne-Algorithmus 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 • Wi Wie großß ist i td der A Aufwand f dd des Algorithmus? – Wie misst man den Aufwand? • Anzahl Einzelschritte = Anzahl besuchter Kreuzungen? = Anzahl durchwanderter Gänge? – Wie oft wird ein Gang durchlaufen? • mindestens • höchstens • Wie kann man den Ariadne Algorithmus g beschleunigen? Algorithmen prolog der Informatik