8 Effizienz und Komplexitt 8 1 Effizienz von

  • Slides: 8
Download presentation
8 Effizienz und Komplexität 8. 1 Effizienz von Programmen Speichereffizienz: Repräsentation möglichst kompakt Laufzeiteffizienz:

8 Effizienz und Komplexität 8. 1 Effizienz von Programmen Speichereffizienz: Repräsentation möglichst kompakt Laufzeiteffizienz: Ausführung möglichst schnell („Effizienz“ meint i. a. Laufzeiteffizienz) Maß für Laufzeit eines Programms: T(n) = Anzahl „wesentlicher Schritte“, Operationen o. ä. in Abhängigkeit von der Problemgröße n

8. 2 Komplexität von Algorithmen Abstrahieren von Konstanten! Z. B. „Aufwand für lineares Suchen

8. 2 Komplexität von Algorithmen Abstrahieren von Konstanten! Z. B. „Aufwand für lineares Suchen in n Elementen wächst wie n“ „Aufwand für Einschachtelung in n Elementen wächst wie log n“ --> O-Notation, z. B. f(n) = 3 n 2 + 2 n + 1 = O(n 2) g(n) = 5 n 2 + log 2 n = O(n 2) „ist von der Ordnung n 2 “ „Algorithmus hat Komplexität k(n)“ bedeutet: T(n) = O(k(n))

Regeln für die Komplexität zusammengesetzter Anweisungen: Sequenz zweier Anweisungen mit T 1(n) und T

Regeln für die Komplexität zusammengesetzter Anweisungen: Sequenz zweier Anweisungen mit T 1(n) und T 2(n): T 1(n) = O(f(n)) T 2(n) = O(g(n)) --> T(n) = T 1(n) + T 2(n) = Alternative mit T 1(n) bzw. T 2(n): O(f(n)), falls g = O(f) O(g(n)), falls f = O(g) desgl. Schleife mit R(n) für Rumpf, k(n)-mal durchlaufen: R(n) = O(g(n)) --> T(n) = k(n) R(n) = O(f(n) g(n)) k(n) = O(f(n)) Rekursion: T(n) ist rekursiv definiert

Typische Komplexitäten: 1 konstant log n logarithmisch na (a<1) n linear n log n

Typische Komplexitäten: 1 konstant log n logarithmisch na (a<1) n linear n log n na (a>1) polynomiell an (a>1) exponentiell . . . hyperexponentiell

9 Mengen insbesondere linear geordnete Mengen und Relationen, Multimengen, . . . Typische Operationen:

9 Mengen insbesondere linear geordnete Mengen und Relationen, Multimengen, . . . Typische Operationen: A B AB A B. . . A {x} A {x} x A |A| Vereinigung Schnitt Differenz ist Teilmenge von einfügen entfernen ist enthalten in Kardinalität vor allem für Mengenwerte vor allem für veränderliche Mengenobjekte

9. 1 Spezifikationen vorwiegend für Mengenobjekte Modell: data Set t = { t }

9. 1 Spezifikationen vorwiegend für Mengenobjekte Modell: data Set t = { t } Invariante: (eventuell card s <= max ) Signatur: leer einfügen löschen enthält anzahl traversieren Semantik: : : : {t} t -> {t} -> t -> {t} -> [t] (bekannt) {t} Bool Int ------ insert, enter delete, remove contains, elem card, size iterate

Imperativ: interface Set<T> { void insert(T elem); void remove(T elem); boolean contains(T elem); .

Imperativ: interface Set<T> { void insert(T elem); void remove(T elem); boolean contains(T elem); . . . }

9. 2 Lineare Repräsentationen Lineare und nichtlineare Alternativen ( * = nur falls linear

9. 2 Lineare Repräsentationen Lineare und nichtlineare Alternativen ( * = nur falls linear geordnet): - unsortierte Folge (Liste, Feld, Geflecht) * sortierte Folge * Bit-Feld - Streuspeicherung („hashing“) * Bäume * Haufen („heaps“)