10. Übung – Algorithmen II - KIT – ITI Algorithmik...

65
1 Dennis Luxen: 10. Übung – Algorithmen II Fakultät für Informatik Institut für Theoretische Informatik Institut für Theoretische Informatik, Prof. Sanders 10. Übung – Algorithmen II Dennis Luxen, Johannes Singler KIT – Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

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!

58 Dennis Luxen:10. Übung – Algorithmen II

Fakultät für InformatikInstitut für Theoretische Informatik

Fine.