• Keine Ergebnisse gefunden

Algorithmen und Komplexität

N/A
N/A
Protected

Academic year: 2022

Aktie "Algorithmen und Komplexität"

Copied!
59
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen und Komplexität

Stephan Schulz

stephan.schulz@dhbw-stuttgart.de Jan Hladik

jan.hladik@dhbw-stuttgart.de

(2)

Ziele Vorlesung 1

I Kennenlernen (oder Wiedererkennen)

I Ubersicht ¨uber die Vorlesung¨

I Was ist ein Algorithmus?

I Beispiel: Euklid

(3)

Vorstellung

I Stephan Schulz

I Dipl.-Inform., U. Kaiserslautern, 1995

I Dr. rer. nat., TU M ¨unchen, 2000

I Visiting professor, U. Miami, 2002

I Visiting professor, U. West Indies, 2005

I Gastdozent (Hildesheim, Offenburg, . . . ) seit 2009

I Praktische Erfahrung: Entwicklung von Flugsicherungssystemen

I System engineer, 2005

I Project manager, 2007

I Product Manager, 2013

I Professor, DHBW Stuttgart, 2014

Research: Logik & Deduktion

(4)

Introduction

I Jan Hladik

I Dipl.-Inform.: RWTH Aachen, 2001

I Dr. rer. nat.: TU Dresden, 2007

I Industrieerfahrung: SAP Research

I Offentlich gef ¨orderte Forschungsprojekte¨

I Zusammenarbeit mit SAP-Produktgruppen

I Betreuung von Bachelor- und Master-Studenten, Doktoranden

I Professor: DHBW Stuttgart, 2014

Forschung: Semantic Web, Semantische Technologien, Schlussfolgerungsverfahren

(5)

Semester ¨ubersicht

I Was sind Algorithmen?

I Wie kann man die Komplexit ¨at von Algorithmen beschreiben?

I Platzbedarf

I Zeitbedarf

I Mathematische Werkzeuge zur Komplexit ¨atsanalyse

I Z.B. Rekurrenzrelationen

I Klassifikation von Algorithmen

I Z.B. Brute Force, Greedy, Divide&Conquer, Dynamic Programming

I Ans ¨atze zur Algorithmenentwicklung

I Algorithmen und Datenstrukturen

I Arrays

I Listen

I Suchb ¨aume

I Tries

I Hashes

(6)

Sonstiges zum Kurs

I Begleitendes LaborAngewandte Informatik

I Algorithmentwicklung in C

I Webseiten zum Kurs:

http://wwwlehre.dhbw-stuttgart.de/˜sschulz/algo2015.html http://wwwlehre.dhbw-stuttgart.de/˜hladik/Algorithmen/

I Folienskript zur Vorlesung

I Aufgaben zum Labor

I Musterl ¨osungen

(7)

Literatur

I Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein:Introduction to Algorithms

I 3. Auflage 2009, moderner Klassiker (der Titel l ¨ugt)

I Robert Sedgewick, Kevin Wayne:Algorithms

I 4. Auflage 2011, moderner Klassiker

I Ahnlich auch als¨ Algorithms in C/Java/C++

I Donald Knuth:The Art of Computer Programming

I Die Bibel, seit 1962, Band 1 1968 (3. Auflage 1997), Band 4a 2011, Band 5 geplant f ¨ur 2020 (!)

I Niklaus Wirth:Algorithmen und Datenstrukturen Deutschsprachiger Klassiker, 1991

(8)

Informelle Definition: Algorithmus

I Ein Algorithmus ist ein Verfahren zur L ¨osung eines Problems oder einer Problemklasse

I Ein Algorithmus. . .

I . . . ¨uberf ¨uhrt eine Eingabe in eine Ausgabe

I . . . besteht aus endlich vielen Einzelschritten

I . . . ist auch f ¨ur Laien durchf ¨uhrbar

I Jeder Einzelschritt ist wohldefiniert, ausf ¨uhrbar, und terminiert nach endlicher Zeit

I Gelegentliche Forderung: Der Algorithmus terminiert (problematisch)

I Formalisierung: z.B. Turing-Maschine

(9)

Der Begriff Algorithmus

Mohammed al-Chwarizmi

I Mathematiker, Astronom, Geograph

I geboren ca. 780 nahe des Aralsees (heute Usbekistan)

I gestorben ca. 850 in Bagdad

I zahlreiche Werke

I Algoritmi de numero Indorum

I Rechenverfahren

I Algebra

(10)

Einige Klassen von Algorithmen

I Suchalgorithmen

I Schl ¨ussel in Datenbank

I Pfad in Umgebung/Landkarte/Graph

I Beweis in Ableitungsraum

I Sortierverfahren

I Total

I Topologisch

I Optimierungsverfahren

I Spielpl ¨ane

I Kostenminimierung

I Komprimierung

I Lossy

I Lossless

I Mathematische Algorithmen

I Faktorisierung

I Gr ¨oßter gemeinsamer Teiler

(11)

Beispiel: Euklids GGT-Algorithmus

I Problem: Finde den gr ¨oßten gemeinsamen Teiler (GGT) (greatest common divisor, GCD) f ¨ur zwei nat ¨urliche Zahlenaundb.

I Also: Eingabea,b∈N

I Ausgabe:c ∈Nmit folgenden Eigenschaften:

I cteiltaohne Rest

I cteiltbohne Rest

I cist die gr ¨oßte nat ¨urliche Zahl mit diesen Eigenschaften

I Beispiele:

I ggt(12,9) =3

I ggt(30,15) =15

I ggt(25,11) =1

(12)

Beispiel: Euklids GGT-Algorithmus

I Berchnung des GGT in Euklids Worten:

Wenn CD aber AB nicht misst, und man nimmt bei AB, CD abwechselnd immer das kleinere vom gr ¨oßeren weg, dann muss (schließlich) eine Zahl

¨ubrig bleiben, die die vorangehende misst.

Elemente, Buch VII, Behauptung 2

Euklid von Alexandria (ca.

3 Jh. v. Chr.), Elemente

(13)

Beispiel: Euklids GGT-Algorithmus

Euklids Algorithmus moderner:

I Gegeben: Zwei nat ¨urliche Zahlenaundb

I Wenna=b: Ende, der GGT ista

I Ansonsten:

I Seic die absolute Differenz vonaundb.

I Bestimme den GGT vonc und dem kleineren der beiden Werteaundb

DerPharos von Alexandria, Bild: Emad Victor Shenouda

(14)

Ubung: Euklids GGT-Algorithmus ¨

I Algorithmus

I Gegeben: Zwei nat ¨urliche Zahlenaundb

I Wenna=b: Ende, der GGT ista

I Ansonsten: Seic die absolute Differenz vonaundb.

I Bestimme den GGT voncund dem kleineren der beiden Wertea undb

I Aufgabe: Bestimmen Sie mit Euklids Algorithmus die folgenden GGTs. Notieren Sie die Zwischenergebnisse.

I ggt(16,2)

I ggt(36,45)

I ggt(17,2)

I ggt(121,55)

I ggt(2,0)

(15)

Spezifikation von Algorithmen

Algorithmen k ¨onnen auf verschiedene Arten beschrieben werden:

I Informeller Text

I Semi-Formaler Text

I Pseudo-Code

I Konkretes Programm in einer Programmiersprache

I Flussdiagramm

I . . .

(16)

Euklid als (semi-formaler) Text

I Algorithmus: Gr ¨oßter gemeinsamer Teiler

I Eingabe: Zwei nat ¨urliche Zahlena,b

I Ausgabe: Gr ¨oßter gemeinsamer Teiler vonaundb

1 Wennagleich 0, dann ist das Ergebnisb. Ende.

2 Wennbgleich 0, dann ist das Ergebnisa. Ende.

3 Wennagr ¨oßer alsbist, dann setzeagleichab.

Mache mit Schritt 3 weiter.

4 Wennbgr ¨oßer alsaist, dann setzebgleichba.

Mache mit Schritt 3 weiter.

5 Ansonsten:aist gleichb, und ist der gesuchte GGT. Ende.

(17)

Euklid als (Pseudo-)Code

def e u c l i d g c d ( a , b ) :

” ” ”

Compute t h e G r e a t e s t Common D i v i s o r o f two numbers , u s i n g E u c l i d ’ s n a i v e a l g o r i t h m .

” ” ” i f a ==0:

r e t u r n b i f b ==0:

r e t u r n a while a ! = b : i f a>b :

a=a−b else:

b=b−a r e t u r n a

(18)

Euklid Rekursiv

def e u c l i d g c d r ( a , b ) :

” ” ”

Compute t h e G r e a t e s t Common D i v i s o r o f two numbers , u s i n g E u c l i d ’ s n a i v e a l g o r i t h m .

” ” ” i f a ==0:

r e t u r n b i f b ==0:

r e t u r n a i f a>b :

r e t u r n e u c l i d g c d r ( a−b , b ) else:

r e t u r n e u c l i d g c d r ( b , b−a )

(19)

Panta Rhei

I Flussdiagramm: Graphische Visualisierung des Algorithmus

I Wer findet den Fehler?

Was passiert bei A=0,B6=0?

(20)

Ubung: Euklids Worst Case ¨

I Wie oft durchl ¨auft der Euklidsche Algorithmus im schlimmsten Fall f ¨ur ein gegebenesa+bdie Schleife? Begr ¨unden Sie Ihr Ergebnis!

(21)

Zusammenfassung

I Kennenlernen (oder Wiedererkennen)

I Ubersicht ¨uber die Vorlesung¨

I Was ist ein Algorithmus?

I Beispiel: Euklid

(22)

Feedback

I Was war der beste Teil der heutigen Vorlesung?

I Was kann verbessert werden?

I Optional: Wie?

(23)

Ziele Vorlesung 2

I R ¨uckblick/Wiederholung

I Kurz: Ganzzahldivision und Modulus (Divisionsrest)

I Euklid (zweite Runde)

I Algorithmen und Datenstrukturen

I Effizienz und Komplexit ¨at von Algorithmen

(24)

R ¨uckblick/Wiederholung

I Algorithmenbegriff

I Beispiel von Algorithmenklassen

I Suchen/Sortieren

I Optimieren

I Kompression

I . . .

I Spezifikation von Algorithmem

I Informal

I Semi-Formal

I (Pseudo-)Code

I Flussdiagramme

I . . .

I Der GGT-Algorithmus von Euklid

(25)

Das Geheimnis des Modulus

I Dermodulo-Operator ermittelt den Divisionsrestbei der ganzzahligen Division:

I Sei z.B.z=nq+r

I Dann ist

z/n=qmit Restr

I oder auch:

z/n=qundz%n=r

I Alternative Schreibweise:

zdivn=qundzmodn=r

Dividend

Divisor (Zähler)

(Nenner) Modulus

(Rest)

z.B. 15

z.B. 3

Quotient z.B. 3

(26)

Modulus Teil 2

I Eigenschaften:

I Der Divisionsrestmodulonliegt zwischen 0 undn

I Aufeinanderfolgende Zahlen

kleinernhaben aufeinanderfolgende Divisionsreste

I Aufeinanderfolgende Zahlen haben meistensaufeinanderfolgende Divisionsreste (Ausnahme: Die gr ¨oßere ist glatt durchnteilbar)

I Verwendung:

I Kryptographie (RSA)

I Hashing

I “Faire” Verteilung aufnT ¨opfe

Dividend

Divisor (Zähler)

(Nenner) Modulus

(Rest)

z.B. 15

z.B. 3

Quotient z.B. 3

(27)

Modulus Teil 3

Beispiele

Divident Divisor Quotient Modulus

0 3 0 0

1 3 0 1

2 3 0 2

3 3 1 0

4 3 1 1

5 3 1 2

6 3 2 0

25 17 1 8

26 17 1 9

27 17 1 10

34 17 2 0

35 17 2 1

Dividend

Divisor (Zähler)

(Nenner) Modulus

(Rest)

z.B. 15

z.B. 3

Quotient z.B. 3

(28)

Ubung: Modulus ¨

11 mod 15 = 19 mod 23 = 52 mod 2 = 82 mod 12 = 54 mod 29 = 66 mod 10 = 44 mod 26 = 12 mod 16 = 23 mod 15 = 96 mod 20 = 26 mod 15 = 87 mod 17 = 93 mod 26 = 64 mod 14 = 68 mod 20 = 99 mod 14 = 15 mod 25 = 36 mod 23 = 34 mod 19 = 28 mod 27 = 46 mod 14 = 71 mod 24 = 84 mod 24 = 62 mod 20 = 76 mod 27 = 21 mod 20 = 38 mod 17 = 96 mod 23 = 36 mod 14 = 44 mod 13 = 35 mod 25 = 72 mod 29 = 32 mod 7 =

(29)

Ubung: Modulus ¨

11 % 15 = 11 19 % 23 = 19 52 % 2 = 0 82 % 12 = 10 54 % 29 = 25 66 % 10 = 6 44 % 26 = 18 12 % 16 = 12 23 % 15 = 8 96 % 20 = 16 26 % 15 = 11 87 % 17 = 2 93 % 26 = 15 64 % 14 = 8 68 % 20 = 8 99 % 14 = 8 15 % 25 = 15 36 % 23 = 13 34 % 19 = 16 28 % 27 = 1 46 % 14 = 4 71 % 24 = 23 84 % 24 = 12 62 % 20 = 2 76 % 27 = 22 21 % 20 = 1 38 % 17 = 4 96 % 23 = 4 36 % 14 = 8 44 % 13 = 5 35 % 25 = 10 72 % 29 = 14 32 % 7 = 4

Geschafft!

(30)

GGT-Algorithmus von Euklid

I Algorithmus: Gr ¨oßter gemeinsamer Teiler

I Eingabe: Zwei nat ¨urliche Zahlena,b

I Ausgabe: Gr ¨oßter gemeinsamer Teiler vonaundb

1 Wennagleich 0, dann ist das Ergebnisb. Ende.

2 Wennbgleich 0, dann ist das Ergebnisa. Ende.

3 Wennagr ¨oßer alsbist, dann setzeagleichab.

Mache mit Schritt 3 weiter.

4 Wennbgr ¨oßer alsaist, dann setzebgleichba.

Mache mit Schritt 3 weiter.

5 Ansonsten:aist gleichb, und ist der gesuchte GGT. Ende.

(31)

Analyse: Euklids GGT-Algorithmus

Seio.B.d.A agr ¨oßer alsbund seigder ggt(a,b)

I Dann gilt:a=mgundb=ng f ¨urm,n∈Nundm>n

I Nach einem Schritt ist alsoa= (m−n)gundb=ng

I gteilt immer nochaundb(Korrektheit!)

I Wennmgroß gegennist, dann durchl ¨auft der Algorithmus viele Schritte, bisabgilt

Geht das auch schneller?

(32)

Euklid Schneller

Seio.B.d.A agr ¨oßer alsbund seigder ggt(a,b)

I Dann gilt:a=mgundb=ng f ¨urm,n∈Nundm>n

I Nach einem Schritt ist alsoa= (m−n)gundb=ng

I gteilt immer nochaundb(Korrektheit!)

I Wennmgroß gegennist, dann durchl ¨auft der Algorithmus viele Schritte, bisabgilt

I Beobachtung: Es wird so lange immer wiederbvonaabgezogen, bisa≤bgilt!

I Sei im folgendena0 der Originalwert vona

I Wenn wirb i-mal vonaabziehen, so gilt also:a0=ib+a

I In anderen Worten:aist der Divisionsrest vona0/b!

Wir k ¨onnen also die wiederholten Subtraktionen durch eine Division mit Restberechnung ersetzen!

(33)

Euklid Schneller in (Pseudo)-Code

def e u c l i d g c d 2 ( a , b ) :

” ” ” Compute t h e G r e a t e s t Common D i v i s o r o f two numbers , u s i n g an improved v e r s i o n od E u c l i d ’ s a l g o r i t h m .

” ” ”

while a ! = b : i f a ==0:

r e t u r n b i f b ==0:

r e t u r n a i f a>b :

a=a%b else:

b=b%a r e t u r n a

(34)

Ubung: Euklid Schneller ¨

I Aufgabe: Bestimmen Sie mit dem verbesserten Algorithmus die folgenden GGTs. Notieren Sie die Zwischenergebnisse.

I ggt(16,2)

I ggt(36,45)

I ggt(17,2)

I ggt(121,55)

I ggt(89,55)

def e u c l i d g c d 2 ( a , b ) : while a ! = b :

i f a ==0:

r e t u r n b i f b ==0:

r e t u r n a i f a>b :

a=a%b else:

b=b%a r e t u r n a

(35)

Ubung: Datenstrukturen ¨

I Zur L ¨osung eines gegebenen Problems kann es verschieden effiziente Algorithmen geben

I Oft wesentlich: Geschickte Organisation der Daten durch geeignete Datenstrukturen

I Ubung: Finden Sie die zu den 5 Namen in Spalte 1 geh ¨orende¨ Ziffernfolge inListe 1. Stoppen Sie Ihre Zeit! ¨Ubung: Finden Sie die zu den 5 Namen in Spalte 2 geh ¨orende Ziffernfolge inListe 2.

Stoppen Sie Ihre Zeit! ¨Ubung: Finden Sie die zu den 5 Namen in Spalte 3 geh ¨orende Ziffernfolge inListe 3. Stoppen Sie Ihre Zeit!

Spalte 1 Stone, Jo Pierce, Jaime Nunez, Glenda Hawkins, Mona

Spalte 2

Mcdonald, Jeffrey Palmer, Katie Pierce, Jaime Schmidt, Tami

Spalte 3 Sims, Helen Obrien, Kim Curry, Courtney Brewer, Marcella

(36)

Datenstrukturen?

I Liste 1: Unsortiertes Array

I Lineare Suche

I Liste 2: Sortiertes Array

I Bin ¨are Suche (oder auch auch

“gef ¨uhlteInterpolationssuche”)

I Liste 3: Sortiertes Array mit pre-Hashing

I Ditto, aber mit besserem Einstiegspunkt

Wahl der geeigneten Datenstruktur erm ¨oglicht bessere/effizientere Suche!

“Bad programmers worry about the code. Good programmers worry about data structures and their relationships.”

— Linus Torvalds

(37)

Komplexit ¨at von Algorithmen

I Fragestellung: Wieteuerist ein Algorithmus?

I Konkreter:

I Wie viele (elementare) Schritte braucht er f ¨ur einen gegebene Eingabe?

I Wie viel Speicherplatz bracht er f ¨ur einen gegebene Eingabe?

I Allgemeiner:

I Wie viele elementare Schritte braucht ein Algorithmus f ¨ur Eingaben einer bestimmten L ¨ange?

I . . . im Durchschnitt?

I . . . schlimmstenfalls?

I Wie viel Speicher braucht ein Algorithmus f ¨ur Eingaben einer bestimmten L ¨ange?

I . . . im Durchschnitt?

I . . . schlimmstenfalls?

(38)

Effizienz und Auswahl von Algorithmen

I Was ist derbesteAlgorithmus f ¨ur ein gegebenes Problem?

I Verschiedene Algorithmen k ¨onnen sehr verschiedene Komplexit ¨at haben (Beispiel: Euklid!)

I Kriterien:

I Performanz auf erwarteten Eingabedaten!

I Performanz im Worst-Case

I Anforderungen der Umgebung (Echtzeit? Begrenzter Speicher?)

I (Nachweisbare) Korrektheit!

Eleganz und Einfachheit sind schwer zu quantifizieren, aber ebenfalls wichtig!

(39)

Zusammenfassung

I R ¨uckblick/Wiederholung

I Kurz: Ganzzahldivision und Modulus (Divisionsrest)

I Euklid (zweite Runde)

I Algorithmen und Datenstrukturen

I Effizienz und Komplexit ¨at von Algorithmen

(40)

Feedback

I Was war der beste Teil der heutigen Vorlesung?

I Was kann verbessert werden?

I Optional: Wie?

(41)

Ziele Vorlesung 3

I Komplexit ¨at konkret

I Was z ¨ahlen wir?

I Wovon abstrahieren wir?

I Big-ONotation

I Definition

I Rechenregeln

I Ubungen¨

(42)

R ¨uckblick/Wiederholung

I Kurz: Ganzzahldivision und Modulus (Divisionsrest)

I Euklid (zweite Runde)

I Algorithmen und Datenstrukturen

I Unortierte Liste, . . .

I Effizienz und Komplexit ¨at von Algorithmen

I Zeit und Platz

I Average caseundWorst case

(43)

Komplexit ¨atsfragen

Die Zeit, die ein Computer f ¨ur eine Operation braucht, h ¨angt ab von

I Art der Operation (Addition ist einfacher als Logarithmus)

I Speicherort der Operanden (Register, Cache, Hauptspeicher, Swap)

I L ¨ange der Operanden (8/16/32 Bit)

I Taktrate des Prozessors

I Programmiersprache / Compiler Diese Parameter h ¨angen ihrerseits ab von

I Prozessormodell

I Gr ¨oße von Cache und Hauptspeicher

I Laufzeitbedingungen

I Wie viele andere Prozesse?

I Wie viel freier Speicher?

Exakte Berechnung ist extrem aufwendig und

(44)

Komplexit ¨at abstrakt

Um von den genannten Problemen zu abstrahieren, d.h.

Komplexit ¨atsberechnungenpraktikabelundumgebungsunabh ¨angigzu gestalten, definiert man:

I eine Zuweisung braucht1 Zeiteinheit

I eine arithmetische Operation braucht1 ZE

I moderne Prozessoren arbeiten mit 64-Bit-Integers

I Vereinfachung ist legitim f ¨ur Zahlen von -9 bis +9 Trillionen

I Ausnahmen f ¨ur extrem große Zahlen (;Kryptographie)

I ein Vergleich (if, while, for) braucht1 ZE

(45)

Komplexit ¨at und Eingabe

Bei (fast) allen Algorithmen h ¨angt die Laufzeit von der Gr ¨oße der Eingabe ab

I Suchen/Sortieren: Anzahl der Elemente

I Matrix-Multiplikation: Dimensionen der Matrizen

I Graph-Operationen: Anzahl der Knoten/Kanten

;Komplexit ¨at kann sinnvoll nur alsFunktionangegeben werden, die von derGr ¨oße der Eingabeabh ¨angt.

Gr ¨oße wird wiederum abstrakt beschrieben:

I eine Zahl ben ¨otigt1 Gr ¨oßeneinheit

I ein Buchstabe ben ¨otigt1 GE

I Elemente von komplexen Strukturen (Knoten/Kanten/. . . )

(46)

Beispiel: Komplexit ¨at

Beispiel: Matrix-Multiplikation Eingabe zwein×n-Matrizen

Ausgabe Matrizenprodukt (n×n-Matrix)

def m a t r i x m u l t ( a , b ) : f o r x i n range( n ) :

f o r y i n range( n ) : sum=0

f o r z i n range( n ) : sum=sum+a [ x , z ]b [ z , y ] c [ x , y ] =sum

r e t u r n c

I Schleife z:n∗4

I Schleife y:

n∗(3+n∗4) =3∗n+4∗n2

I Schleife x:

n∗(1+3∗n+4∗n2) = n+3∗n2+4∗n3

I Funktion matrix mult:

4n3+3n2+n+1

(47)

Ubung: Komplexit ¨at ¨

Ein Dozent verteiltnKlausuren annStudenten. Er verwendet die folgenden Verfahren:

1 Er geht zum ersten Studenten, vergleicht dessen Namen mit denen auf jeder Klausur, und gibt dem Studenten seine Klausur, sobald er sie gefunden hat. Anschließend macht er beim n ¨achsten Studenten weiter.

2 Der Dozent nimmt die erste Klausur, liest den Namen auf der Klausur und gibt die Klausur dem Studenten, der sich meldet.

Berechnen Sie, wie groß der Aufwand der Verteilung in Abh ¨angigkeit vonnbei jedem Verfahren ist. Machen Sie dabei die folgenden Annahmen:

I Der Vergleich von zwei Namen dauert eine ZE.

I In einem Stapel der Gr ¨oßenist die gesuchte Klausur an Position dn/2e.

I Das ¨Ubergeben der Klausur an den entsprechenden Studenten

(48)

Komplexit ¨at f ¨ur große Eingaben

Der Term 4n3+3n2+n+1 ist unhandlich.

Wie verh ¨alt sich der Term f ¨ur große Werte vonn?

0 1000 2000 3000 4000 5000

1 2 3 4 5 6 7 8 9 10

4*x**3 + 3* x**2 + x + 1 4*x**3 3*x**2 x 1

I f ¨urn>5 ist der Unterschied zwischen 4n3+3n2+n+1 und 4∗n3irrelevant

1.4 1.6 1.8 2

2.2 (4*x**3 + 3* x**2 + x + 1) / (4*x**3)

I derAbstandwird zwar gr ¨oßer, . . .

I . . . aber dasVerh ¨altniskonvergiert gegen 1

I bei Polynomen ist nur dergr ¨oßte

(49)

Weitere Vereinfachungen

0 500000 1x106 1.5x106 2x106 2.5x106 3x106

0 20 40 60 80 100

3*x**3 x**3

3n3undn3verhalten sich

”¨ahnlich“:

I Verdoppelung vonn; Verachtfachung der Funktion

I 3n3/n3konvergiert gegen einen konstanten Wert (n ¨amlich 3)

I Außerdem: konstante Faktoren oft abh ¨angig von Implementierungs-/Sprach-/Compiler-Details

I a = 2 * 3 + 4;3 Schritte

I a = 2 * 3; a = a + 4;4 Schritte

I ;Vernachl ¨assigung von konstanten Faktoren

I Umstritten!

I Sedgewick entwickelt eigene Notation, die konstante Faktoren ber ¨ucksichtigt

(50)

O-Notation

O-Notation

F ¨ur eine Funktionf bezeichnetO(f)die Menge aller Funktionengmit

∃k ∈N ∃c∈R ∀n>k :g(n)≤c·f(n)

I Ab einer bestimmten Zahlnistg(n)kleiner gleichc·f(n)f ¨ur einen konstanten Faktorc.

I O(f)ist die Menge aller Funktionen, dienicht schneller wachsen alsf

I Stattg ∈ O(f)sagt man oft

”g istO(f)“.

”Der Aufwand des Matrix-Multiplikations-Algorithmus istO(n3).“

(51)

Beispiele: O-Notation

I n2istO(n3)

I 3∗n3istO(n3)

I 4n3+3n2+n+1 istO(n3)

I n·√

nistO(n2)

Vorsicht: O-Notation

In der Literatur wirdg∈ O(f)oft geschrieben alsg =O(f).

Dieses=ist nicht symmetrisch:n=O(n2), abern26=O(n).

Besser:g∈O(f)odergistO(f).

(52)

Rechenregeln f ¨ur O-Notation

F ¨ur jede Funktionf f ∈ O(f) g ∈ O(f) ⇒ c·g ∈ O(f) g ∈ O(f)∧h∈ O(f) ⇒ g+h ∈ O(f) g ∈ O(f)∧h∈ O(g) ⇒ h ∈ O(f)

limn→∞g(n)

f(n) ∈R ⇒ g ∈ O(f)

(53)

Ein n ¨utzliches Resultat der Analysis

Regel von l’H ˆopital

x→∞lim f(x)

g(x) = lim

x→∞

f0(x) g0(x)

Beispiel

x→∞lim 10·x

x2 = lim

x→∞

10

2·x = lim

x→∞

0 2 =0

(54)

Ubung: ¨ O-Bestimmung

I Finden Sie das kleinstek ∈Nmitn·logn∈ O(nk)

I Finden Sie das kleinstek ∈Nmitn·(logn)2∈ O(nk)

I Finden Sie das kleinstek ∈Nmit 2n ∈ O(nk)

(55)

Komplexit ¨atsklassen verschiedener Funktionen

Ordnung Bezeichnung Operation Beispiel

O(1) konstant elementare Operation Zuweisung

O(logn) logarithmisch divide and conquer bin ¨are Suche

O(n) linear alle Elemente testen lineare Suche

O(nlogn)

linearithmisch“ divide and conquer effiziente Sortier- verfahren O(n2) quadratisch jedes Element mit jedem

vergleichen

naive Sortierver- fahren

O(n3) kubisch jedes Tripel testen Matrix-

Multiplikation O(2n) exponentiell alle Teilmengen Aussagenlogische

Erf ¨ullbarkeit O(n!) faktoriell alle Permutationen Travelling Sales-

man

O(nn) alle Folgen der L ¨angen

(56)

Noch ein n ¨utzliches Resultat der Analysis

Stirling’sche Formel

n→∞lim

√ n!

2πn nen =1

n! ∈ O(√

2πn nen

)

∈ O(c·

n en ·nn)

∈ O(nn)

∈ O(enlogn)

∈/ O(ec·n)f ¨ur irgendeinc

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

floor(x)! /x ** x

(57)

Zusammenfassung

I Komplexit ¨at konkret

I Was z ¨ahlen wir?

I Wovon abstrahieren wir?

I Big-ONotation

I Definition

I Rechenregeln

I Ubungen¨

(58)

Feedback

I Was war der beste Teil der heutigen Vorlesung?

I Was kann verbessert werden?

I Optional: Wie?

(59)

Weitere Notationen

g ∈ O(f) gw ¨achsth ¨ochstensso schnell wief limx→∞g(x)

f(x) =c ∈R Ω-,Θ-,∼-Notation

g ∈Ω(f) gw ¨achstmindestensso schnell wief limx→∞g(xf(x)) =c ∈R

g ∈Θ(f) gw ¨achstgenauso schnell wief, bis auf einenkonstanten Faktor limx→∞g(x)

f(x) =c ∈R>0

g∼f gw ¨achstgenauso schnell wief (ohnekonstanten Faktor) limx→∞g(x)

f(x) =1

Referenzen

ÄHNLICHE DOKUMENTE

Ein (bin¨arer) Heap ist ein (fast) vollst¨andiger bin¨arer Baum, in dem f¨ur jeden Knoten gilt, dass er in einer definierten Ordnungsrelation zu seinen Nachfolger steht. I

I Wie viele elementare Schritte braucht ein Algorithmus f¨ur Eingaben einer bestimmten

Ziel dieses ¨ Ubungsblattes soll es sein, eine funktionst¨uchtige Programmierumgebung zur Verf¨ugung zu haben, die als Ausgangspunkt zur L¨osung der Programmieraufgaben auf sp¨ateren

Ziel dieses ¨ Ubungsblattes soll es sein, eine funktionst¨uchtige Programmierumgebung zur Verf¨ugung zu haben, die als Ausgangspunkt zur L¨osung der Programmieraufgaben auf sp¨ateren

Stefan Posch, Dipl.-Bioinform. Andr´e Gohr, Dipl.-Bioinform. Gegeben sei ein String S, in dem das Abschlußzeichen $ nicht vorkommt.?. a) Warum wird der String S mit

Datensätze partitioniert in (paarweise disjunkte) Mengen, wobei jede Menge durch einen in ihr enthaltenen Datensatz repräsentiert

Datensätze partitioniert in (paarweise disjunkte) Mengen, wobei jede Menge durch einen in ihr enthaltenen Datensatz repräsentiert

Nehmen Sie für folgende Aufgaben an, dass die Laufzeit der Algorithmen proportional zur Zeit, welche für die Berechnung der arithmetischen Operationen werwendet wird, ist.