Algorithmus - Informatik, TU Wien

Werbung
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
Herunterladen