algorithmen und datenstrukturen
play

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


  1. 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

  2. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Einf¨ uhrung

  3. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW ¨ Ubersicht Sortieren Komplexit¨ ats- analyse Sortieren Fundamentale Datenstrukturen Suchen (Tries) A&D Suchen Graphen Kompression Strings Substring Suche Weiterf¨ uhrende Themen

  4. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Informatiker des Tages : Abraham Lempel Professor am Technion (Israel Institute of Technology) Forschungsgebiet: Informationstheorie Gewinner der IEEE Richard W. Hamming Medal Entwickler der Lempel-Ziv Familie von Komprimierungsalgorithmen. Abraham Lempel Ziv, Jacob, and Abraham Lempel. “A universal algorithm for sequential data compression.“ IEEE Transactions on information theory 23.3 (1977)

  5. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Datenkompression Kompression wird gebraucht um Gr¨ osse einer Datei zu reduzieren Weniger Speicherplatz ben¨ otigt Schnellere ¨ Ubertragung (mehr Information bei kleinerer Bandbreite) Fun Facts: Jede Minuten werden 60 Stunden Video auf Youtube hochgeladen. Im Cern werden pro Sekunde ca 1 Petabyte Daten generiert Das meiste wird verworfen 200 Petabyte wurden bisher dauerhaft archiviert. Kompression ist nur m¨ oglich, da die meisten Daten viel Redundanz aufweisen.

  6. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Quiz Geben Sie Beispiele von Redundanz in: geschriebenem Text Musik Bilder Videos.

  7. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Anwendungen Komprimierung von Dateien Dateien (gzip, bzip, compress) Archivierungsprogramme (PKZip. Winzip) Dateisysteme (NTFS, ZFS) Multimedia Bilder: Jpeg, png, ... Musik: MP3, ogg Videos: Mpeg, divX, ... Genetik: Kompression von Sequenzdaten

  8. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Idee: Verlustfreie Kompression Message: Bin¨ ardaten B die komprimiert werden sollen Komprimieren: Komprimierte Repr¨ asentation C ( B ) Dekomprimieren: Rekonstruktion von Orginaldaten B Quelle: Sedgewick & Wayne, Algorithmen, Abbildung 5.56 Kompressionsrate: Bits in C ( B ) / Bits in B

  9. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Beispiel: Code von fester L¨ ange f¨ ur Gensequenzen Genom: Alphabet - ACGT Ziel: Gensequenz der L¨ ange N codieren (Beispiel ATAGCGTTAG) Ascii Code 2-Bit Code Zeichen Bin¨ arrepr¨ asentation Zeichen Bin¨ arrepr¨ asentation A 01000001 A 00 C 01000011 C 01 T 01010100 T 10 G 01000111 G 11

  10. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Limiten der Kompression Nicht alle Daten k¨ onnen komprimiert werden. Kompression Komp nicht m¨ oglich. einfach.

  11. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Universelle Kompression? Theorem Es gibt keinen Algorithmus der jeden beliebigen Bitstring komprimieren kann. Argument 1: Idee: Kompressionsalgorithmus wird immer wieder rekursiv auf Ausgabe ausgef¨ uhrt. Widerspruch, da man so Gr¨ osse 0 erreicht

  12. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Universelle Kompression? Theorem Es gibt keinen Algorithmus der jeden beliebigen Bitstring komprimieren kann. Argument 2: Annahme: Alle Bitstrings der L¨ ange 1000 k¨ onnen komprimiert werden Also 2 1000 verschiedene Strings k¨ onnen mit max 999 Bits codiert werden. Widerspruch, da wir nur max 2 999 verschiedene Strings mit 999 Bits codieren k¨ onnen.

  13. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Schreiben / Lesen von bin¨ aren Daten 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 ...

  14. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Beispiel: Datum IPython Notebooks: Compression.ipynb

  15. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Laufl¨ angencodierung

  16. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Laufl¨ angencodierung Einfachste Art der Redundanz in Bitstrings: Viele aufeinanderfolgende 0 oder 1 0000000000000001111111000000011111111 Repr¨ asentation: 4 (oder 8) bit Z¨ ahler die alternierend f¨ ur Anzahl 0 oder 1 stehen (beginnend mit 0) 1111 0111 0111 1011 ���� ���� ���� ���� 15 × 0 7 × 1 7 × 0 11 × 1 Was machen wir wenn Sequenz von 0 oder 1 l¨ anger als Maximum des Z¨ ahlers ist? Passende Sequenz der L¨ ange 0 einf¨ ugen.

  17. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Laufl¨ angencodierung Einfachste Art der Redundanz in Bitstrings: Viele aufeinanderfolgende 0 oder 1 0000000000000001111111000000011111111 Repr¨ asentation: 4 (oder 8) bit Z¨ ahler die alternierend f¨ ur Anzahl 0 oder 1 stehen (beginnend mit 0) 1111 0111 0111 1011 ���� ���� ���� ���� 15 × 0 7 × 1 7 × 0 11 × 1 Was machen wir wenn Sequenz von 0 oder 1 l¨ anger als Maximum des Z¨ ahlers ist? Passende Sequenz der L¨ ange 0 einf¨ ugen.

  18. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Laufl¨ angencodierung Einfachste Art der Redundanz in Bitstrings: Viele aufeinanderfolgende 0 oder 1 0000000000000001111111000000011111111 Repr¨ asentation: 4 (oder 8) bit Z¨ ahler die alternierend f¨ ur Anzahl 0 oder 1 stehen (beginnend mit 0) 1111 0111 0111 1011 ���� ���� ���� ���� 15 × 0 7 × 1 7 × 0 11 × 1 Was machen wir wenn Sequenz von 0 oder 1 l¨ anger als Maximum des Z¨ ahlers ist? Passende Sequenz der L¨ ange 0 einf¨ ugen.

  19. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Laufl¨ angencodierung Einfachste Art der Redundanz in Bitstrings: Viele aufeinanderfolgende 0 oder 1 0000000000000001111111000000011111111 Repr¨ asentation: 4 (oder 8) bit Z¨ ahler die alternierend f¨ ur Anzahl 0 oder 1 stehen (beginnend mit 0) 1111 0111 0111 1011 ���� ���� ���� ���� 15 × 0 7 × 1 7 × 0 11 × 1 Was machen wir wenn Sequenz von 0 oder 1 l¨ anger als Maximum des Z¨ ahlers ist? Passende Sequenz der L¨ ange 0 einf¨ ugen.

  20. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Laufl¨ angencodierung: Anwendungen Bitmaps speichern:

  21. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Laufl¨ angencodierung: Anwendungen Bitmaps speichern:

  22. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Beispiele und Implementation IPython Notebooks: Compression.ipynb

  23. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Huffmann coding

  24. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Huffman Komprimierung: Motivation Ascii Codierung weist jedem Zeichen einen 8-bit Wert zu A B R A C A D A 01000001 01000010 01010010 01000001 01000011 01000001 01000100 01000001 D ben¨ otigt gleich viel Speicher wie A. D kommt 1 mal vor, A 4 mal Codes variabler L¨ ange Huffman Codierung weist jedem Zeichen einen Code variabler L¨ ange zu.

  25. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Huffman Komprimierung: Motivation A B R A C A D A B R A 0 1 00 0 01 0 10 0 1 00 0 Komprimierter String: 010000101001000 Braucht viel weniger Platz Aber beginnt String mit AB oder C? Wie legen wir den Code fest? Wie weiss Empf¨ anger was Code war?

  26. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Huffman Komprimierung: Motivation A B R A C A D A B R A 0 1 00 0 01 0 10 0 1 00 0 Komprimierter String: 010000101001000 Braucht viel weniger Platz Aber beginnt String mit AB oder C? Wie legen wir den Code fest? Wie weiss Empf¨ anger was Code war?

  27. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Huffman Komprimierung: Motivation A B R A C A D A B R A 0 1 00 0 01 0 10 0 1 00 0 Komprimierter String: 010000101001000 Braucht viel weniger Platz Aber beginnt String mit AB oder C? Wie legen wir den Code fest? Wie weiss Empf¨ anger was Code war?

  28. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Huffman Komprimierung: Motivation A B R A C A D A B R A 0 1 00 0 01 0 10 0 1 00 0 Komprimierter String: 010000101001000 Braucht viel weniger Platz Aber beginnt String mit AB oder C? Wie legen wir den Code fest? Wie weiss Empf¨ anger was Code war?

  29. Einf¨ uhrung Laufl¨ angencodierung Huffmann coding LZW Pr¨ afixfreie Codes Zeichen bleiben unterscheidbar, wenn kein Zeichen ein Pr¨ afix eines andern ist. Code Zeichen A 0 B 1111 C 110 D 100 R 1110 Welcher String ist hier codiert? 011111110011001000111111100 0 1111 1110 0 110 0 100 0 1111 1110 0 ���� ���� ���� ���� ���� ���� ���� ���� ���� ���� ���� A B R A C A D A B R A

Recommend


More recommend