2. Kapitel: Komplexität und Komplexitätsklassen

Slides:



Advertisements
Ähnliche Präsentationen
Christian Scheideler SS 2009
Advertisements

Knapsack & Bin Packing Sebastian Stober
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Eine dynamische Menge, die diese Operationen unterstützt,
Programmierung 1 - Repetitorium
Schwierigkeit von Aufgabenstellungen
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Kontextfreie Grammatiken
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Suche in Texten (Stringsuche )
G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik.
3. Kapitel: Komplexität und Komplexitätsklassen
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
5. Sortier-Algorithmen Vorbemerkungen:
Einführung in Berechenbarkeit und Formale Sprachen
Einige entscheidbare bzw. rekursiv aufzählbare Sprachen
Verifizieren versus Berechnen
Algorithmen und Komplexität
Dynamische Programmierung (2) Matrixkettenprodukt
Funktionenklassen zur Messung der Komplexität
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-1 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Semantik von Prolog & Unifikation
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.
Algorithmische Geometrie
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/ /23.1.
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Komplexität von Algorithmen
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Informatik III Christian Schindelhauer Wintersemester 2006/07
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Das Traveling Salesman Problem (TSP)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Analyse der Laufzeit von Algorithmen
Institut für Informationssysteme Technische Universität Braunschweig Institut für Informationssysteme Technische Universität Braunschweig Verdrängung von.
Mergesort.
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
 Präsentation transkript:

2. Kapitel: Komplexität und Komplexitätsklassen Komplexität, O-Notation Relevante Eigenschaften von Algorithmen: Korrektheit, Terminierung, Komplexität Maße für Komplexität: benötigter Speicherplatz, benötigte Rechenzeit Schwierigkeit: abhängig von Rechner, Programmiersprache

Möglichkeit 1: Definition eines idealisierten Modellrechners => RAM (random access machine) Befehlssatz ähnlich Assembler (Laden, Speichern, arithmetische Verknüpfung von Registerinhalten, Sprünge), unendliche Menge von Speicherzellen, die natürliche oder reelle Zahlen speichern, Speicherplatz => Zahl der benötigten RAM-Zellen Laufzeit => Zahl der ausgeführten RAM-Befehle Möglichkeit 2: Genaue Ermittlung bestimmter die Laufzeit charakterisierender Parameter (Beispiel: Sortieren -> Anzahl der Vergleichsoperationen)

Hier: keine Formulierung der Alg. als RAM-Programme, Abschätzung der Laufzeit mit Schwerpunkt Wachstum der Laufzeit in Abhängigkeit von Eingabegröße Komplexität abhängig von Eingabegröße. Einheitskostenmaß: nur Anzahl der Daten berücksichtigt (etwa Anzahl zu sortierender Zahlen) log. Kostenmaß: auch Größe der Daten relevant (etwa Länge von Zahlen im Binärcode) worst case, average case, best case Analysen, amortisierte Kosten In der Regel genügt die Angabe der Größenordnung der Komplexität, wobei es auf konstante Faktoren nicht ankommt.

O-Notation: Sei f: N -> R+ eine Funktion. Wir definieren: O(f) = {g | $ c > 0 : $ n0 > 0 : " n >= n0: g(n) <= cf(n)} Beispiel: 3n4 + 5n3 + 7 log n Î O(n4), denn 3n4 + 5n3 + 7 log n < 3n4 + 5n4 + 7n4 = 15 n4 für n >= 1. Wähle also c = 15, n0 = 1. In O(n4) steht n4 für die Funktion, die n auf n4 abbildet. Häufig schreibt man auch h = O(n4) statt h Î O(n4) O macht Abschätzung nach oben, nach unten: W W(f) = {g | $ c > 0 : $ n0 > 0 : " n>= n0: g(n) >= cf(n)}

Alternativdefinition Ottmann/Widmayer: W(f) = {g | $ c > 0 : $ unendlich viele n: g(n)>= cf(n)} Beispiel: f(n) = 1 falls n gerade, n2 sonst. Originaldefinition liefert f = W(1), Alternativdefinition f = W(n2). Abschätzung von oben und unten (exakte Schranke) Q(f) = O(f) Ç W(f) g aus Q(f) bedeutet also: die Funktion g verläuft ab einem Anfangswert n0 im Bereich [c1f,c2f] für geeignete Konstanten c1, c2.

Berechnung der (worst- case- ) Zeitkomplexität Elementare Operationen (Zuweisung, Ein-/ Ausgabe) : O ( l ) Summenregel: T1 ( n ) und T2 ( n ) seien die Laufzeiten zweier Programmfragmente P1 und P2 ; es gelte: T1 ( n )  O (f ( n ) ) und T2 ( n )  O ( g ( n ) ). Für die Hintereinanderausführung von P1 und P2 ist dann T1 ( n ) + T2 ( n )  O ( max ( f ( n ), g ( n ) ) ) Produktregel: z. B. für geschachtelte Schleifenausführung von P1 und P2 T1 ( n ) * T2 ( n )  O ( f ( n ) * g ( n ) )

Fallunterscheidung: Kosten der Bedingungsanweisung ( O ( l ) ) + Kosten der längsten Alternative Schleife: Produkt aus Anzahl der Schleifendurchläufe mit Kosten der teuersten Schleifenausführung Rekursive Prozeduraufrufe: Produkt aus Anzahl der rekursiven Aufrufe mit Kosten der teuersten Prozedurausführung

Zeitkomplexitätsklassen Drei zentrale Zeitkomplexitätsklassen werden unterschieden: Algorithmus A heißt: linear-zeitbeschränkt fA  O ( n ) polynomial-zeitbeschränkt  k  N, so daß fA  O ( nk ) . exponentiell-zeitbeschränkt  k  N , so daß fA  O ( kn ).

Komplexitätsklassen P und NP P: Die Menge aller Sprachen (Probleme), die ein deterministischer Automat in Polynomialzeit (O(P(n)) akzeptiert. NP: Die Menge aller Sprachen (Probleme), die ein nicht-deterministischer Automat in Polynomialzeit löst. (Beispiel SAT)

Definition: Nichtdeterminismus Algorithmus A heißt nichtdeterministisch, wenn A das Sprachelement OR (in beliebiger Anzahl) enthält: OR (Anw1, Anw2) bedeutet, daß entweder die Anweisung Anw1 oder die Anweisung Anw2 ausgeführt wird. Die Auswahl zwischen den beiden Anweisungen ist willkürlich.

P und NP als Wortproblem Es sei A ein Algorithmus und die Eingabe von A ein Element aus * für ein Alphabet . Für jedes Eingabewort w * sei s(w) = Anzahl der Schritte bis zur Terminierung sA(n) = maximale Schrittzahl, wobei sA: 0 -> 0 mit sA(n) = max {s(w)| mit w  * , |w| =n}

Definition: deterministischer und nichtdeterministischer Algorithmus Ein deterministischer Algorithmus akzeptiert eine Sprache L in der Zeit O(f(n)), wenn der A. für jedes beliebige Wort w innerhalb der Zeitschranke f(|w|] entscheidet, ob w  L gilt oder nicht. Ein nichtdeterministischer Algorithmus akzeptiert eine Sprache L in der Zeit O(f(n)), wenn er für jedes Wort der Sprache L, das die Länge n besitzt, in O(f(n)) Schritten feststellt, dass das Wort zu der Sprache gehört. CL heisst charakteristische Funktion von L  * , wenn TRUE falls w  L CL (w) = FALSE falls w  L

Definition: Eine Menge, Sprache oder ein Problem L heißt polynomial-zeitbeschränkt, wenn die charakteristische Funktion CL polynomial-zeitberechenbar ist. Definition: P = { L  * : L polynomial-zeitbeschränkt } heißt die Klasse der pzb-Sprachen. NP = { L  * : L nichtdeterministisch polynomial-zeitbeschränkt } heißt die Klasse der npzb- Sprachen. P = { f: *  * und f polynomial-zeitberechenbar } heißt die Klasse der pzb-Funktionen

NP = { f: .  . und f nichtdeterministisch NP = { f: *  * und f nichtdeterministisch polynomial-zeitberechenbar } heißt die Klasse der npzb-Funktionen. Definitionen: Seien L, L‘  * a) L‘ heißt polynomial reduzierbar auf L dund wenn es existiert eine pzb-Funktion f: *  * mit:  w  * w  L‘ f ( w )  L b) L heißt NP-schwierig dund wenn für jedes L‘ NP gilt: L‘ ist polynomial reduzierbar auf L. c) L heißt NP-vollständig dund wenn L  NP und L ist NP-schwierig.

Lösungsstrategien/Arten von Algorithmen Kleine N: Beschränkte Eingabegrößen Teile-und-Herrsche: Aufteilung eines Problems in Teilprobleme (die rekursiv gelöst werden können) Probabilistische A.: Optimierung der durchschnittlichen Kosten durch Annahmen über statistische Eigenschaften der Eingabe-größen (z.B. Randomisierung, Wahrscheinlichkeitshäufung) Approximierung: Errechnung einer hinreichend guten Lösung in einem beschränkten Suchraum (z.B. durch Heuristiken) Greedy Algorithms: Errechnung lokaler Optima Dynamische Programmierung: Aufteilung eines Problems in Teilprobleme und Wiederverwendung von Lösungen für Teilprobleme

Leistungsverhalten bei kleiner Eingabegröße Asymptotische Komplexität gilt vor allem für große n bei kleineren Problemen haben konstante Parameter wesentlichen Einfluß  Verfahren mit besserer ( asympt. ) Komplexität kann schlechter abschneiden als Verfahren mit schlechter Komplexität T ( n ) Bereiche von n mit günstiger Zeitkomplexität 186182 log2 n n > 2048 1000 n 1024 <= n <= 2048 100 n log 2 n 59 <= n <= 1024 10 n2 10 <= n <= 58 n3 n = 10 2n 2 <= n <= 9