mag. thomas hilpold, universität linz, institut für wirtschaftsinformatik – software engineering...

16
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas Hilpold Institut für Wirtschaftsinformatik Software Engineering JKU Linz Termin 9 – Laufzeitkomplexität

Upload: adalwolfa-stucke

Post on 06-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1

Algorithmen und Datenstrukturen 1

SS 2002

Mag.Thomas Hilpold

Institut für Wirtschaftsinformatik

Software Engineering

JKU Linz

Termin 9 – Laufzeitkomplexität

Page 2: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 2

•Lösung Übung 7

•Themenbereiche heute

• Laufzeitkomplexität

• Übungsbesprechung Übung 9

Übersicht

Page 3: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 3

Lösung Ü7

Page 4: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 4

Komplexität

Allgemeines• Speicherkomplexität

• Laufzeitkomplexität

• Laufzeit = f(Problemgröße) typ. Größe der Datenmenge

• O-Notation gibt Obergrenze für Laufzeit an.

• Konstanten werden weggelassen

Page 5: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 5

Komplexität

Beispiele für Laufzeitkomplexität

Bezeichnung O Wertung Beispiel

konstante Komp. O(1) optimal, selten

Hashing, Prepend

Logarithmische K. O( log n ) Sehr günstig Binäres Suchen

Lineare Komp. O( n ) Günstig Lineares Suchen

Leicht überlinear O(n log n) Noch gut Gutes Sortierverfahren

Quadratische K. O( n2 ) Ungünstig Schlechtes Sortierverfahren

Kubische K. O( n3 ) Ungünstig Matrizenmultiplikation

Exponentielle K. O( an ) Katastrophal Rundreiseproblem

Page 6: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 6

Komplexität

einige Aussagen

• wenn P(n) ein Polynom m. Grades ist, so gilt P(n) = O(nm)

• an wächst stärker als jedes Polynom -> kein polynomialer Algorithmus

• log n wächst schwächer als n, egal welche Basis

Page 7: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 7

Laufzeitkomplexität

Beispiele

n O(n) O(n2) O(2^n)

1 1 sec 1 sec 1 sec

10 10 sec 100 sec ca. 1 msec

100 100 sec 10 msec 4*106 Jahre

1000 1 msec 1 sec 3,4*10286 Jahre

Page 8: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 8

Laufzeitkomplexität

grafische Darstellung (kleine Problemgrößen)

Page 9: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 9

Laufzeitkomplexität

grafische Darstellung (große Problemgrößen)

Page 10: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 10

Bestimmen der Laufzeitkomplexität

For - Schleife• Annahme: eine Operation A hat einen konstanten Zeitbedarf. Die Laufzeit für A soll also unabhängig von den Werten der Laufvariablen sein.

for (int i = 1..n) {A

}

•Laufzeitkomplexität: O(N), Linear

Page 11: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 11

Bestimmen der Laufzeitkomplexität

For – Schleife (2)

for (int i = 1..n) {for (int j = 1..n) {

A}

}

•Laufzeitkomplexität: O(N2), quadratisch

Page 12: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 12

Bestimmen der Laufzeitkomplexität

For – Schleife (3)

for (int i = 1..n) {for (int j = 1..i) {

A}

}

• geschachtelt, innere Schleife hat variable Obergrenze

???•Laufzeitkomplexität:

Page 13: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 13

Bestimmen der Laufzeitkomplexität

For – Schleife (3)

for (int i = 1..n) {for (int j = 1..i) {

A}

}

• geschachtelt, innere Schleife hat variable Obergrenze

???•Laufzeitkomplexität:

Page 14: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 14

Bestimmen der Laufzeitkomplexität

binäre suche

while (i <n) {n = n/2i = i + 1;

}

•Obergrenze halbiert sich bei jedem Schleifendurchlauf. log(n) Durchläufe = O(log(n)).

Page 15: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 15

Bestimmen der Laufzeitkomplexität

an der Tafel

Page 16: Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 16

Übung 9

ad 1) Feinanalyse – Suchverfahren

analog zur Vorlesung

ad 2) asymptotische Laufzeitkomplexität - praktische Betrachtung

gegeben O-Notation, Zeit für n = 10; zu berechnen für mehrere n

ad 3) Grobanalyse

asymptotische Laufzeitkomplexität für einen iterativen und einen rekursiven Algorithmus. gesucht: Anzahl der Schleifendruchläufe, Anzahl der rek. Aufrufe,

z.B. Aufrufbaum überlegen, Anzahl der Knoten.

ad 4) 2 Algorithmen zum Potenzieren