Algorithmen und Datenstrukturen 1 Kapitel 3

Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Algorithmen und Datenstrukturen 1
Kapitel 3
Robert Giegerich
Technische Fakultät
Universität Bielefeld
[email protected]
Vorlesung, U. Bielefeld, Winter 2005/2006
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Kapitel 3: Strategien der algorithmischen Problemlösung
Vorbemerkungen
Hier werden an einfachen Beispielen verschiedene Strategien
erklärt, die zur Lösung eines wohldefinierten algorithmischen
Problems benutzt werden können.
In diesem Kapitel nehmen wir an, dass wir die Probleme der
Modellierung (Kapitel 2) bereits erfolgreich hinter uns gelassen
haben.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Unsere Beispiele sind einfach, um die Strategien in Reinform
darzustellen. Für umfangreichere Aufgaben werden in der Regel
Kombinationen und Mischformen der Strategien eingesetzt.
Zusammen mit den Strategien betrachten wir auch den
Rechenaufwand, den sie erfordern. Dies allerdings nur intuitiv –
eine mathematische Behandlung wird später nachgeholt.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Zum Aufwand A[|...|] für Arithmetik:
Die Annahme
A[| + |] = A[|(x + y )|] ∀x, y ∈ N
ist eine Vereinfachung.
Sie gilt
auf dem Computer für das Rechnen in einem beschränkten
Zahlenbereich (32 Bit, 64 Bit)
Sie gilt nicht
für uns
für den Computer beim Rechnen mit beliebig großen Zahlen
(In Haskell: Typ Int versus Typ Integer.)
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Rechnen mit großen Zahlen hat wichtige Anwendungen, z.B. in der
Verschlüsselungstechnik.
Rechenaufwand hängt auch vom Zahlsystem ab.
Dezimal: 05 + 12 = 17 (3 · A[| +Ziffer |]
Binär: 00101 + 01100 = 10001 (9 · A[| +Ziffer |])
Unär:
11111 + 11 11111 11111 = 11 11111 11111 11111
(17 · A[|1|])
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Leibniz hat als Erster die Binärzahlen beschrieben und bemerkt,
dass durch diese Zahldarstellung
das kleine 1 + 1 und 1 · 1 einfacher werden,
die Zahlen und damit die Rechnungen länger werden.
Er hielt die Binärzahlen für elegant, aber unpraktisch.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
3.1 Ausrechnen von Formeln
Dies ist der einfachste Fall. Die Modellierung hat schon ganze
Arbeit geleistet und fertige Formeln für die Lösung aufgestellt:
Beispiel: Tübinger Parkplatz
Variante 1:
r (p, m) = 4p + 2m
Variante 2:
p(n, r ) =
m(n, r ) =
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
r −2n
2
n − r −2n
2
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Probleme, deren Lösungen sich allgemein als fertige Formeln
beschreiben lassen, sind zugleich die einfachsten Aufgaben. Das
ganze Problem wird “auf einen Schlag” gelöst.
Meistens jedoch müssen Aufgaben erst in Teilaufgaben zergliedert,
diese gelöst und deren Lösungen anschließend kombiniert werden.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
3.2 Strukturelle Rekursion
Allgemeines zur Rekursion:
Rekursion heißt: Eine Methode M benutzt sich selbst zur Lösung
von Problem X
Terminierungsfall: Problem direkt lösbar
Rekursiver Fall: M(X ) benutzt Lösung von M[X 0 ]
Endlose Rekursion tritt auf, wenn beim Übergang
M[X ] → M[X 0 ] → M[X 00 ] . . . nie der Terminierungsfall erreicht
wird.
Es gibt verschiedene Wege, Endlosrekursion auszuschließen.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Strukturelle Rekursion bedeutet Problemzerlegung durch direkte
Zerlegung der Datenstruktur.
Berechnen der Spieldauer eines Musikstückes (in Takten):
playtime(P(d)) = d
playtime(N(t, d)) = d
playtime(m1 ∗ m2 ) = playtime(m1 ) + playtime(m2 )
playtime(m1 + m2 ) = max(playtime(m1 ), playtime(m2 ))
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Schema der Strukturellen Rekursion:
Eine Gleichung pro Konstruktor des Datentyps
Nicht-rekursive Konstruktoren ⇒ Terminierungsfall
Rekursive Konstruktoren ⇒ rekursive Problemzerlegung
Weiteres Beispiel: Funktion transponiere (s. Haskell-Vorlesung)
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Strukturelle Rekursion über Listen
Kleinstes Element einer nichtleeren Liste:
minimum(x : xs) = min x xs where
min a[] = a
min a(x : xs) = if a <= x then min a xs
else min x xs
Hier folgt die Hilfsfunktion min dem Schema der Strukturellen
Rekursion.
Die Funktion minimum selbst kann nicht durch Strukturelle
Rekursion definiert werden, da sie für den Terminierungsfall gerade
nicht definiert ist.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Aufwand: Entspricht der Größe der Datenstruktur – pro
Konstruktor wird eine Gleichung angewandt.
Das ist der Aufwand des Schemas. Hinzu kommt der Aufwand für
die sonstige Operationen auf den rechten Seiten der Gleichungen.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Terminierung bei Struktureller Rekursion
Terminierung ist gesichert, wenn die Datenstruktur eine
endliche Formel ist.
Endlos-Rekursion auf unendlichen Datenstrukturen. Beispiel:
dauer (ad. libidum (P(1/2))).
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
3.3 Wohlfundierte Rekursion (Teile-und-Herrsche)
Allgemeiner als die Strukturelle ist die Wohlfundierte Rekursion.
Die Zerlegung des Problems folgt nicht dem rekursiven Aufbau der
Datenstruktur. Die Aufgabe wird auf beliebige Aufgaben (der
gleichen Art) zurückgeführt, die in einem wohldefinierten Sinn
“einfacher” sein müssen.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Eine (partielle) Ordnungsrelation ≤ auf einer Menge M erfüllt die
Gesetze
x ≤y
x ≤y
x ≤x
und y ≤ z
und y ≤ x
impliziert x ≤ z
impliziert x = y
(Transitivität)
(Antisymmetrie)
(Reflexivität)
Die Relation < ist definiert als
x < y gdw x ≤ y und x 6= y
und > als
y > x gdw x < y
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Eine absteigende Kette aus M ist eine Folge von Elementen
x1 > x2 > x3 > . . .
Eine Ordnungsrelation auf M heißt wohlfundiert, wenn jede
absteigende Kette aus M endlich ist (und damit ein kleinstes
Element hat).
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Beispiele aus der Zahlenwelt
(N, <) ist wohlfundiert
(N, <) ist wohlfundiert für alle N ≤ N
(Z, <) ist nicht wohlfundiert
(Gegenbeispiel: 2 > 1 > 0 > −1 > −2 . . . )
(R+
0 , <) ist nicht wohlfundiert
(Gegenbeispiel: 1 > 1/2 > 1/4 > . . . )
(N × N, <) mit (a, b) ≤ (c, d) gdw a < c oder a = c und
b ≤ d ist wohlfundiert. Man nennt dies lexikographische
Erweiterung von (N, <).
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Schema der Wohlfundierten Rekursion zur Lösung von P, gegeben
eine wohlfundierte Ordnung auf Problemen der Art P:
Falls P einfach, löse P direkt.
Andernfalls: Bilde Probleme P1 , . . . , Pk mit P > Pi
Löse P1 , . . . , Pk (rekursiv)
Kombiniere diese Lösungen zur Lösung von P
Das Verfahren terminiert, weil alle so von P ausgehenden Ketten
endlich sind und die Teilprobleme irgendwann “einfach” werden.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Die vier Bestandteile der Methode: “Was ist einfach?”, “Löse
direkt ”, “Teile P auf!”, und “Kombiniere Teil-Lösungen!” muss
man sich für jede Anwendung neu überlegen.
Dabei ist die Relation < (“einfacher”) frei wählbar, nur
wohlfundiert muss sie sein.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Beispiel: Quicksort
Sortiere Liste von n Elementen aufsteigend.
Wohlfundierte Ordnung auf Listen:
`1 < `2 gdw length(`1 ) < length(`2 )
Da length(`) ∈ N, ist diese Ordnung wohlfundiert.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Beispiel: Quicksort
Sortiere Liste von n Elementen aufsteigend.
Wohlfundierte Ordnung auf Listen:
`1 < `2 gdw length(`1 ) < length(`2 )
Da length(`) ∈ N, ist diese Ordnung wohlfundiert.
Quicksort (`):
Falls ` = [] oder ` = [a]: Lösung = `.
Anderfalls:
Wähle x aus `, so dass x nicht maximal ist.
Bilde Listen `1 = [a|x ← `, a ≤ x]
`2 = [a|x ← `, x < a]
Berechne
`ˆ1 = Quicksort(`1 )
`ˆ2 = Quicksort(`2 )
Lösung =
`ˆ1 ++ `ˆ2
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Achtung: x darf nicht maximales Element in ` sein, weil dann
`1 < ` verletzt ist.
Die Listen `1 und `2 sind keine Unterstrukturen der Liste `, daher
liegt keine Strukturelle Rekursion vor.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Aufwand
l
l
l1
l11
l2
l12
l21
[a1]
l22
l2
[a2]
l22
[a3]
l22 ... 2
guter Fall
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
kritischer Fall
Universität Bielefeld
Strategien der algorithmischen Problemlösung
guter Fall:
Teile:
Rekursionstiefe:
Kombiniere:
insgesamt
kritischer Fall:
Teile:
Kombiniere:
Rekursionstiefe:
insgesamt:
Ausrechnen von Formeln
Strukturelle Rekursion
auf jeder Ebene 2 · n Schritte
log2 n Ebenen
≤ n/2 Schritte pro Ebene
3 · n · log2 n Schritte
auf Ebene i 2 · (n − i) Schritte
auf jeder Ebene 1 Schritt
n Ebenen
n−1
n
X
X
2(n − i) + 1 = n + 2 ·
i
i=0
i=1
(n + 1) · n
2
n2 + 2n Schritte
=n+2·
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Beispiel: Schnelle Multiplikation langer Zahlen
Vorüberlegung: Wir betrachten zwei n-stellige Zahlen
x = x 1 , . . . , x n , y = y 1 , . . . , yn .
A[| + |] ist der Aufwand einer Ziffern-Addition.
A[|x + y |] ≈ 2 · n · A[| + |] (Addition der Überträge nicht vergessen!)
A[|x ∗ y |] ≈ n2 · A[| ∗ |] + 2n2 · A[| + |]
Multiplikation ist also erheblich aufwendiger.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
1
2
3
7
8
Ausrechnen von Formeln
4
4
8
3
5
0
6
9
1
8
∗
7
4
8
1
1
6
0
1
7
1
0
0
Strukturelle Rekursion
7
8
9
0
5
6
1
0
2
0
0
0
0
5
0
5
0
0
Schon weil jede Ziffer im Inneren des Diagramms Resultat einer
Multiplikation ist, braucht man n2 elementare Multiplikationen.
Besser geht es nicht — oder doch?
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Wir zerlegen die Zahlen in der Mitte
x=
x1
x0
x = x1 · 10n/2 + x0
y=
y1
y0
y = y1 · 10n/2 + y0
x ·y =
(x1 · 10n/2 + x0 ) · (y1 · 10n/2 + y0 ) =
x1 · y1 · 10n + (x1 y0 + x0 y1 ) · 10n/2 + x0 y0
Jetzt haben wir 1 Mulitplikation mit Aufwand n2 durch vier
2
Multiplikationen mit Aufwand je n2 ersetzt. Nichts ist dabei
eingespart.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
x1 y1
x1 y0
x0 y1
x0 y0
+
xy
Idee: Wir können den Wert x1 y0 + x0 y1 mit nur einer
Multiplikation der Länge n/2 berechnen.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
(x0 − x1 )(y0 − y1 ) = x0 y0 − (x1 y0 + x0 y1 ) + x1 y1
Da x0 y0 und x1 y1 ohnehin berechnet werden, und Substraktionen
nur Aufwand 3 · n/2 haben, erhalten wir “billig”
(x1 y0 + x0 y1 ) = x1 y1 + x0 y0 + (x1 − x0 )(y0 − y1 )
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
x1 y1
x0 y0
x1 y1
(x1 − x0 )(y0 − y1 )
x0 y0
+
xy
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Die Teilaufgaben x1 y1 , x0 y0 , (x1 − x0 ) · (y0 − y1 ) der Länge n/2
werden nach der gleichen Methode (wohlfundiert rekursiv)
berechnet.
Wir schätzen ab A[n] ≈ 3 · A[n/2]
< n2 .
Ist dies eine signifikante Verbesserung?
Damit werden wir uns in Kapitel 5 näher beschäftigen.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Das Problem des Handlungsreisenden
Ein Vertreter der Intelligent Design Corporation will 12 deutsche
Elite-Universitäten besuchen. Die Standorte und ihre Entfernungen
(Straßenkilometer) sind in Tabelle Dist angegeben, in Bild 1 sieht
man ihre ungefähre Lage. Aber Vorsicht – Straßenkilometer sind
keine Entfernungen in Luftlinie.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Tabelle der Entfernungen
AC
Aachen
Berlin
Bielefeld
Bremen
Freiburg
Hamburg
Köln
Leipzig
München
Münster
Nürnberg
Tübingen
B
633
BI
257
390
HB
378
412
175
FB
505
819
685
730
HH
488
284
262
119
759
K
70
569
191
312
435
422
L
585
179
437
362
659
391
515
M
648
584
598
753
412
782
578
425
MS
211
466
74
171
572
271
150
438
688
N
475
437
434
580
391
609
405
278
167
506
TÜ
446
634
492
640
207
668
376
589
220
502
207
Tabelle Dist: Entfernungen in Straßenkilometern
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Eine Rundtour
HB 119
HH
284
B
257
AC
MS 74 BI
150
K
70
179
L
278
685
N
167
TÜ
207
FB
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
220
M
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Die Aufgabe
Sein Ziel ist: Eine Rundtour mit beliebigem Ausgangspunkt und
minimaler Gesamtstrecke. Jede Stadt darf nur einmal besucht
werden (weil der Vertreter sich nach seinem Auftritt an einer
Universität meistens in dieser Stadt nicht mehr blicken lassen darf).
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Vorüberlegungen
Vorüberlegung 1:
Die Länge einer Rundtour bleibt gleich, wenn wir nur den
Start/Zielort ändern. Es ist also nicht nötig, einen besten
Startpunkt zu suchen.
Wir können eine Tour ebensogut immer in Aachen oder immer in
Bielefeld beginnen lassen.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Vorüberlegung 2:
Wieviele verschiedene Rundtouren gibt es allgemein für n Städte?
Zahl der Permutationen p(n) = n ∗ (n − 1) ∗ . . . ∗ 1 = n! (1)
Zahl derTouren t(n) = p(n − 1)
(2)
Für 12 Städte t(12) = 39916800
(3)
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Strategie 1: Erschöpfende Suche
Wir berechnen alle Permutationen der Orte (ohne den festen
Startort Bielefeld)
perm [ ] = [[ ]]
(4)
perm xs = {[x : ps|ps ∈ perm (remove x xs)]|x ∈ xs]}
(5)
n
X
gesamt[x1 , ..., xn ] =
dist(xi−1 , xi ) + dist(xn , x1 )
(6)
i=2
Aus allen Touren wählen wir die kürzeste aus.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Strategie 2 : Opportunistische Suche (Greedy)
Wir fahren von jedem Ort zum nächstgelegenen, der noch nicht
besucht wurde. Sei X die Menge der Städte und z1 , z2 , ... unsere
Route. Wir definieren einfach
z1 = Bielefeld
zi
(7)
= argminx {Dist(zi−1 , x)|x ∈ X \ {z1 , . . . , zi−1 }}
(8)
Hier bedeutet argminx dasjenige x, das den Ausdruck Dist(zi−1 , x)
minimiert.
Diese Lösung ist heuristisch. Sie gibt mit wenig Aufwand eine
Antwort, aber vermutlich findet sie nicht die kürzeste Rundtour.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Ergebnisse der Strategien
Für unser Beispiel erhalten wir:
Die opportunistische Strategie ab Bielefeld liefert die in der
Karte eingetragene Rundtour. Sie ist 2690 km lang und nicht
optimal.
Von Bielefeld erst nach Bremen, das wäre besser ausgegangen!
In Aachen anfangend, hätte das verfahren vermutlich eine
bessere Tour gefunden.
Die erschöpfende Suche soll in den Übungen implementiert
werden.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Abschätzung des Rechenaufwands
Wir betrachten die Anzahl der berechnenten Routen, und die
Berechnung einer Entfernungssumme für n Städte:
Strategie 1 braucht etwa (n − 1)! ∗ n = n! Rechenschritte.
Strategie 2 braucht etwa n2 Rechenschritte.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld
Strategien der algorithmischen Problemlösung
Ausrechnen von Formeln
Strukturelle Rekursion
Das Problem des Handlungsreisenden
Erste Begegnung mit dem praktisch Unmöglichen
Unser Problem ist unter dem Namen “Traveling Salesman
Problem” (TSP) berühmt; es ist eines der meist untersuchten
Probleme der Informatik.
Man kennt keinen Algorithmus, die das Ergebnis mit einer
(in n) polynomialen Anzahl von Rechenschritten bestimmt.
Für Informatiker sind solche Probleme eine besondere
Herausforderung.
Robert Giegerich
A&D 1 Vorlesung Winter 2005/2006
Universität Bielefeld