Komplexität Flashcards
Einflussfaktoren für den Zeit- und Speicherplatzbedarf eines Algorithmus
- Anzahl und Größe der Eingabedaten (“Problemgröße”) [#Knoten]
- Komplexität des Algorithmus/ der Aufgabe [for-Schleife n-mal durchlaufen]
- Eigenschaften der zur Ausführung eingesetzten Rechenanlage (z.B. Schnelligkeit, Befehlssatz)
⇒ bei Art der Rechenanlage häufig abstrakte Maschinen zur Komplexitätsberechnung
Komplexität
- wie viel Zeit
- wie viel Speicherplatz benötigt ein Algo zur Ausführung für eine gegebene Problemgröße
⇒ unabhängig von Problemgröße/Rechenanlage
⇒ möglichst effiziente Alogrithmen, also von geringer Komplexität
⇒ hier immer Zeitkomplexität
Idealisierende Annahmen
- Jede Elementaroperation (Zuweisung, Addition, Subtraktion, Multiplikation, Vergleichen etc.) = 1 Rechenschritt
- Aufwändige Operationen (z.B. Matrizenmultiplikation) nicht verfügbar bzw. durch einfachere Operationen zu realisieren.
- Einheitliche Größe der betrachteten Daten, Darstellung in jeweils einer Speicherzelle
Elementaroperationen (ELOP)
typische Komplexitätsfunktionen (aufsteigend)
- O(log₂ n): Logarithmische Komplexität
- O(n): Lineare Komplexität
- O(n log₂ n): Leicht überlineare Komplexität
- O(n²): Quadratische Komplexität
- O(n³): Kubische Komplexität
- O(2^n): Exponentielle Komplexität
„Groß-Oh-Notation“
beschreibt Wachstum von Funktionen für große n bzw. das Verhalten von n -> unendlich.
Große/kleine Problemauspräungen
Große Problemauspräungen
- Aussagen meist relativ genau zutreffend
- Konstante Summanden unwichtig
- Höchste Potenz entscheidend
Kleine Problemauspräungen
- Konstante Faktoren mit hoher Bedeutung
- Aussage der Groß-Oh-Notation i.a. sehr unpräzise
Komplexität - Mengen
Bekannte Problemklassen - Sortierverfahren
Einfüge Sort
- O(n²)
Quicksort
- Tmax O(n²)
- Tavg O(n log₂ n)
Heapsort
- Tmax = Tavg O(n log₂ n)
Algorithmen, die “Vergleichen & Vertauschen”
- Tmax = Tavg O(n log₂ n)
Shakersort
- Tmin O(n)
- Tmax O(n2)
Bekannte Problemklassen
DFS/BFS: O(|E| + |N|), da jeder Knoten/Kante höchst. 1x in jeder Richtung durchlaufen
Statische DS: Direkter Zugriff auf Feldelemente: O(1)
Hamiltonscher Zyklus: O(m!) [komplexer als Eulerkreisproblem]