1 / 83

Codes & Formate

Codes & Formate. Digitales Koffer packen. Mit Huffman Codierung. Lernziele. Sie können erklären, warum es normalerweise zwei Schritte braucht um Information möglichst effizient zu speichern, bzw. zu übermitteln

Download Presentation

Codes & Formate

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Codes & Formate

  2. Digitales Koffer packen Mit Huffman Codierung

  3. Lernziele • Sie können erklären, warum es normalerweise zwei Schritte braucht um Information möglichst effizient zu speichern, bzw. zu übermitteln • Sie können erklären, warum die Verteilung der Zeichen in einer Nachricht einen entscheidenden Einfluss darauf hat, wie effizient diese Nachricht komprimiert werden kann • Sie wissen, was eine Huffman Codierung ist und können sie auf eine kurze Textnachricht anwenden

  4. Aufgabenstellung: • Sie wollen ihrem Freund eine Text-Botschaft übermitteln, können dazu aber nur Zahlen verwenden (entscheiden Sie selbst ob sie Dezimal- oder Binärzahlen benutzen). • Überlegen Sie sich eine Methode, wie die gegebene Botschaft möglichst genauund möglichst kompaktin Zahlen übersetzt werden kann. Dann erstellen Sie zwei Textdokumente: • Ein Dokument soll nur die Zahlenfolge enthalten • Im anderen Dokument formulieren Sie eine Anleitung, mit deren Hilfe ihr Freund die ursprüngliche Botschaft aus der Zahlenfolge rekonstruieren kann

  5. Auswertung • Hat es geklappt? • Was war schwierig? • Welche Informationen wurden übermittelt? (genau?) • Wie viele Zahlen waren nötig? (kompakt?) • Welche anderen Botschaften könnten so verschickt werden? • Welche grundsätzliche Idee steckt hinter dieser Methode?

  6. Information Genau & Kompakt Codieren Komprimieren Koffer packen (Komprimieren von Information) • Koffer (~ Format) so wählen, dass alles eingepackt werden kann, was man im Urlaub vielleicht brauchen könnte • Ziel: Der Koffer soll für alle Urlaube geeignet sein! • Effizient packen, so dass möglichst wenig Luft im Koffer bleibt  kann davon abhängen, was genau eingepackt wurde! • Ziel: Der Koffer für diesen Urlaub soll möglichst klein werden!

  7. Effizientes Packen von Buchstaben • Codieren von Buchstaben als binäre Codewörter • ASCII Code • Komprimieren der Bitsequenz • z.B. Huffman Codierung • kürzere Sequenz + neue Codewörter • Speichern oder Übermitteln • Dekomprimieren • Decodieren -> Darstellen

  8. ASCII (American Standard Code for Information Interchange) Kleinbuchstaben:

  9. Arbeitsauftrag Ihr Ziel ist herauszufinden, wie die Huffman Codierung funktioniert und sie selbst anwenden zu können • Benutzen Sie dazu das Applet: WindowsHuffmanShannonFano.jar • Experimentieren Sie mit dem Applet (nur Huffman Code) und versuchen Sie, die Fragen im Arbeitsblatt zu beantworten

  10. Besprechung • Suchen Sie sich einen Partner und tauschen Sie ihre Ergebnisse aus • Notieren Sie alles, was ihnen beiden noch unklar ist • Können Sie die grundsätzliche Idee formulieren?

  11. Lernziele • Sie können erklären, warum es normalerweise zwei Schritte braucht um Information möglichst effizient zu speichern, bzw. zu übermitteln • Sie können erklären, warum die Verteilung der Zeichen in einer Nachricht einen entscheidenden Einfluss darauf hat, wie effizient diese Nachricht komprimiert werden kann • Sie wissen, was eine Huffman Codierung ist und können sie auf eine kurze Textnachricht anwenden

  12. Grundsätzliche Idee bei Huffman • Häufige Zeichen (Buchstaben) werden in kurze Codewörter übersetzt • Das funktioniert nur, wenn der entstehende Code (die Codewörter) präfixfrei ist! • Die Bäumchen-Taktik zeigt, wie man diese Ideen umsetzt.

  13. Huffman Komprimierung

  14. Lernziele • Sie könne eine kurze Nachricht entschlüsseln, die mit dem Huffman Verfahren komprimiert wurde • Sie können erklären, was ein präfixfreier Code ist • Sie können beschreiben, für welche Nachrichten die Huffman Komprimierung besonders geeignet ist • Sie kennen einige Vor- und Nachteile von Datenkomprimierung

  15. Huffman Decodierung • Die binäre Nachricht: 0100111101001110010100111110 • Die Codewörter: e = 110 d = 111 o = 00 p = 010 s = 011 u = 100 c = 101 Hinweis: Am einfachsten ist es, wenn Sie sich zunächst den zu den Codewörtern gehörenden Baum aufzeichnen

  16. Und was daran war jetzt präfixfrei? o = 00 p = 010 s = 011 u = 100 c = 101 e = 110 d = 111

  17. Pseudocode • ... ist eine sprachliche Mischung aus natürlicher Sprache, mathematischer Notation und einer höheren Programmier-sprache • arrayMax(A, n) • // Input: Ein Array A, der n Integer Werte enthält • // Output: Das maximale Element in A • currentMax = A[0] • for i = 1 to n - 1 • if currentMax < A[i] • currentMax = A[i] • end • end • return currentMax

  18. decodieren(nachricht_bin, codewortliste) // Input: die Bitsequenz nachricht_bin und // eine Liste, die binären Codeworten Zeichen zuordnet // Output: nachricht_txt; die decodierte Nachricht, eine Sequenz von Zeichen nachricht_txt = leer; länge = 1; while (nachricht_bin != leer) zeichen_bin = get_first_n_bits(nachricht_bin, länge); if found_in(zeichen_bin, codewortliste) zeichen_txt = get_letter(zeichen_bin, codewortliste) nachricht_txt = attach_letter(zeichen_txt); nachricht_bin = delete_first_n_bits(länge); länge = 1; else länge ++; end end return nachricht_txt;

  19. Pseudocode für Huffman Codierung codieren(nachricht_ascii) // Input: die Bitsequenz nachricht_ascii, bestend aus einer Sequenz von ASCII Zeichen (jeweils ein Byte) // Output: nachricht_bin; die codierte Nachricht, eine Bitsequenz // codewortliste; eine Liste, die binären Codeworten ASCII Zeichen zuordnet

  20. Komprimierung allgemein Komprimieren, z.B. mit Huffman Codierung Dekomprimieren, z.B. mit Huffman Decodierung Welche Informationen braucht es hier? speichern /verschicken

  21. Huffman Komprimierung • ASCII Nachricht in 8-er Blöcke aufteilen, zählen wie oft jeder Block vorkommt • Blöcke nach Häufigkeit ordnen • Mit Huffman Baum präfixfreie Codewortliste erstellen • ASCII Nachricht nach Huffman übersetzen, siehe Liste • Bitsequenz & Liste in File speichern, evtl. verschicken • Auch transportiert werden muss die Information, dass dieses File Huffman-codiert ist

  22. Fragen zu Huffman & Komprimierung • Was ist die grundlegende Idee hinter Huffman Komprimierung? • Wann ist Huffman am effizientesten? • Wann lohnt sich Huffman sicher nicht? • Warum benutzt z.B. Word kein Huffman Komprimierung? • Was wären andere grundlegende Ideen zu Komprimierung von Daten? (Erklären Sie anhand eines Beispiels) • Was sind allgemeine Vorteile von Datenkomprimierung? • Was sind allgemeine Nachteile der Datenkomprimierung?

  23. Enthropie

  24. Lernziele • Sie verstehen, was Hamlet mit dem zersplitternden Weinglas zu tun hat, und wie beide mit der Huffman Kodierung zusammenhängen • Sie kennen die allgemeine Form der Huffman Kodierung

  25. Was ist eigentlich Information? • Was ist das kleinstmögliche Bisschen an Information? Sein oder nicht Sein, das ist hier die Frage.

  26. Ein BIT ist: • eine Bezeichnung für eine Binärziffer (üblicherweise „0“ und „1“). • eine Maßeinheit für die Datenmenge bei digitaler Speicherung von Daten. Die Datenmenge entspricht in diesem Fall der verwendeten Anzahl von binären Variablen zur Abbildung der Information. • eine Maßeinheit für den Informationsgehalt (siehe Shannon). Dabei ist 1 Bit der Informationsgehalt, der in einer Auswahl aus zwei gleich wahrscheinlichen Möglichkeiten enthalten ist. • Thereare 10 sorts of people: • thosewho unterstand binary and • thosewho do not.

  27. Ordnen Sie diese Bitsequenzen nach Informationsgehalt (aufsteigend) • 0101010101010101... • 1111111111111111... • 0110001101100101... • 0010111001100101... • 0000000011111111... • 0011001100110011...

  28. Ordnen Sie diese Bitsequenzen nach Informationsgehalt (aufsteigend) • 0101010101010101...  2. • 1111111111111111...  1. (= 1 Bit) • 0110001101100101...  4c • 0010111001100101...  4b (ASCII = ce) • 0000000011111111...  4a • 0011001100110011...  3.

  29. Entropie ist • eine physikalische Zustandsgröße in der Thermodynamik • ein Maß für den mittleren Informationsgehalt oder auch Informationsdichte eines Zeichensystems • Warum sollte uns das interessieren?  Huffman Komprimierung ist das Paradebeispiel für eine Entropiecodierung

  30. Entropie & Wahrscheinlichkeit • Der Normalzustand (= maximale Entropie) ist die Gleichverteilung • Abweichungen von der Gleichverteilung bedeuten: • es gibt eine gewisse Ordnung, Struktur • man kann es kompakter beschreiben 0100011110101010100101010101 0000000000000011111111111111 was ist wahrscheinlicher? was trägt mehr Information?

  31. Berechnen der Informationsdichte • H = Entropie • Z = endliches Alphabet von Zeichen • z = ein einzelnes Zeichen • p = Auftretenswahrscheinlichkeit (=Häufigkeit z/Gesamthäufigkeit) Für das deutsche Alphabet: Eine perfekte Komprimierung würde diesen Entropiewert erreichen

  32. Wozu brauchen wir das? • ASCII Nachricht in 8-er Blöcke aufteilen, zählen wie oft jeder Block vorkommt • Blöcke nach Häufigkeit ordnen • Mit Huffman Baum präfixfreie Codewortliste erstellen • ASCII Nachricht nach Huffman übersetzen, siehe Liste • Bitsequenz & Liste in File speichern, evtl. verschicken • Auch transportiert werden muss die Information, dass dieses File Huffman-codiert ist 0101010101010101... 1111111111111111... 0110001101100101... 0010111001100101... 0000000011111111... 0011001100110011... Was, wenn wir nicht wissen ob es ASCII Zeichen sind? (z.B. beim zippen)

  33. Wozu brauchen wir das? • Entropie wird pro Zeichen berechnet - aber was ist ein Zeichen? 8er: 01100011 01100101 4er: 0110 0011 0110 0101 0101010101010101... 1111111111111111... 0110001101100101... 0010111001100101... 0000000011111111... 0011001100110011... noch allgemeiner: konditionelle Entropie Normierung für unterschiedliche Block-, bzw. Zeichenlängen

  34. Huffman generalisiert • Binäre Nachricht durch Entropietests/Schätzung darauf analysieren, welche Bits ein Zeichen bilden sollten, so dass sich die niedrigste Entropie ergibt • Binäre Nachricht in Zeichen aufteilen, zählen wie oft jedes Zeichen vorkommt • Blöcke nach Häufigkeit ordnen • Mit Huffman Baum präfixfreie Codewortliste erstellen • Binäre Nachricht nach Huffman übersetzen, s. Liste • Bitsequenz & Liste in File speichern, evtl. verschicken • Auch transportiert werden muss die Information, dass dieses File Huffman-codiert ist

  35. Entropiecodierung bedeutet • mit einer Entropieschätzung herausfinden, welche Abschnitte der originalen Bitsequenz man als Zeichen ansehen sollte • diese Zeichen dann so in präfixfreie Codewörter übersetzen, dass den häufigsten Zeichen die kürzesten Codewörter zugeordnet werden  ACHTUNG: trade-off der Listengrösse berücksichtigen!

  36. Entropiecodierung ist • eine allgemeine Methode um zu bestimmen, wie viel Luft im Koffer ist, und den Koffer dann so umzupacken, dass möglicht wenig Luft verbleibt • wie Legomodell verpacken. Zuerst muss man herausfinden, in wie kleine Teile man es zerlegen soll, und dann braucht man eine Methode, um diese Teile effizient ineinander zu stapeln

  37. Huffman Codierung • ist die wohl am weitesten verbreitete Art der Entropiecodierung • wird oft als letzter Schritt auf beliebige Bitsequenzen angewandt • ist nur annähernd optimal. Bsp: völlig zufällige Sequenz mit drei mal mehr Nullen als Einsen • - (1/4*lg(1/4)+3/4*lg(3/4)) = 0.811278 Bit/Zeichen(=Bit) • weniger als ein Bit geht aber nicht, die beiden kürzest möglichen Codewörter haben jeweils ein Bit • Lösung: Arithmetische Codierung

  38. Arithmetische Codierung (Zusatz) • Die gesamte Nachricht in einer einzigen Zahl ... • ... ausserdem braucht es die Zeichen und ihre Frequenz ... • ... und einen schnellen Computer A = 0.6 B = 0.3 C = 0.1 D = 0.1 Zahl = 0.536 Nachricht = ACD

  39. Lernziele - erreicht?? • Sie verstehen, was Hamlet mit dem zersplitternden Weinglas zu tun hat, und wie beide mit der Huffman Kodierung zusammenhängen • Sie kennen die allgemeine Form der Huffman Kodierung Zusatz: • Sie können erklären • a) warum die Block-Entropie einer Bitsequenz am kleinsten ist, wenn man die gesamte Sequenz als einen einzigen Block (= ein Zeichen) ansieht • b) warum es trotzdem keinen Sinn macht, die ganze Sequenz als eine einziges Zeichen zu kodieren

  40. (Datei-) Formate

  41. Lernziele • Sie kennen die allgemeine Definition von Codierung • Sie wissen, was ein (Datei-) Format ist – und warum die meisten Formate einen header haben • Sie können eine Binäre Repräsentation für das Speichern eines Spielzustands entwickeln • Sie verstehen, wie die Begriffe Information, Code und Format zusammenhängen

  42. Komprimierung allgemein Komprimieren, z.B. mit Huffman Codierung Dekomprimieren, z.B. mit Huffman Decodierung Welche Informationen braucht es hier? speichern /verschicken

  43. Information Genau & Kompakt Codieren Komprimieren Koffer packen (Komprimieren von Information) • Koffer (~ Format) so wählen, dass alles eingepackt werden kann, was man im Urlaub vielleicht brauchen könnte • Ziel: Der Koffer soll für alle Urlaube geeignet sein! • Effizient packen, so dass möglichst wenig Luft im Koffer bleibt  kann davon abhängen, was genau eingepackt wurde! • Ziel: Der Koffer für diesen Urlaub soll möglichst klein werden!

  44. Codieren Komprimierte digitale Information Digitale Information Digitale Information Nicht-digitale Information Nicht-digitale Information Komprimierte digitale Information Beispiel:„Fischers Fritz fischt frische...“ Entdigitalisieren?! Darstellen Digitalisieren Welche Informationen braucht es hier? Wie geht das? Entkomprimieren Komprimieren

  45. Digitale Repräsentation von Schach • Was ist wichtig? • nur die Information, die einen Spielstande eindeutig definiert • Was ist möglich? • alle Spielstände müssen repräsentiert werden können • Wie packe ich es geschickt ein? • es geht nicht um maximale Effizienz, man muss aber trotzdem keinen Speicherplatz verschwenden oder: ein universeller digitale Koffer für Schach Vorschläge? Wie viele Bits brauchen Sie?

  46. Ein Schach Format (.sch), 257 BIT • Das erste Bit gibt an, wer am Zug ist (1=schwarz, 0=weiss) • Die folgenden 256 Bit repräsentieren die Belegung der 64 Felder, mit jeweils 4 Bit pro Feld (nummeriert zeilenweise von links nach rechts, dann spaltenweise von oben nach unten). • Das erste Bit pro Feld steht für die Farbe der Figur: • Die letzten 3 Bit pro Feld stehen für die Figur, die hier steht: • 1 = schwarz • 000 = leer • 001 = Bauer • 010 = Turm • 011 = Springer • 0 = weiss • 100 = Pferd • 101 = Dame • 110 = König • 111 = steht für nichts

  47. Ein Format für Schieber-Jass • Das Spiel: 4 Spieler haben zu Beginn je 9 Karten, spielen sie reihum aus, und nach jeder Runde wandern 4 Karten auf den einen oder anderen Stapel von gespielten Karten. • Aufgabe: erfinden Sie ein Format, mit dem jeder mögliche Zustand des Spiels binär repräsentiert werden kann. • Formulieren Sie von Ihnen erfundene Codierung so, dass ein anderer Schüler eine entsprechende Bitsequenz in den Spielzustand zurückübersetzen könnte • Geben Sie an, wie viele Bits für die Speicherung eines Spielzustands benötigt werden

  48. Und wie passt das jetzt alles zusammen? Format Information Codierung

  49. Definition Code:

More Related