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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend