Komplexität von Algorythmen Flashcards

1
Q

Wie misst man Laufzeitbedarf?

A

gute Lösung:
man zählt Einzelschritte des Algorithms, bzw ausgeführte Anweisungen

ungeeignete Lösung:
Ausführzeit messen, da diese immer vom Rechner abhängt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

O-Notation

A

f(n) ≤ c · g(n)

Für alle n ≥ n0 existieren eine Konstante c € ℝ+ und ein n0 € ℕ.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Komplexitätsklassen

A

O(1) konstanter Aufwand
O(log n) logarithmischer Aufwand
O(n) linearer Aufwand
O(n · log n) linear-logarithmischer Aufwand
O(n2) quadratischer Aufwand
O(n^k) für k ≥ 1 polynomialer Aufwand
O(k^n) für k > 1 exponentieller Aufwand

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Bestimmen Sie für diesen Algorithmus den Laufzeitbedarf f(n) (Anzahl Arbeitsschritte) in Abhängigkeit von der Problemgröße n (Feldlänge)!
Zu welcher der in der Vorlesung kennengelernten Komplexitätsklassen gehört der Laufzeitbedarf
dieses Algorithmus? Beweisen Sie Ihre Aussage!

1 public static void sort(int[] array) {
2    for (int i = 0; i < array.length - 1; i++) {
3       // finde minimalen Wert im unsortierten Bereich
4       int min = i;
5       for (int j = i + 1; j < array.length; j++) {
6          if (array[j] < array[min]) {
7             min = j;
8          }
9       }
10      // vertausche Positionen i und min
11       int temp = array[i];
12      array[i] = array[min];
13      array[min] = temp;
14   }
15}
A
  1. ) 2 4 3
  2. ) 3
  3. ) 4 3 3
  4. ) 5
  5. ) 2
  6. ) 4
  7. ) 4
  8. ) 3
  9. for schleife: (n-1) durchläufe
  10. for schleife: (n-1) durchläufe

f(n) = 2 + (n-1)* [ 4+3+3+4+ (n-1)* (3+3+5+2) +3+4+4+3 ]+4

f(n) = 13n^2 + 2n - 9

BEWEIS:
13*n^2 + 2*n - 9   <=  c*n^2
                             <= 13*n^2 + 2*n^2
                               = 15*n^2
->> c = 15

Antwort: Laufzeitkomplexität von O(n^2)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly