7
29.08.22 se_3_schnelligkeitsmessung.ppt 1 Softwareengineering Wie schnell ist ein Computerprogramm? Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law

16.11.2013se_3_schnelligkeitsmessung.ppt1 Softwareengineering Wie schnell ist ein Computerprogramm? Prof. Dr.-Ing. Axel Benz, Berlin School of Economics

Embed Size (px)

Citation preview

Page 1: 16.11.2013se_3_schnelligkeitsmessung.ppt1 Softwareengineering Wie schnell ist ein Computerprogramm? Prof. Dr.-Ing. Axel Benz, Berlin School of Economics

11.04.23 se_3_schnelligkeitsmessung.ppt 1

SoftwareengineeringWie schnell ist ein Computerprogramm?

Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law

Page 2: 16.11.2013se_3_schnelligkeitsmessung.ppt1 Softwareengineering Wie schnell ist ein Computerprogramm? Prof. Dr.-Ing. Axel Benz, Berlin School of Economics

11.04.23 se_3_schnelligkeitsmessung.ppt 2

Intuitiver Ansatz:

Beispiel: Sortieren Wir bemerken intuitiv: Eine große Menge von Dingen zu sortieren

dauert länger als eine kleine Menge. Folgerung: Ein Maß für die Schnelligkeit eines Algorithmus ist eine Funktion, die von der Größe der Eingabe abhängt.

Page 3: 16.11.2013se_3_schnelligkeitsmessung.ppt1 Softwareengineering Wie schnell ist ein Computerprogramm? Prof. Dr.-Ing. Axel Benz, Berlin School of Economics

11.04.23 se_3_schnelligkeitsmessung.ppt 3

Beispiel 1: Bucket Sort

Sortieralgorithmus, Voraussetzung: Kategorien, in die einsortiert wird, sind bekannt und endlich viele.

Eingabe: 11101, 15000, 50300, .........

Intuitiv sehen wir, dass wir die Zahlen nur einmal anschauen müssen. Folgerung: Der Algorithmus dauert (ungefähr) doppelt so lang, wenn die

Größe der Eingabe sich verdoppelt. Exakte Ausdrucksweise: Die Zeitkomplexität des Algorithmus ist eine

Funktion aus O(n) (n ist die Größe der Eingabe)

PLZ: 0-10000 bis 20000 bis 30000 bis 40000 bis 50000

Page 4: 16.11.2013se_3_schnelligkeitsmessung.ppt1 Softwareengineering Wie schnell ist ein Computerprogramm? Prof. Dr.-Ing. Axel Benz, Berlin School of Economics

11.04.23 se_3_schnelligkeitsmessung.ppt 4

Beispiel 2: Bubble Sort

Ausgangspunkt: Menge von Dingen (Zahlen), die man sortieren will. Algorithmus: Nimm die erste Zahl und vertausche sie so lange mit der

jeweils nächsten Zahl, bis die nächste Zahl kleiner ist. Wenn die nächste Zahl der Anfangszahl bereits kleiner ist, dann ist die

Anfangszahl bereits an der richtigen Stelle. Nimm dann die nächste Zahl als Anfangszahl

Es ist beweisbar:Im Worst Case ist die Komplexitätaus O (n^2)

(passiert dann, wenn die Zahlenam Anfang falsch herum sortiertsind)

8 1 1 1 1

6 8 8 3 3

3 6 6 8 6

10 3 3 6 8

12 10 10 10 10

15 12 12 12 12

13 15 13 13 13

1 13 15 15 15

Page 5: 16.11.2013se_3_schnelligkeitsmessung.ppt1 Softwareengineering Wie schnell ist ein Computerprogramm? Prof. Dr.-Ing. Axel Benz, Berlin School of Economics

11.04.23 se_3_schnelligkeitsmessung.ppt 5

Eine exakte Definition der O-Notation                                                                        

                                                                       Eine Funktion f ist dann aus O(g) (g ist eine andere Funktion),wenn

Es existiert eine Konstante c > 0 so dass FÜR ALLE x gilt:

Betrag von f(x) <= c * Betrag (g(x))

)()(:

)(

xgcxfxc

gOf

Page 6: 16.11.2013se_3_schnelligkeitsmessung.ppt1 Softwareengineering Wie schnell ist ein Computerprogramm? Prof. Dr.-Ing. Axel Benz, Berlin School of Economics

11.04.23 se_3_schnelligkeitsmessung.ppt 6

Fazit

Ein Maß für die Schnelligkeit eines Algorithmus ist eine Funktion, die von der Größe der Eingabe abhängt.

Die Schnelligkeit eines Algorithmus wird dadurch angegeben, dass wir die Funktionsklasse benennen, in der die Funktion liegt.

Übliche Funktionsklassen in aufsteigender Komplexität (der Algorithmus wird immer langsamer):

O (log n)O (n)O (n * log n)O (n^2)O (Polynom aus n) (z.B.) n^3+4n^2+6nO (n!)O (e^n)

Page 7: 16.11.2013se_3_schnelligkeitsmessung.ppt1 Softwareengineering Wie schnell ist ein Computerprogramm? Prof. Dr.-Ing. Axel Benz, Berlin School of Economics

11.04.23 se_3_schnelligkeitsmessung.ppt 7

Ausblick

Genau das selbe Modell wird verwendet, wenn man darstellen will "Wieviel Speicherplatz braucht ein Algorithmus"

- Speicherplatz ist abhängig von der Eingabe - Speicherplatz wird angegeben als die Funktionsklasse, in der die

Funktion liegt, die den Speicherplatz angibt Funktionsklassen sind die selben wir vorher angegeben.

Man spricht von: "Zeitkomplexität" (time complexity) eines Algorithmus

(statt Schnelligkeit) "Platzkomplexität" (space complexity) eines Algorithmus

(statt Speicherplatzverbrauch)