Funktion

Werbung
Softwareengineering
Wie schnell ist ein Computerprogramm?
Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law
14.02.2017
se_3_schnelligkeitsmessung.ppt
1
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.
14.02.2017
se_3_schnelligkeitsmessung.ppt
2
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
14.02.2017
se_3_schnelligkeitsmessung.ppt
bis 50000
3
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
8
1
1
1
1
Es ist beweisbar:
Im Worst Case ist die Komplexität
aus O (n^2)
(passiert dann, wenn die Zahlen
am Anfang falsch herum sortiert
sind)
14.02.2017
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
se_3_schnelligkeitsmessung.ppt
4
Eine exakte Definition der O-Notation
f  O( g )

cx : f ( x)  c  g ( x)
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))
14.02.2017
se_3_schnelligkeitsmessung.ppt
5
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+6n
O (n!)
O (e^n)
14.02.2017
se_3_schnelligkeitsmessung.ppt
6
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)
14.02.2017
se_3_schnelligkeitsmessung.ppt
7
Herunterladen