Algorithmen und Datenstrukturen

Werbung
Organisatorisches
Weiterer Ablauf:
Algorithmen und Datenstrukturen (für ET/IT)
• Mittwoch, 2. Juli:
• Zentralübung: zweite Probe-Klausur
• Donnerstag, 3. und Montag, 7. Juli:
• Vorlesung: Kapitel 11 Datenkompression
• Mittwoch, 9. Juli:
• Zentralübung: Fragestunde
• Donnerstag, 10. Juli:
• Vorlesung: Kapitel 12 Kryptographie
• Freitag, 11. Juli:
• letzte Tutorfragestunde
• Mittwoch, 16. Juli:
• Klausur
Sommersemester 2014
Dr. Tobias Lasser
Computer Aided Medical Procedures
Technische Universität München
2
Übersicht Inhalte
Übersicht Inhalte
1
Einführung
2
Grundlagen von Algorithmen
3
Grundlagen von Datenstrukturen
4
Grundlagen der Korrektheit von Algorithmen
5
Grundlagen der Effizienz von Algorithmen
11
Datenkompression
6
Grundlagen des Algorithmen-Entwurfs
12
Kryptographie
7
Fortgeschrittene Datenstrukturen
8
Such-Algorithmen
9
Graph-Algorithmen
10
Numerische Algorithmen
Nicht Klausur-relevant:
3
4
Kapitel 1: Einführung
Kapitel 2: Grundlagen von Algorithmen
2.1 Darstellung von Algorithmen
• Pseudocode, Flowchart, Struktogramm, Programmiersprachen
• Churchsche These
• Was ist ein Algorithmus?
2.2 Elementare Bausteine
• Was ist eine Datenstruktur?
• Elementarer Verarbeitungsschritt, Sequenz, bedingter
• Wo kommen sie vor?
Verarbeitungsschritt, Wiederholung
• Einordnung in Computer-Schema
2.3 Logische Ausdrücke
• Konjunktion, Disjunktion, Negation
• Rechenregeln
• Logische Ausdrücke in Pseudocode
5
Kapitel 3: Grundlagen von Datenstrukturen
6
Kapitel 3: Grundlagen von Datenstrukturen
3.1 Primitive Datentypen und Zahldarstellung
• Bits und Bytes, Primitive Datentypen
• Dezimal-, Binär-, Hexadezimalsystem, 2-Komplement
3.5 Abstrakte Datentypen
• Abstrakter Datentyp, abstrakte Variable
Darstellung
• Fixed point und Floating point Darstellung
3.6 Stacks
• Stack mit Operationen und Implementationen
3.2 Felder als sequentielle Liste
(sequentielle / verkettete Liste)
• Feld als sequentielle Liste mit Operationen
3.7 Queues
3.3 Zeichen und Zeichenfolgen
• Queue mit Operationen und Implementationen
• ASCII Code, Unicode, Zeichen und Strings
(verkettete Liste, (zirkuläre) sequentielle Liste)
3.4 Felder als verkettete Liste
• Feld als (doppelt) verkettete Liste mit Operationen
7
8
Kapitel 4: Grundlagen der Korrektheit von Algorithmen
Kapitel 5: Grundlagen der Effizienz von Algorithmen
4.1 Motivation und Spezifikation
• Relative Korrektheit, Nachweis durch Verifikation, Validation
5.1 Motivation
4.2 Verifikation
• Komplexität Insertion Sort, Wachstumsraten
• Vor- und Nachbedingungen, partielle und totale Korrektheit
• Korrektheitsbeweis für 4 Bausteine
5.2 RAM-Modell
• Rechnermodell zur Laufzeitanalyse
4.3 Beispiel: Insertion Sort
5.3 Landau-Symbole
• Algorithmus und Verifikation
• Landau-Symbole O und Θ, Konstanten und Rechenregeln
• Kategorisierung der Effizienz von Algorithmen
• Komplexität der 4 Bausteine
4.4 Validation
• Systematische Tests: Blackbox-, Whitebox-, Regression-,
Integrations-Test
• Fehlerquellen, fehlertolerantes und fehlerpräventives
Programmieren
10
9
Kapitel 6: Grundlagen des Algorithmen-Entwurfs
Ende Teil 1
6.1 Entwurfsprinzipien
• Prinzip Verfeinerung, Prinzip Algorithmen-Muster
6.2 Divide and Conquer
• Muster Divide and Conquer, MergeSort, QuickSort
• Ausblick auf später: Binäre Suche, Strassen, FFT
6.3 Greedy-Algorithmen
Ende Teil 1, nun Teil 2
• Muster Greedy, Wechselgeld, minimaler Spannbaum
• Ausblick auf später: Dijkstra, Prim
(Huffman Code - nicht Klausur-relevant)
6.4 Backtracking
• Muster Backtracking, Labyrinth, Traveling Salesman,
Acht-Damen-Problem
6.5 Dynamisches Programmieren
• Muster dynamisches Programmieren, Fibonacci-Zahlen
11
12
Kapitel 7: Fortgeschrittene Datenstrukturen
Kapitel 7.1: Graphen
Definition: Ungerichteter Graph
• Ungerichteter Graph:
Definition: Ungerichteter Graph
Ein ungerichteter Graph ist ein Paar G = (V , E ) mit
• V endliche Menge der Knoten
• E ✓ {u, v } : u, v 2 V
7.1 Graphen
Menge der Kanten
Definition: Gerichteter Graph
• Gerichteter Graph:
7.2 Bäume
• auf Englisch:
Definition:
Gerichteter
• Knoten
= vertices
• Kanten = edges
7.3 Heaps
7.4 Priority Queues
Beispiel:
Graph
4
Ein gerichteter Graph ist ein Paar G = (V , E ) mit
• es ist {u, v } = {v , u}, d.h. Richtung der
• V endliche Menge der Knoten
Kante spielt keine Rolle
• E ✓ V ⇥ V Menge der Kanten
2
3
1
5
Definition: Gewichteter Graph
• Gewichteter Graph:
• E ✓ (u, v ) : u, v 2 V
=V ⇥V
Beispiel:
Graph
•Definition:
es ist (u, vGewichteter
) 6= (v , u), d.h.
Richtung der
13
4
spielt eine
Rolle
EinKante
gewichteter
Graph
ist ein Graph G = (V , E ) mit einer
w :möglich,
E ! R. d.h. Kanten der
2
•Gewichtsfunktion
hier sind Schleifen
Form (u, u) für u 2 V
Beispiel:
• der Graph G kann gerichtet oder ungerichtet
1
sein
4
• je nach Anwendung kann ein verschiedener
1
Wertebereich für die Funktion w gewählt
3
2
werden
• z.B. R oder N0
Kapitel 7.1: Graphen
3
1
2
14
5
7
7
3
8
9
Kapitel 7.2: Bäume
5
5
5
Definition
Wald/Baum
• Bäume
und Wälder:
• Eigenschaften von Graphen:
• adjazente Knoten
• gerichteter Graph: Eingangs- und Ausgangsgrad
• ungerichteter Graph: Grad
• Pfad zwischen Knoten
• Zyklus in gerichteten und ungerichteten Graphen
• (starker) Zusammenhang und (starke)
Zusammenhangskomponenten
• Darstellung von Graphen:
• Adjazenzmatrizen, Speicherkomplexität: O(|V |2 )
Definition: Wald und Baum
9
• Ein azyklischer ungerichteter Graph heißt auch Wald.
• Ein zusammenhängender, azyklischer ungerichteter Graph
heißt auch Baum.
• falls Kante entfernt: nicht mehr zusammenhängend
• falls Kante hinzugefügt: nicht mehr azyklisch
• |E | = |V | − 1
• Eigenschaften:
• Wurzelknoten, Vaterknoten, innere Knoten, Blätter
• Adjazenzlisten, Speicherkomplexität: O(|V | + |E |)
Wurzel
• Komplexitäten der Operationen
• Kanten-Operationen einfach mit Adjazenzmatrix: O(1)
• Knoten einfügen einfach mit Adjazenzliste: O(1)
• Knoten löschen immer aufwendig: O(|V |2 ) bzw. O(|V | + |E |)
w
Vater
innerer Knoten
28
x
Kind
v
Blätter
15
16
Kapitel 7.2: Bäume
Kapitel 7.2: Bäume
• Eigenschaften:
• Tiefe, Ebene, Höhe
w
Ebene 0
• Traversierung von Binärbäumen:
• Tiefensuche/DFS: Pre-order (wlr), In-order (lwr), Post-order
(lrw)
Implementierung z.B. mit Stack
Ebene 1
Höhe = 3
Ebene 2
Ebene 3
• Spezialfälle:
• geordnete Bäume (→ Suchbäume)
• n-äre Bäume
• Binärbäume
• Darstellung von Bäumen:
• mit (doppelt) verketteten Listen
• Binärbäume mit (doppelt) verketteten Listen (Kind
links/rechts) bzw. als sequentielle Liste
• Breitensuche/BFS
Implementierung z.B. mit Queue
17
Kapitel 7.3: Heaps
18
Kapitel 7.3: Heaps
• Operationen:
• minHeapify: O(log n)
• buildMinHeap: O(n)
• extractMin: O(log n)
Definition Heap
• Heap:
Definition Heap
Sei G = (V , E ) ein Binärbaum mit Wurzel w 2 V . Jeder Knoten
v 2 V sei mit einem Wert key (v ) verknüpft, die Werte seien durch
, geordnet.
G heißt Heap, falls er folgende zwei Eigenschaften erfüllt:
1
• G ist fast vollständig, d.h. alle Ebenen sind vollständig gefüllt,
5
2
9
ausser auf der untersten Ebene, die von links her nur bis zu
einem bestimmten Punkt gefüllt sein muss.
8
3
11
5
2
9
extractMin
Max-Heap-Eigenschaft, d.h. für alle Knoten v 2 V , v 6= w gilt
2
3
5
• Min-Heap: key (v .vater )  key (v )
11
9
8
minHeapify
key (v )
8
minHeapify
2
• G erfüllt die Min-Heap-Eigenschaft bzw. die
• Max-Heap: key (v .vater )
11
3
3
5
8
9
11
minHeapify
• HeapSort:
• buildMinHeap und extractMin bis leer
• in-place, O(n log n), besser als QuickSort im worst case
Entsprechend der Heap-Eigenschaft heißt G Min-Heap bzw.
Max-Heap.
20
19
20
Kapitel 7.4: Priority Queues
Kapitel 8: Such-Algorithmen
• Priority
Queue:
Definition
Priority Queue
Definition Priority Queue
Eine Priority Queue ist ein abstrakter Datentyp. Sie beschreibt
einen Queue-artigen Datentyp für eine Menge von Elementen mit
zugeordnetem Schlüssel und unterstützt die Operationen
8.1 Lineare Suche
8.2 Binäre Suche
• Einfügen von Elemente mit Schlüssel in die Queue,
8.3 Binäre Suchbäume
• Entfernen von Element mit minimalem Schlüssel aus der
8.4 Balancierte Suchbäume
Queue,
• Ansehen des Elementes mit minimalem Schlüssel in der Queue.
• Operationen auf
Priority1 Queue
0
2
7 als 3Heap:
• extractMin und insert, beides O(log n)
• decreaseKey: O(log n)
8.5 Suchen mit Hashtabellen
8.6 Suchen in Zeichenketten
5
• entsprechend gibt es auch eine Priority Queue mit
• auch implementierbar
mitvon(un)sortierten
Feldern
Entfernen/Ansehen
Elememt mit maximalem
Schlüssel
11
21
Kapitel 8.1 und 8.2: Lineare und binäre Suche
Kapitel 8.3: Binäre Suchbäume
Binärer Suchbaum
• Binärer Suchbaum:
• Lineare Suche: durchlaufe Array bis gesuchter Schlüssel
Definition binärer Suchbaum
gefunden: O(n)
Sei G = (V , E ) ein Binärbaum mit Wurzel w 2 V . Jeder Knoten
v 2 V sei mit einem Wert key (v ) verknüpft, die Werte seien durch
, geordnet.
G heißt binärer Suchbaum, falls für alle inneren Knoten v 2 V gilt
• Binäre Suche: sortiere Array, dann Divide and Conquer:
O(log n)
1
2
3
4
5
6
7
8
9
10
1
3
4
6
8
12
14
15
17
20
low
1
middle
3
4
6
8
14
low
1
3
4
6
8
• für alle Knoten x im linken Teilbaum v .left gilt
key (x)  key (v )
• für alle Knoten y im rechten Teilbaum v .right gilt
high
12
15
17
middle
12
14
low
high
15
22
key (y )
20
key (v )
high
17
5
20
32
2
1
23
8
3
9
24
Kapitel 8.3: Binäre Suchbäume
Kapitel 8.4: Balancierte Suchbäume
• Operationen auf binären Suchbäumen mit Höhe h:
• Suchen, Minimum, Maximum: O(h)
• Einfügen, Löschen: O(h)
• Effizienz direkt abhängig von Höhe
• best case: O(log n)
• worst case: O(n)
• Problem: binären Suchbaum balanciert zu halten ist
aufwendig: O(n)
• Ausweg: Abschwächung der Kriterien
•Definition
balanciert:AVL-Baum
AVL-Bäume
• Binärbaum: B-Bäume, Rot-Schwarz-Bäume
• AVL-Bäume:
1
Definition AVL-Baum
2
5
Ein binärer Suchbaum G = (V , E ) mit Wurzel w 2 V heißt
AVL-Baum, falls er die AVL-Bedingung erfüllt:
3
2
• für jeden inneren Knoten v 2 V gilt: Höhe von linkem und
5
8
rechtem Teilbaum von v unterscheidet sich maximal um 1.
7
1
3
7
9
8
ausgeglichen
entartet
• benannt
nachEinfügen,
G.M. Adelson-Velskii
Landis und
• Anpassung
von
Löschen und
mitE.M.
Rotation
9
(russische Mathematiker)
Doppelrotation
• AVL-Bedingung nur für Wurzel w ist nicht ausreichend
• beide Teilbäume der Wurzel können entartet sein
• Ausweg: balancierte Suchbäume
25
26
7
Kapitel 8.5: Suchen mit Hashtabellen
Kapitel 8.6: Suchen in Zeichenketten
• Motivation: Such-Algorithmen für Wörterbücher mit
Komplexität O(1)
• Problem: suche Muster (Länge m) in Text (Länge n)
• Operationen: search, insert, erase
• Adresstabellen: Laufzeit O(1), aber gigantischer
• Brute-Force Algorithmus: teste an jeder Textstelle O(nm)
Speicherverbrauch!
• Hashtabellen: reduziere Speicherverbrauch über Hashfunktion,
behalte Laufzeit O(1)
• Knuth-Morris-Pratt Algorithmus: O(n + m)
• Shift-Tabelle: Länge des eigentlichen Randes des Präfixes von
Muster
• modifizierter Brute-Force-Algorithmus:
• Kollisionsauflösung durch Verkettung, offene Adressierung
• Hashfunktionen mittels Divisionsmethode,
• 0 in Shift-Tabelle: direkt weitersuchen ohne zurückspringen
• > 0 in Shift-Tabelle: mitten in Muster weitersuchen
Multiplikationsmethode, universelles Hashing
Schlüsselmenge U
4
1
text:
6
3
8
9
2
pat:
7
5
shift
h
h
h
h
h
Kollision!
Hashtabelle T
2
3
5
7
27
28
1/_
2/7
B
F
Kapitel 9: Graph-Algorithmen
1/8
2/7
B
F
F
Kapitel
9.1: Tiefensuche4/5
4/5
3/6
x
y
z
v
w
1/8
2/7
9.1 Tiefensuche
C
4/5
u
3/6
z
x
y
z
v
w
u
v
w
10/
_
w
2/7
9/_
C
B
4/5
3/6
x
y
z
9/
• 2/7
9/_
1/8 oder 2/7
Implementation
rekursiv
mit Stack
12
C
C
• Anwendungen:
B
F
• berechnet Spannwald von Graph, markiert Rückkanten,
10/
10/
3/6
4/5 Cross-Kanten
3/6
Vorwärtskanten
und
11
11
1/8
B
F
4/5
F
y
z
v
1/8
C
B
3/6
y
u
9/_
9/_
B
x
w
2/7
F
3/6
x
9.4 Minimale Spannbäume
z
v
1/8
2/7
4/5
y
u
9/_
B
F
9.3 Kürzeste Pfade
3/6
x
• Tiefensuche / DFS: O(|V | + |E |)
u
9.2 Breitensuche
1/8
4/5
x
y
z
B
x
y
z
B
• Test aus
Zusammenhang
Definition
Kürzester
Pfad
G =auf
(V , Zyklenfreiheit
E ) Graph mit Gewichtsfunktion
• Sei
Test
• Segmentierung von binären
mit Nachbarschafts-Graph
w : E !Bildern
R.
BFS: Beispiel-Ablauf 2
29
30
• das Gewicht eines Pfades p = (v1 , . . . , vk ), vi 2 V ,
i = 1, . . . , k, ist die Summe der Gewichte aller seiner Kanten
Kapitel 9.2: Breitensuche
r
s
∞
t
0
u
∞
r
∞
1
Q:
∞
∞
∞
• Breitensuche / BFS:v O(|Vw | + |Ex|)
r
s
1
t
0
s
t
0
∞
Q:
∞
1
∞
y
v
w
x
u
r
s
t
1
∞
Q:
Kapitel 9.3: Kürzeste Pfade
∞
s
∞
2
w (p) =
u
r
t
0
w
r
(u, v 2 V ) ist
Summeund
derv Gewichte
y
Beispiel:
Ablauf Dijkstra-Algorithmus
1
(
u
∞
x
1
2
2
1
2
t
x
w
x
y
v
w
x
y
r
s
t
u
r
s
t
u
0
2
5 6
1
2
w
x
2 3
5
Knoten
3
u
y
Q:
∞
2
(x, 5) (u, 10) (v, ∞)
1
v
u
∞
(y, ∞)
s
5 6
s
5
x
(u, 8)
(v, ∞)
2 3
0
267
5
(y, 7)
v
13
10
2 3
0
1
8
10
Q:
32
• entscheidendes Hilfsmittel: Priority Queue
8
31
5 6
y
x
y aus Menge aktueller
• erweitere
Pfad um kürzeste Kante
heraus
(s,0) (u, ∞) (v, ∞) (x, ∞) (y, ∞)
v u y
Q:
s
∞
2
x
Q:
min{w (p) : p Pfad von u nach v } Pfad existiert
u
v
1
1
sonst
10
∞
0
• Dijkstra Algoritmus: Greedy-Algorithmus,
O(|E | log |V |)
7
7
5
• Voraussetzung: Kanten
haben positives Gewicht
5
3
∞
2 3
∞
1
0
2
3
1
• Implementation mit Queue
Q: x v u
• Anwendungen:
2
1
2
∞
2
• Besuch von Knoten
in Zusammenhangskomponente
v
w
x
y
v
• Berechnung Länge der kürzesten Pfade (d.h. Anzahl von
Kanten)
• Segmentierung von binären Bildern mit Nachbarschafts-Graph
wmin (u, v ) =
10
v
∞
v
v
10
sQ:
∞
1
∞
0
∞
w (vi , vi+1 )
i=1
• das Pfad
Gewichtindes
kürzesten PfadesGraph:
zwischenPfad
zwei Knoten
u
• Kürzester
gewichtetem
mit minimaler
∞
u
2
k 1
X
7
5
2
7
5
y
x
Q:
5 6
2
7
y
(u, 8) (v, 13)
32
44
10/
_
B
Kapitel 9.4: Minimale Spannbäume
Kapitel 10: Numerische Algorithmen
• Spannbaum: Teilgraph, der Baum ist und alle Knoten enthält
• minimaler Spannbaum: Spannbaum mit minimalem Gewicht
• Prim Algorithmus: Greedy-Algorithmus, O(|E | log |V |)
• erweitere aktuelle Lösung um Kante mit minimalen Gewicht
heraus aus Menge aktueller Knoten
• entscheidendes
Hilfsmittel: Priority
Beispiel-Ablauf:
PrimQueue
Algorithmus
4
1
3
6
4
Kapitel 10.1: Matrizen
5
• Berechne:
3
3
3
6
6
5
6
17
• Lineare Gleichung: aT x = b
q2 = (a21 + a22 ) · b11
• Lineares Gleichungssystem: Ax = b
• Anzahl Lösungen: keine, eine oder unendlich viele
b22 )
• Matrix-Operationen:
q4 Addition,
= a22 · (b21 Skalar-Multiplikation,
b11 )
Matrix-Multiplikation
q5 = (a11 + a12 ) · b22
• Lösen von linearen Systemen:
• mit Inverser A−1 (numerisch nicht stabil)
q6 = (a21 a11 ) · (b11 + b12 )
• Matrix-Multiplikation:
• regulär: O(n3 ) q7 = (a12 a22 ) · (b21 + b22 )
• Strassen (Divide and Conquer): O(n2.807 )
• Dann ist:
A·B =
✓
q1 + q4 q5 + q7
q3 + q5
q2 + q4
q1 + q3 q 2 + q 6
Kapitel 10.2: Lineare Gleichungen
6
q1 = (a11 + a22 ) · (b11 + b22 )
q3 = a11 · (b12
4
1
3
2
34
2
5
• Matrix als Element von Vektorraum, lineare Abbildung,
Anordnung von Zahlen
4
2
6
2
33
1
4
1
6
6
5
3
6
Strassen-Algorithmus
3
2
4
1
2
5
10.5 Fast Fourier Transform
5
3
6
2
3
3
10.4 Least Squares Probleme
2
2
6
1
4
1
4
1
2
5
10.3 Die LUP-Zerlegung
2
5
3
6
10.2 Lineare Gleichungen
2
2
3
10.1 Matrizen
• mit Gauss-Elimination (numerisch nicht stabil)
• mit Zerlegung und Vorwärts-/Rückwärts-Substitution
◆
(stabil mit geeigneter Zerlegung)
• mit iterativen Verfahren
• Komplexität: ⇥(nlg 7 ) = ⇥(n2.807 )
41
35
36
Kapitel 10.2: Lineare Gleichungen
Kapitel 10.3: Die LUP-Zerlegung
• Matrix-Zerlegungen:
• Cholesky-Zerlegung für symm. pos. def. Matrizen
3
( n3
• LU und LUP-Zerlegung
• Permutationsmatrizen und Darstellung
• Berechnung der LU- und LUP-Zerlegung:
• rekursive Berechnung von Gauss-Eliminations-Schritten
(Faktorisierung mittels Schur-Komplement)
FLOPs)
3
• QR-Zerlegung für invertierbare Matrizen ( 2n3 FLOPs)
3
• LUP-Zerlegung für invertierbare Matrizen ( 2n3 FLOPs)
• SVD-Zerlegung für beliebige Matrizen (2mn2 + 2n3 FLOPs)
• partielles Pivoting zur Vermeiden von Division durch 0 und
besserer Stabilität
37
Kapitel 10.4: Least squares Probleme
38
Kapitel 10.5: Fast Fourier Transform
• minimiere Approximationsfehler
ηj = F (xj ) − yj
Least-squares Lösung
P
für Datenpunkte (xj , yj ) und Funktion F (x) = i ci fi (x)
• Polynome in Koeffizientendarstellung:
Least-squares Lösung
Sei A 2 Rm⇥n , y 2 Rm mit m
Minimierungs-Problems
min kAc
c
yk
A(x) =
n. Eine Lösung c 2 Rn des
or
min kAc
c
aj x j
j=0
y k2
• Operationen:
• Auswertung: O(n) mit Horner-Schema
heißt Least-squares Lösung.
• Addition: O(n)
• Normalengleichung:
Anwendungs-Beispiele:
• Multiplikation: O(n2 )
• Tracking von Objekten
T mit Kameras
T
A Ac = A y
•
n−1
X
• Faltung zweier Vektoren entspricht Polynom-Multiplikation
• Kalibrierung von Kameras, Robotern, etc.
• Iterative Rekonstruktion für Tomographie
Pseudoinverse
A+ = (AT A)−1 AT
und Berechnung via QR/SVD Zerlegung
31
39
40
Kapitel 10.5: Fast Fourier Transform
Kapitel 10.5: Fast Fourier Transform
• Effiziente Faltung / Polynom-Multiplikation:
• Polynome in Stützstellendarstellung:
Koeffizientendarstellung
A, B
(x0 , y0 ), (x1 , y1 ), . . . , (xn−1 , yn−1 )
Multiplikation
Zeit: Θ(n2)
Koeffizientendarstellung
C = AB
Auswertung
Zeit: Θ(n log n)
• Operationen:
• Addition: O(n)
Stützstellendarstellung
A, B
• Multiplikation: O(n)
• Konversion zwischen Darstellungen:
• Koeffizienten → Stützstellen: Auswertung mit FFT O(n log n)
Interpolation
Zeit: Θ(n log n)
Multiplikation
Zeit: Θ(n)
Stützstellendarstellung
C = AB
• Diskrete Fourier Transformation: Polynom-Auswertung an
n-ten komplexen Einheitswurzeln, O(n2 )
• Stützstellen → Koeffizienten: Interpolation mit IFFT
• Fast Fourier Transformation: DFT mit Divide and Conquer
O(n log n)
und Halbierungslemma, O(n log n)
• Implementierung z.B. entrekursiviert mit Butterfly-Schema
41
Ausblick: Kapitel 11 und 12
42
Anwendungs-Szenarien in der Tomographie
Nicht Klausur-relevant!
11
Datenkompression
11.1
11.2
11.3
11.4
11.5
12
Nicht Klausur-relevant!
Einführung
Grundlagen der Informationstheorie
Huffman Codes
LZ77 und LZ78
JPEG
Kryptographie
separate Präsentation
12.1 Einführung
12.2 Symmetrische Verschlüsselung
12.3 RSA
43
44
Herunterladen