10. Übung – Algorithmen II - KIT – ITI Algorithmik...
Transcript of 10. Übung – Algorithmen II - KIT – ITI Algorithmik...
1 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Institut für Theoretische Informatik, Prof. Sanders
10. Übung – Algorithmen IIDennis Luxen, Johannes Singler
KIT – Universität des Landes Baden-Württemberg undnationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Inhalt heute
2 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Knuth-Morris PrattBeispiel zur Veranschaulichung der FunktionsweiseApplet
Lempel-ZivFunktionsweiseBeispiel
Inhalt heute
2 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Knuth-Morris PrattBeispiel zur Veranschaulichung der FunktionsweiseApplet
Lempel-ZivFunktionsweiseBeispiel
3 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Knuth-Morris-Pratt Algorithmus
KMP
4 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
KMP findet Muster in Text
Naiver Algorithmus vergleicht O(M · n) viele Zeichen.KMP nutzt bei der Suche gewonnene Information aus.Algorithmus kann anschaulich als Endlicher Automat verstandenwerdenPreprocessing: Analyse des Musters und Speicherung in Array derLänge m.Preprocessing dauert O(m).
KMP
4 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
KMP findet Muster in TextNaiver Algorithmus vergleicht O(M · n) viele Zeichen.
KMP nutzt bei der Suche gewonnene Information aus.Algorithmus kann anschaulich als Endlicher Automat verstandenwerdenPreprocessing: Analyse des Musters und Speicherung in Array derLänge m.Preprocessing dauert O(m).
KMP
4 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
KMP findet Muster in TextNaiver Algorithmus vergleicht O(M · n) viele Zeichen.KMP nutzt bei der Suche gewonnene Information aus.
Algorithmus kann anschaulich als Endlicher Automat verstandenwerdenPreprocessing: Analyse des Musters und Speicherung in Array derLänge m.Preprocessing dauert O(m).
KMP
4 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
KMP findet Muster in TextNaiver Algorithmus vergleicht O(M · n) viele Zeichen.KMP nutzt bei der Suche gewonnene Information aus.Algorithmus kann anschaulich als Endlicher Automat verstandenwerden
Preprocessing: Analyse des Musters und Speicherung in Array derLänge m.Preprocessing dauert O(m).
KMP
4 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
KMP findet Muster in TextNaiver Algorithmus vergleicht O(M · n) viele Zeichen.KMP nutzt bei der Suche gewonnene Information aus.Algorithmus kann anschaulich als Endlicher Automat verstandenwerdenPreprocessing: Analyse des Musters und Speicherung in Array derLänge m.
Preprocessing dauert O(m).
KMP
4 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
KMP findet Muster in TextNaiver Algorithmus vergleicht O(M · n) viele Zeichen.KMP nutzt bei der Suche gewonnene Information aus.Algorithmus kann anschaulich als Endlicher Automat verstandenwerdenPreprocessing: Analyse des Musters und Speicherung in Array derLänge m.Preprocessing dauert O(m).
Initialisierung
5 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 0
Vergleich 1
6 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 1
Vergleich 2
7 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 2
Vergleich 3
8 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 3
Vergleich 4
9 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 4
Vergleich 5
10 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 5
Vergleich 6
11 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 6
Shift
12 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 6
Vergleich 7
13 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 7
Vergleich 8
14 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 8
Vergleich 9
15 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Position 1 2 3 4 5 6 7 8 9 10 11 12 13 ...Text a b a b a b c b a b a b c
Muster a b c
Zahl Vergleiche: 9
Knuth Morris Pratt Applet
16 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
http://www.enseignement.polytechnique.fr/profs/informatique/Jean-Jacques.Levy/00/pc4/strmatch/e.html
17 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Lempel-Ziv Kodierung
Lempel-Ziv
18 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Beobachtung: Texte enthalten Redundanz
Und als ich an die Rheinbrück’ kam,Wohl an die Hafenschanze,Da sah ich fließen den Vater RheinIm stillen Mondenglanze.
“Sei mir gegrüßt, mein Vater Rhein,Wie ist es dir ergangen?Ich habe oft an dich gedachtMit Sehnsucht und Verlangen.”
Kodierung im Dictionary
19 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Idee: Sich wiederholende Muster werden in Dictionary geschrieben.Vorteil: Können mit weniger Bits codiert werden.
LZ bietet:1 Kann auf alle Sorten von Daten angewandt werden.2 Single Pass: Dictionary wird beim Durchlauf der Daten erzeugt.3 Dictionary muss nicht mit übertragen werden.
Kodierung im Dictionary
19 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Idee: Sich wiederholende Muster werden in Dictionary geschrieben.Vorteil: Können mit weniger Bits codiert werden.LZ bietet:
1 Kann auf alle Sorten von Daten angewandt werden.2 Single Pass: Dictionary wird beim Durchlauf der Daten erzeugt.3 Dictionary muss nicht mit übertragen werden.
20 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Procedure naiveLZCompress(〈s1, . . . , sn〉 ,Σ)D:= Σ // Init Dictionaryp:= s1 // current stringfor i := 2 to n do
if p ◦ si ∈ D then p:= p ◦ sielse
output code for pD:= D ∪ p ◦ sip:= si
output code for p
21 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a
DictionaryIndex Entry Index Entry0 71 82 93 104 115 126 13
22 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a
DictionaryIndex Entry Index Entry0 71 82 93 104 115 126 13
23 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a
DictionaryIndex Entry Index Entry0 a 71 b 82 93 104 115 126 13
24 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a
DictionaryIndex Entry Index Entry0 a 71 b 82 93 104 115 126 13
25 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0
DictionaryIndex Entry Index Entry0 a 71 b 82 93 104 115 126 13
26 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 104 115 126 13
27 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 104 115 126 13
28 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 104 115 126 13
29 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 115 126 13
30 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 115 126 13
31 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 115 126 13
32 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 1
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 126 13
33 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 1 0
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 126 13
34 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 126 13
35 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 aa 126 13
36 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 aa 126 13
37 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 aa 126 13
38 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 aa 126 13
39 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 aa 126 abb 13
40 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 aa 126 abb 13
41 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4
DictionaryIndex Entry Index Entry0 a 71 b 82 ab 93 bb 104 ba 115 aa 126 abb 13
42 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4
DictionaryIndex Entry Index Entry0 a 7 baa1 b 82 ab 93 bb 104 ba 115 aa 126 abb 13
43 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4 2
DictionaryIndex Entry Index Entry0 a 7 baa1 b 82 ab 93 bb 104 ba 115 aa 126 abb 13
44 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4 2
DictionaryIndex Entry Index Entry0 a 7 baa1 b 82 ab 93 bb 104 ba 115 aa 126 abb 13
45 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4 2
DictionaryIndex Entry Index Entry0 a 7 baa1 b 8 aba2 ab 93 bb 104 ba 115 aa 126 abb 13
46 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4 2 6
DictionaryIndex Entry Index Entry0 a 7 baa1 b 8 aba2 ab 93 bb 104 ba 115 aa 126 abb 13
47 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4 2 6
DictionaryIndex Entry Index Entry0 a 7 baa1 b 8 aba2 ab 93 bb 104 ba 115 aa 126 abb 13
48 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4 2 6
DictionaryIndex Entry Index Entry0 a 7 baa1 b 8 aba2 ab 9 abba3 bb 104 ba 115 aa 126 abb 13
49 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4 2 6 5
DictionaryIndex Entry Index Entry0 a 7 baa1 b 8 aba2 ab 9 abba3 bb 104 ba 115 aa 126 abb 13
usw....
50 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 0 1 2 4 2 6 5
DictionaryIndex Entry Index Entry0 a 7 baa1 b 8 aba2 ab 9 abba3 bb 104 ba 115 aa 126 abb 13
Ergebnis in farblos
51 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Data a b b a a b b a a b a b b a a a a0 1 1 0 2 4 2 6 5 5
DictionaryIndex Entry Index Entry0 a 7 baa1 b 8 aba2 ab 9 abba3 bb 10 aaa4 ba 11 ×5 aa 12 ×6 abb 13 ×
Dekodierung
52 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Procedure naiveLZDecode(〈c1, . . . , ck 〉)D:= Σp:= ε // current stringfor i := 1 to k do
D:= D ∪ p · decode(ci )[1]p:= cioutput decode(p)
Dekodierung
53 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Beispiel: Bitte selbst!
Verfeinerungen
54 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Wörterbuchgröße begrenzen, z.B. |D| ≤ 4096 12bit codes.Von vorn wenn Wörterbuch voll Blockweise arbeitenKodierung mit variabler Zahl Bits (z.B. Huffman, arithmetic coding)Selten benutzte Wörterbucheinträge löschen ???Wörterbuch effizient implementieren:(universelles) hashing
Beobachtungen
55 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
AnlaufkostenCodierte Teilwort haben die Tendenz länger zu werdenDictionary enthält Worte, die evtl. gar nicht gebraucht werden
56 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
http://www.cs.sfu.ca/CC/365/li/squeeze/
Ankündigung
57 Dennis Luxen:10. Übung – Algorithmen II
Fakultät für InformatikInstitut für Theoretische Informatik
Nächste Woche keine Übung,aber Vorlesung!