ADS: Algorithmen und Datenstrukturen - Akuter

Werbung
ADS: Algorithmen und Datenstrukturen
Akuter Denk-Stau
Prof. Peter F. Stadler & Sebastian Will
Bioinformatik/IZBI
Institut für Informatik
& Interdisziplinäres Zentrum für Bioinformatik
Universität Leipzig
17. Oktober 2013
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
1 / 39
Ankündigungen im Netz
Anmeldung zu Übungen, Übungsaufgaben, Vorlesungsfolien, Termin- und
Raumänderungen, ...
http://www.bioinf.uni-leipzig.de
→
→
Teaching
→
Current classes
Algorithmen und Datenstrukturen 1
(http://www.bioinf.uni-leipzig.de/teaching/currentClasses/
class169.html)
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
2 / 39
Übungsaufgaben
Abzugeben sind Lösungen zu sechs Aufgabenblättern.
Termine
1
2
Ausgabe
7.11.
21.11.
28.11.
12.12.
09.01.
Abgabe
14.11.
28.11.
12.12.
09.01.
23.01.
Aufgabenblatt
3
4
5+6
Lösungen sind direkt vor Beginn der Vorlesung im Hörsaal abzugeben.
Lösungen werden bewertet und in der auf den Abgabetermin folgenden
Übungsstunde zurückgegeben.
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
3 / 39
Übungstermine
Vorläuge Termine der Übungsgruppen
Gruppe
Tag
Uhrzeit
01
Mo
17:1518:45
02
Di
7:30 9:00
03
Di
9:15 10:45
04
Di
15:1516:45
05
Mi
7:30 9:00
06
Mi
13:1514:45
07
Do
13:1514:45
08
Fr
7:30 9:00
09
Fr
13:1514:45
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
4 / 39
Übungen Anmeldung
Anmeldung für die Übungen
Für die Teilnahme an den Übungen (und damit die Anerkennung von
Übungsleistungen!) ist eine Anmeldung für eine Übungsgruppe unbedingt
erforderlich!
Freischaltung der Online-Anmeldung:
Donnerstag, 17.10., direkt nach der Vorlesung
Donnerstag, 24.10., vor der Vorlesung
http://www.bioinf.uni-leipzig.de →
Teaching
→
Current classes
→
Algorithmen und Datenstrukturen
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
5 / 39
Klausur
Termin (voraussichtlich): 06.02.2013, 11:1512:15 Uhr
Zulassungsvoraussetzungen
Erreichen von 50% der Punkte in den Übungsaufgaben
Anwesenheit in der Übung
Fähigkeit, abgegebene Lösungen an der Tafel zu erläutern
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
6 / 39
http://www.bioinf.uni-leipzig.de
→
→
Teaching
→
Current classes
Algorithmen & Datenstrukturen 1
(http://www.bioinf.uni-leipzig.de/teaching/
currentClasses/class169.html)
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
7 / 39
Inhalt
1
Einführung: Typen von Algorithmen, Komplexität von Algorithmen
2
Einfache Suchverfahren in Listen
3
Verkette Listen, Stacks und Schlangen
4
Sortierverfahren
Elementare Verfahren
Shell-Sort, Heap-Sort, Quick-Sort
Externe Sortierverfahren
5
Allgemeine Bäume und Binärbäume
Orientierte und geordnete Bäume
Binärbäume (Darstellung, Traversierung)
6
Binäre Suchbäume
7
Mehrwegbäume
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
8 / 39
Wozu das Ganze?
Algorithmen stehen im Mittelpunkt der Informatik
Entwurfsziele bei Entwicklung von Algorithmen:
1
2
3
Korrektheit Cool! Wir werden Beweise führen
Terminierung Kommt später im Studium
Ezient Doof kann's (fast) jeder
Wahl der Datenstrukturen ist für Ezienz entscheidend
Schwerpunkt der Vorlesung: Entwurf von ezienten Algorithmen und
Datenstrukturen, sowie die nachfolgende Analyse ihres Verhaltens
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
9 / 39
Wozu das Ganze?
Funktional gleichwertige Algorithmen weisen oft erhebliche
Unterschiede in der Ezienz (Komplexität) auf.
Bei der Verarbeitung soll eektiv mit den Daten umgegangen werden.
Die Ezienz hängt bei groÿen Datenmengen ab von
- internen Darstellung der Daten
- dem verwendeten Algorithmus
Zusammenhang dieser Aspekte?
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
10 / 39
Beispiel Telefon-CD
Anforderungen
700 MB Speicherplatz
40 Millionen Telefone
×
35 Zeichen (Name Ort Nummer)
1.4 GB ASCII-Text
passt nicht
Wir brauchen eine Komprimierung der Daten, und eine Möglichkeit
schnell zu suchen (Index!).
(Technische Nebenbemerkung: ausserdem ist der Speicherzugri auf
der CD sehr langsam)
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
11 / 39
Beispiel Telefon-CD
Design-Überlegungen
Verwende Datenstruktur, die die vollständige Verwaltung der Einträge
erlaubt: Suchen, Einfügen und Löschen.
ODER Weil sowieso nur das Suchen erlaubt ist:
verwende Datenstruktur, die zwar extrem schnelles Suchen in
komprimierten Daten erlaubt, aber möglicherweise kein Einfügen.
Also: Mitdenken hilft
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
12 / 39
Ezienz: Zeit und Speicher
Die Abarbeitung von Programmen (Software) beansprucht zwei
Ressourcen:
Zeit und Hardware (insbesondere: Speicher).
FRAGE: Wie steigt dieser Ressourcenverbrauch bei gröÿeren
Problemen (d.h. mehr Eingabedaten)?
Es kann sein, dass Probleme ab einer gewissen Gröÿe praktisch
unlösbar sind, weil
1
2
Ihre Abarbeitung zu lange dauern würde (z.B. länger als ein
Informatikstudium) oder
Das Programm mehr Speicher braucht, als zur Verfügung steht.
Wichtig ist auch der Unterschied zwischen internem (RAM) und externem Speicher, da
z.B. der Zugri auf eine Festplatten ca. 100.000 mal langsamer ist als ein RAM-Zugri.
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
13 / 39
Ressourcenbedarf von Algorithmen
Wesentliche Ressourcen:
Rechenzeitbedarf
Speicherplatzbedarf
Programmlaufzeit abhängig von
Eingabe für das Programm
Qualität des vom Compiler generierten Codes
Leistungsfähigkeit der Maschine, die das Programm ausgeführt
Kompliziertheit des Algorithmus, den das Programm implementiert
Maÿ für Algorithmus-Kompliziertheit: Komplexität
Rechenzeitbedarf
−→ Zeitkomplexität
−→ Platzkomplexität
Speicherplatzbedarf
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
14 / 39
Komplexität von Algorithmen
Komplexität: Maÿ für Kosten eines Algorithmus
Bedeutung: K. hängt nur vom Algorithmus ab; unabhängig von
übrigen Faktoren, die Rechenzeit und Hardwarebedarf beeinussen
Bestimmung der Komplexität
Messungen auf einer bestimmten Maschine
Aufwandsbestimmungen für idealisierten Modellrechner (Bsp.:
Random-Access-Maschine oder RAM)
Abstraktes Komplexitätsmaÿ zur asymptotischen Kostenabschätzung in
Abhängigkeit von Problemgöÿe/Eingabegröÿe n
abstrakt
≡
unabhängig von konkreter Maschine (konstanter Faktor)
asymptotisch
≡
muss nur für groÿe Probleme gelten
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
15 / 39
Best Case, Average Case, Worst Case
Komplexität hängt ab
von
Eingabegröÿe; z.B. Anzahl der Datensätze, über die gesucht
werden soll
ausserdem: von weiteren Eigenschaften der Eingabe; z.B.
Reihenfolge der Datensätze (unsortiert grob vorsortiert sortiert)
Meist Abschätzung der worst case Komplexität, d.h. unter Annahme
der für den Algorithmus ungünstigsten Eingabe der jeweiligen Gröÿe
(z.B. bestimmte Reihenfolge)
Analyse der average case Komplexität oft viel schwerer;
best case
weniger interessant.
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
16 / 39
Obere Abschätzung asymptotischer Kosten
Meist Abschätzung oberer Schranken: Groÿ-Oh-Notation
Beispiel: Die asymptotische Komplexität
( ) ei= n2
T n
nes Algorithmus ist durch die Funktion f (n )
0 und
nach oben beschränkt, wenn es Konstanten n
c
>0
gibt, so daÿ für alle Werte von n
> n0
gilt:
( ) ≤ c · n2
T n
2 )", in Zeichen T (n) ∈
2
2
O (n ) oder einfach T (n ) = O (n ) (oder im Infor-
cn2
T(n)
man sagt T (n ) ist in O (n
matikerslang: der Algo hat quadratische Komplexität).
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
n
17. Oktober 2013
17 / 39
Allgemeine Denition
Jetzt wird's ernst
Wir denieren eine Menge O (f
)
aller Funktionen der Grössenordnung f ,
d.h. aller Funktionen die durch f nach oben beschränkt sind.
Denition: Die Klasse
( )
O f
der Funktionen von der Grössenordnung f ist
( ) = {g |∃c > 0∃n0 > 0 : ∀n ≥ n0 : g (n) ≤ cf (n)}
O f
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
18 / 39
Beispiele für Groÿ-Oh Denition
( ) = {g |∃c > 0∃n0 > 0 : ∀n ≥ n0 : g (n) ≤ cf (n)}
O f
Beispiel.
( ) = 6n4 + 3n2 − 7n + 42 log n + sin cos(2n)
T n
( ) ∈ O (n4 )
Behauptung: T n
4
3
2
Für n ≥ 1 gilt: n ≥ n ≥ n ≥ n ≥ logn und
4
n ≥ 1 ≥ sin(irgendwas). Also ist
(6 + 3 + 7 + 42 + 1)n4 auf jeden Fall grösser als T (n).
Beweis:
Damit folgt die Behauptung aus
∀n ≥ 1 : T (n) < 59f (n).
Alles klar?
Dann: Warum gilt
( ) ∈ O (n) ⇒ g (n) ∈ O (n log n) ⇒ g (n) ∈ O (n2 )?
g n
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
19 / 39
Untere Schranken
So wie T (n )
( ) ∈ Ω(f )
T n
g
∈ Ω(f )
∈ O (f )
eine obere Schranke ausdrückt, beschreibt
eine untere Schranke.
bedeutet, dass g (asymptotisch und in der Grössenordnung)
mindestens so stark wächst wie f .
Denition:
Ω(f ) = {h|∃c > 0∃n0 > 0 : ∀n > n0 : h(n) ≥ cf (n)}
Anmerkung: alternativ kann man denieren
Ω(f ) = {h|∃c > 0 : ∃ unendlich viele
n
: h(n) ≥ cf (n)}
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
20 / 39
Exakte Schranke (d.h., nach oben
Gilt sowohl g
∈ O (f )
als auch g
∈ Ω(f )
und
unten)
schreibt man g
∈ Θ(f ).
Also:
∈ Θ(f ) bedeutet: die Funktion g verläuft fuer hinreichend
Bereich [c1 f , c2 f ] mit geeigneten Konstanten c1 und c2 .
g
[Formale Denition zur Übung analog zu O (f
Satz: Ist
( )
T n
)
und
grosse n im
Ω(f )]
ein Polynom vom Grad p , dann ist T (n )
∈ Θ(np )
Wachtumsordnung = höchste Potenz
BEWEIS
→
TAFEL
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
21 / 39
Wichtige Wachstumsfunktionen
O
(1)
(
O logn
)
( )
O n
(
O n
konstante Kosten
logarithmisches Wachstum
lineares Wachstum
log n ) n log n -Wachstum
( 2)
O n
3
O (n )
quadratisches Wachstum
kubisches Wachstum
n
O (2 ) exponentielles Wachstum
( !)
O n
Wachstum der Fakultät
n
! = 1 · 2 · 3 · · · · · (n − 1) · n
HAUSÜBUNG: Rechnen Sie das mal aus für
n
=
10, 100, 1000, 10000, 100000, 1000000. Bei welcher Platz-
komplexität passt das jeweils noch auf ihren Laptop
(z.B. unter Annahme eines konstanten Faktors von 4
Bytes)?
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
22 / 39
Problemgröÿe bei vorgegebener Zeit
Annahme n
=1
in 1ms . . .
2
1000
60000
2
2
n
1000
60000
3600000
140
4893
20000
31
244
1897
10
39
153
9
15
21
n
2
log n
2
3
n
n
n
2
2
3600000
log n
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
23 / 39
Rechengeschwindigkeit
Welche Problemgröÿe kann bei verschiedenen Kostenfunktionen mit
Rechnern verschiedener Geschwindigkeit bearbeitet werden?
Zeitbedarf T (n ) bei gegebener Rechengeschwinding, Tk (n ) bei k -facher
Geschwindigkeit
Bei gleicher Rechenzeit: T (n )
= KTk (n)
Alternativ:
Rechner #2 löst Problem der Gröÿe nk
( ) = Tk (nk ) = kT (nk )
−1 (k (T (n)))
Lösung: nk = T
T n
Beispiele: (1) T (n )
= nm ,
(2) T (n )
= 2n
→
Tafel
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
24 / 39
Komplexitätsklassen
linear-beschränkt, T
∈ O (n )
polynomial-beschränkt, T
∈ O (nk )
exponentiell-beschränkt, T
∈ O (αn )
Exponentiell-zeitbeschränkte Algorithmen sind im Allgemeinen, d.h. für
groÿe n , nicht nutzbar. (Vergleiche das gerade betrachtete Beispiel
( ) = 2n )
T n
Probleme, für die kein polynomial-zeitbeschränkter Algorithmus existiert,
heissen deshalb intractable (≈ unlösbar, hart).
(umgekehrt: polynomial-beschränkt
≡
ezient / ezient lösbar)
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
25 / 39
Rechenregeln für die Zeitkomplexität I:
Mit folgenden Regeln können sie die Komplexität eines Algorithmus (nach
oben) abschätzen:
Elementare Operationen:
O
(1)
z.B. Zuweisungen, 32/64bit-Arithmetik, Ein-/Ausgabe, etc.
Fallunterscheidungen
O
(1)
Schleife Produkt aus Anzahl der Schleifendurchläufe mit Kosten der
teuersten Schleifenausführung
Summenregel: Das Programm
P
1
führe die Programmteile P
1
hintereinander aus. Die Komplexitäten von P
2
und P
2
und P
seien
1 (n) ∈ O (f (n)) und T2 (n) ∈ O (g (n)). Die Komplexität von P
T
wird
berechnet nach der Summenregel
1 (n) + T2 (n) ∈ O
T
max{f (n ), g (n )}
.
Beispiel:
x=0;
for (i=1; i<=n; i++) { x=x+i; }
/* P1 */
/* P2 */
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen 17. Oktober 2013
26 / 39
Rechenregeln für die Zeitkomplexität II:
Produktregel: Das Programm
P
1
entstehe durch Einsetzen von P
seien T
in
2
1
2
1 (n) ∈ O (f (n)) und T2 (n) ∈ O (g (n)). Die Komplexität von P
der inneresten Schleife von P . Die Komplexitäten von P
und P
wird berechnet nach der Produktregel
1 (n) · T2 (n) ∈ O (f (n)g (n)).
T
Beispiel:
for (i=1; i<=n; i++) {
for (j=1; j<=n; j++) {
x=x+i*j;
}
}
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
27 / 39
Rechenregeln für die Zeitkomplexität III:
Rekursive Prozeduraufrufe: Produkt aus Anzahl der rekursiven
Aufrufe mit Kosten der teuersten Prozedurausführung.
Beispiele:
1 int sum(n) {
if (n<=1) return 1;
return n+sum(n-1);
}
2 int sumsum(n) {
if (n==0) return 1;
return sum(n)+sumsum(n-1);
}
Schätzen sie die Komplexitäten von
sum(n)
und
sumsum(n)
mit Hilfe der Rechenregeln ab.
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
28 / 39
Maximale Teilsumme
Tag
∆
1
2
3
4
5
6
7
8
9
10
+5
-6
+4
+2
-5
+7
-2
-7
+3
+5
int maxSubSum( int[] a) {
int maxSum = 0;
for( i=0; i<a.length; i++)
for( j=i; j<a.length; j++) {
int thisSum =0;
for (int k = i; k<=j; k++)
thisSum += a[k];
if(thisSum>maxSum) maxSum=thisSum;
}
return maxSum;
}
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
29 / 39
Maximale Teilsumme: Analyse
n =a.length
Innerste Schleife
for (k=i; k<=j; k++)
Mittlere Schleife
for (j=i; j<n; j++)
j − i + 1 mal durchlaufen fuer jedes i , j .
j − i + 1 Aktionen
→ 1 + 2 + 3 + . . . n − i = (n − i )(n − i + 1)/2 Aktionen
jeweils
for (i=0; i<n; i++)
äuÿere Schleife
aufsummieren ueber den Aufwand des Durchlaufes für jedes
Beispiel
T (n )
i
n = 32 5984 Additionen
=
=
j
n−1 X
n−1 X
X
i =0 j =i k =i
n−1
X
1=
n−1 X
n−1
n−1 X
n −i
X
X
(j − i + 1) =
l
j =i l =1
j =i j =i
(n − i )(n − i + 1)/2 =
n
X
k (k + 2)/2 = n3 /6 + n2 /2 + n/3
i =0
k =1
2
3
2
k =1 k = n /3 + n /2 + n/6 (wie sieht man das? → Tafel)
Pn
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
30 / 39
Versteckte Zeitkomplexität
Beispiel: Fibonacci Zahlen 0, 1, 1, 2, 3, 5, 8, 13, 21, . . .
Denition
0 = 0, F1 = 1, Fn = Fn−1 + Fn−2
F
für n
> 1.
1 int fibE (int n) {
if (n <= 0) return 0;
else if (n ==1) return 1;
else return fibE(n-2) + fibE(n-1)
}
fibE(n)
berechnet Fn , aber exponentieller Aufwand!
2 int fibL (int n, int f1, int f2) {
if (n <=0) return 0;
else if (n==1) return f1+f2;
else return fibL(n-1,f2+f1,f1)
}
fibL(n,1,0)
z.B.
berechnet Fn mit linearem Aufwand
fibL(4,1,0)=fibL(3,1,1)=fibL(2,2,1)=fibL(1,3,2)=5
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
31 / 39
Versteckte Platzkomplexität am Beispiel
n!
int fakL(int n) {
if(n<=1) return 1;
else return n*fakL(n-1);
}
fakL(n) −→ n!
mit linearem Speicheraufwand
Ω(n)
int fakK(int n,int a) {
if(n<=1) return a;
else return fakK(n-1,n*a);
}
fakK(n,1) −→ n!
mit konstantem Speicheraufwand
Ω(1)
Bessere Abschätzung: Wie waechst der Aufwand bei der Multiplikation grosser Zahlen?
Was ist der Speicheraufwand für
n
und für
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
n
!
?
17. Oktober 2013
32 / 39
Multiplikation für Fortgeschrittene
Wie in der Schule:
5432*1995
5432
48888
48888
27160
------10836840
=⇒ O (`2 )
für
`-stellige
Zahlen.
Besser:
(100A + B ) × (100C + D ) = 10000AC + 100(AD + BC ) + BD
Nach AD
+ BC = (A + B ) × (C + D ) − AC − BD ,
nur noch 3
Multiplikationen von Zahlen der halben Länge:
( ) = 3T (n/2),
T n
wobei der Aufwand für die Addition vernachlässigt wird.
Lösung: T (n )
= nlog2 3 ≈ n1.585 n2
Für groÿe Zahlen geht's also intelligenter als in der Schule!
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
33 / 39
Noch ein paar Beispiele
Exponentielles Wachstum:
( + 1) = aT (n),
T n
daher . . .
( ) = aT (n − 1) = a2 T (n − 2) = ak T (n − k )
= an T (0) = 2log2 an
T n
= log2 a
Skalengröÿe k
Fibonacci-Zahlen: Binetsche Formel
Fn
mit A
= (1 +
√
5)/2 und B
√
= (An − B n )/ 5
√
= (1 − 5)/2.
√
= (1/ 5)An [1 − (B /A)n ]
√
√
(B /A)n = (−1)n [( 5 − 1)/( 5 + 1)]n → 0
Umschreiben: Fn
Für groÿe n :
Daher Fn
Fn
∈
< cAn
für hinreichend groÿe n , d.h.
n
O (A ). Genaugenommen sogar
Fn
∈ Θ(An )
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
34 / 39
Das Mastertheorem
Allgemeines Theorem zur Lösung von Funktionalgleichungen
(Rekursionsgleichungen) der Form
( ) = aT
T n
n
b
+ g (n),
Warum können wir i.d.R.
T
a
≥ 1, b > 1
(1) = 1
annehmen?
Funktionalgleichung beschreibt algorithmische Strategie
Divide-and-Conquer:
Zerlege Gesamtproblem in
Für Gesamtproblem löse
b gleich grosse Teilprobleme.
a solche Teilprobleme.
Für Zerlegung und Kombination der Teillösungen entstehen jeweils
Overhead-Kosten
g (n).
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
35 / 39
Das Mastertheorem Polynomialer Overhead
Es gibt mehrere Lösungen je nach Verhalten von g (n ).
Sei jetzt g (n ) polynomial, d.h. g (n )
( ) = aT
T n
n
b
= Θ(nk ):
+ Θ(nk ),
a
≥ 1, b > 1
Dann unterscheide 3 Fälle:

Θ(nk )



Θ(nk log n)
T (n ) =



Θ(nlogb (a) )
falls a
< bk
falls a
= bk
falls a
> bk
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
36 / 39
Das Mastertheorem Beispiele
Sei wieder g (n ) polynomial, g (n )
Setze k
a
=2
und b
=3
= Θ(nk ).
und betrachte Beispiele für a
( ) = 8T n3 + Θ(n2 )
⇒
T n
( ) = 9T n3 + Θ(n2 )
⇒
T n
a
=8
T n
a
=9
T n
= 10
T n
( ) = 10T n3 + Θ(n2 )
Zur Erinnerung:
⇒
n
<
=
>
o
n
k.
( ) = Θ(n2 )
( ) = Θ(n2 log2 n)
( ) = Θ(nlog3 10 )
T n

Θ(nk )



Θ(nk log n)
T (n ) =



Θ(nlogb (a) )
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
falls a
< bk
falls a
= bk
falls a
> bk
17. Oktober 2013
37 / 39
Das Mastertheorem allgemein
Setze u
:= logb (a).
u
(Idee: die Fälle scheiden sich an n )
Im Fall ohne Overhead-Kosten, d.h. g (n )
= 0,
gilt T (n )
= Θ(nu ).
( vgl. Analyse des verbesserten Multiplikationsverfahrens / Übung).
Allgemeine Lösung
( ) = Θ(nu ),
T n
falls g (n )
( ) = Θ(nu log n),
T n
( ) = Θ(g (n)),
für ein > 0
T n
= O (nu− )
falls g (n )
falls g (n )
für ein
>0
= Θ(nu )
= Ω(nu+ )
und ag (
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
n
b)
≤ cg (n)
17. Oktober 2013
38 / 39
Zusammenfassung
Komplexität / Ezienz
= wesentliche Eigenschaft von Algorithmen
meist asymptotische Worst-Case-Abschätzung in Bezug auf
Problemgröÿe n
Unabhängigkeit von konkreten Umgebungsparametern (Hardware,
Betriebsystem, ...)
asymptotisch schlechte Verfahren können bei kleiner Problemgröÿe
ausreichen
wichtige Klassen: O (1), O (log n ), O (n ), O (nlogn ), O (n
2 ), . . . , O (2n )
zu gegebener Problemstellung gibt es oft Algorithmen mit stark
unterschiedlicher Komplexität
unterschiedliche Lösungsstrategien
Raum/Zeit-Tradeo : Zwischenspeichern von Ergebnissen statt
mehrfacher Berechnung
Abschätzung der Komplexität aus Programmfragmenten nach
Rechenregeln
P.F. Stadler & S. Will (Bioinf, Uni LE) ADS: Algorithmen und Datenstrukturen
17. Oktober 2013
39 / 39
Herunterladen