Algorithmen und Datenstrukturen
- D3. Kompression1
Marcel L¨ uthi
Universit¨ at Basel
- 23. Mai 2018
1Folien basierend auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/55DataCompression-2x2.pdf
Algorithmen und Datenstrukturen D3. Kompression 1 Marcel L uthi - - PowerPoint PPT Presentation
Algorithmen und Datenstrukturen D3. Kompression 1 Marcel L uthi Universit at Basel 23. Mai 2018 1Folien basierend auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/55DataCompression-2x2.pdf Einf
Universit¨ at Basel
1Folien basierend auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/55DataCompression-2x2.pdf
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Abraham Lempel
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Das meiste wird verworfen 200 Petabyte wurden bisher dauerhaft archiviert.
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Quelle: Sedgewick & Wayne, Algorithmen, Abbildung 5.56
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Widerspruch, da man so Gr¨
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
class BinaryStream : def writeBit(b : boolean) def writeNBitNumber (number : int , n: int) def writeChar(c : char) def writeString (s : string) ... def readBit () -> boolean def readNBitNumber (n: int) -> number def readChar () -> char def readString (nChars) -> string ...
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
A B R A C A D A
01000001 01000010 01010010 01000001 01000011 01000001 01000100 01000001
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
A B R A C A D A B R A 1 00 01 10 1 00
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
A B R A C A D A B R A 1 00 01 10 1 00
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
A B R A C A D A B R A 1 00 01 10 1 00
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
A B R A C A D A B R A 1 00 01 10 1 00
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Falls ja (also cj = ciw), f¨ uge Suffix w zu S hinzu.
F¨ ur alle s ∈ S und alle c ∈ C Falls c = sw (s is Pr¨ afix von c), f¨ uge Suffix w zu S hinzu. Falls s = cw (w is Pr¨ afix von s), f¨ uge Suffix w zu S hinzu.
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Quelle: Algorithmen, Sedgewick & Wayne, Abbildung 5.64
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
1 Frequenz von jedem Zeichen in String z¨
2 Wald von B¨
3 Solange noch nicht alle B¨
Verbinde B¨ aume mit kleinster Frequenz
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Quelle: Algorithmen, Sedgewick & Wayne, Abbildung 5.64
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Quelle: Algorithmen, Sedgewick & Wayne, Abbildung 5.64
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Quelle: Algorithmen, R. Sedgewick & K. Wayne, Abbildung 5.68
Vor innerem Knoten: 0 Einf¨ ugen Vor Blatt: 1 Einf¨ ugen
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Input A B R A C A D A B R A B R A match A B R A C A D AB RA BR ABR A Wert 41 42 52 41 43 41 44 81 83 82 88 41
Schl¨ ussel Wert ... ... A 41 B 42 C 43 D 44 ... ... Schl¨ ussel Wert AB 81 BR 82 RA 83 AC 84 CA 85 AD 86 Schl¨ ussel Wert DA 87 ABR 88 RAB 89 BRA 8A ABRA 8B
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Schl¨ ussel: Substrings Werte: W -bit Codew¨
L¨ angstes Pr¨ afix s von (unverarbeitetem) String in Symboltabelle suchen Codewort schreiben s + c in Symboltabelle schreiben (c ist n¨ achstes Zeichen)
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Wert 41 42 52 41 43 41 44 81 83 82 88 41 80 Output A B R A C A D AB RA BR ABR A
Schl¨ ussel Wert ... ... 41 A 42 B 43 C 44 D ... ... Schl¨ ussel Wert 81 AB 82 BR 83 RA 84 AC 85 CA 86 AD Schl¨ ussel Wert 87 DA 88 ABR 89 RAB 8A BRA 88 ABRA
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Schl¨ ussel: Substrings Werte: W -bit Codew¨
Codewort lesen String in Symboltabelle suchen. String schreiben Symboltabelle aktualisieren
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Input A B A B A B A match A B AB ABA Wert 41 42 81 83 80
Schl¨ ussel Wert ... ... A 41 B 42 C 43 ... ... Schl¨ ussel Wert AB 81 BA 82 ABA 83
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Wert 41 42 81 83 80 Output A B AB ???
Schl¨ ussel Wert ... ... 41 A 42 B 43 C ... ... Schl¨ ussel Wert 81 AB 82 BA ??? ??? Problem Code 83 wird ben¨
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW
Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW