Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

G.Heyer Algorithmen und Datenstrukturen 1 2. Kapitel: Komplexität und Komplexitätsklassen Komplexität, O-Notation Relevante Eigenschaften von Algorithmen.

Ähnliche Präsentationen


Präsentation zum Thema: "G.Heyer Algorithmen und Datenstrukturen 1 2. Kapitel: Komplexität und Komplexitätsklassen Komplexität, O-Notation Relevante Eigenschaften von Algorithmen."—  Präsentation transkript:

1 G.Heyer Algorithmen und Datenstrukturen 1 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

2 G.Heyer Algorithmen und Datenstrukturen 2 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)

3 G.Heyer Algorithmen und Datenstrukturen 3 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.

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

5 G.Heyer Algorithmen und Datenstrukturen 5 Alternativdefinition Ottmann/Widmayer: (f) = {g | c > 0 : unendlich viele n: g(n)>= cf(n)} Beispiel: f(n) = 1 falls n gerade, n 2 sonst. Originaldefinition liefert f = (1), Alternativdefinition f = (n 2 ). Abschätzung von oben und unten (exakte Schranke) (f) = O(f) (f) g aus (f) bedeutet also: die Funktion g verläuft ab einem Anfangswert n 0 im Bereich [c 1 f,c 2 f] für geeignete Konstanten c 1, c 2.

6 G.Heyer Algorithmen und Datenstrukturen 6 Berechnung der (worst- case- ) Zeitkomplexität Elementare Operationen (Zuweisung, Ein-/ Ausgabe) : O ( l ) Summenregel: T 1 ( n ) und T 2 ( n ) seien die Laufzeiten zweier Programmfragmente P 1 und P 2 ; es gelte: T 1 ( n ) O (f ( n ) ) und T 2 ( n ) O ( g ( n ) ). Für die Hintereinanderausführung von P 1 und P 2 ist dann T 1 ( n ) + T 2 ( n ) O ( max ( f ( n ), g ( n ) ) ) Produktregel: z. B. für geschachtelte Schleifenausführung von P 1 und P 2 T 1 ( n ) * T 2 ( n ) O ( f ( n ) * g ( n ) )

7 G.Heyer Algorithmen und Datenstrukturen 7 q Fallunterscheidung: Kosten der Bedingungsanweisung ( O ( l ) ) + Kosten der längsten Alternative q Schleife: Produkt aus Anzahl der Schleifendurchläufe mit Kosten der teuersten Schleifenausführung q Rekursive Prozeduraufrufe : Produkt aus Anzahl der rekursiven Aufrufe mit Kosten der teuersten Prozedurausführung

8 G.Heyer Algorithmen und Datenstrukturen 8 Zeitkomplexitätsklassen Drei zentrale Zeitkomplexitätsklassen werden unterschieden: Algorithmus A heißt: linear-zeitbeschränktf A O ( n ) polynomial-zeitbeschränkt k N, so daß f A O ( n k ). exponentiell-zeitbeschränkt k N, so daß f A O ( k n ).

9 G.Heyer Algorithmen und Datenstrukturen 9 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)

10 G.Heyer Algorithmen und Datenstrukturen 10 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.

11 G.Heyer Algorithmen und Datenstrukturen 11 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 s A (n) = maximale Schrittzahl, wobei s A : 0 -> 0 mit s A (n) = max {s(w)| mit w *, |w| =n}

12 G.Heyer Algorithmen und Datenstrukturen 12 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. C L heisst charakteristische Funktion von L *, wenn TRUE falls w L C L (w) = FALSE falls w L

13 G.Heyer Algorithmen und Datenstrukturen 13 Definition: Eine Menge, Sprache oder ein Problem L heißt polynomial- zeitbeschränkt, wenn die charakteristische Funktion C L 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

14 G.Heyer Algorithmen und Datenstrukturen 14 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.

15 G.Heyer Algorithmen und Datenstrukturen 15 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

16 G.Heyer Algorithmen und Datenstrukturen 16 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 log 2 n n > n 1024 <= n <= n log 2 n 59 <= n <= n 2 10 <= n <= 58 n 3 n = 10 2 n 2 <= n <= 9


Herunterladen ppt "G.Heyer Algorithmen und Datenstrukturen 1 2. Kapitel: Komplexität und Komplexitätsklassen Komplexität, O-Notation Relevante Eigenschaften von Algorithmen."

Ähnliche Präsentationen


Google-Anzeigen