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