Formate, Codes & Algorithmen

Slides:



Advertisements
Ähnliche Präsentationen
Dateiformate Tobias Rolle IT takes more than systems …
Advertisements

Motivation Bisher: Codes mit möglichst kurzer Codelänge.
Mit dem Computer kann man ganz toll präsentieren
Das LCA – Problem in Suffixbäumen
Information - syntaktisch
11. Datenkomprimierung Bei den meisten bisher betrachteten Algorithmen wurde vor allem das Ziel verfolgt, möglichst wenig Zeit aufzuwenden, und erst in.
Fragedateien für „Wer wird Millionär“ selbst erstellen
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Markus Tank, Wie arbeitet man mit dem Rich Text Editor?
HTML - Einführung Richard Göbel.
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Grundlagen der Sprache
Internetstruktur Das Internet besteht aus vielen Computern, die weltweit untereinander vernetzt sind.
HTML - Eine erste Annäherung
Einführung XML XML Einführung Andreas Leicht.
Schulen ans Netz Oberhausener Moderatoren
Darstellung von Information
Gymnasium Horn – Bad Meinberg
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
Codes & Formate.
Tipps und Tricks für Word 2000 Aytac, Felix, Steffen 04/05.
TD Hilfe Für neue TD`S die Hilfe brauchen. Hier rauf um ein Turnier Zu Erstellen.
Seniorkom.at vernetzt Jung & Alt Das Internet ist reif
Grafikformate Nicolas Ruh.
Datenformate: Text und Bild
Die Darstellung von alphanumerischen Zeichen mit dem Computer
Windows Befehlsskript
PDF-Datei erstellen Wir wollen nicht auf Papier drucken, sondern in eine PDF-Datei. (Portable Document Format) Wir öffnen das heruntergeladene Dokument.
Wird ganz am Anfang der HTML-Datei geschrieben Doctype html public bedeutet, dass man sich auf die Öffentlichkeit der html-dtd bezieht Html ist die meist.
Wo finde ich Meta-Tags…? Was sind Metatags…? Welche Meta-Tags sind am beliebtesten…? Sprachen von Meta-Tags…? Was ist eine Profildatei…? VTAB-09 Fenster.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Tutorium zur LV Online Research Ein Computerprogramm tut, was Du schreibst, nicht was Du willst.
Datenbanken Dantenbanksystem Data Base System Datenbasis (Daten)
Wohlgeformtheit und Gültigkeit Grundlagen der Datenmodellierung Anke Jackschina.
Aufbau der Stylesheet-Angabe Eigenschaft Eigenschaft das was man formatieren möchte Wert Wert Farbangaben, Einheiten oder Schlüsselworte Deklaration Kombination.
1 Nutzen Sie diese Powerpoint-Präsentation beim Selbstlernen oder in Veranstaltungen zur Einführung in das jeweilige Thema. Einführung Lernmodul Nutzungsbedingungen:
Bildbearbeitung Nicolas Ruh.
Formate, Codes & Algorithmen
Formate, Codes & Algorithmen
Spieltheorie Mária Némethy.
Ausgabe vom Seite 1, XML Eine Einführung XML - Eine Einführung.
Formate, Codes & Algorithmen
Grundlagen der Informatik - Prof. Slany 1 Grundlagen der Informatik Prof. Wolfgang SLANY.
Textverarbeitungsprogramme
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
PHP Basic.
Grundlegende Funktionsweise eines Computers
Formate, Codes & Algorithmen
Formate, Codes & Algorithmen
Formate, Codes & Algorithmen
Speichergrößen in der digitalen Datenverarbeitung
Algorithmik Formate, Codes & Algorithmen. (Datei-) Formate.
Bilder, Grafiken & Clips
CSS Cascading Style Sheets
Mensch – Maschine - Kommunikation
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
Delphi Chars und Strings
Pool Informatik 5 GZG FN Sj. 11/12
Daten und Information in der ITG
Grafikformate Nicolas Ruh.
Pool Informatik, Sj 11/12 GZG FN W.Seyboldt 1 Pool Informatik 5 GZG FN Sj. 11/12 Kopieren, Daten, Programme.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Titeldetailseite Mit dieser Anleitung werden Ihre Titel zu einem echten.
Förderverein Bürgernetz München Land e.V. Seite 1 von 16 Textverarbeitung-2016_06 © 2016–Günther Scheckeler Tel.: Inhalt 1 Bestandteile eines.
Präsentation mit dem Computer
oder: wie Computer die Welt sehen
Huffman – Kodierbaum zur Textkompression
oder: wie Computer die Welt sehen
Von Wietlisbach, Lenzin und Winter
Schach von Ben.
 Präsentation transkript:

Formate, Codes & Algorithmen Algorithmik Formate, Codes & Algorithmen

(Datei-) Formate

Digitale Information = Bitsequenzen 1 oder 0 Sein oder nicht Sein true oder false Ein Bit ist eine atomare Information Einen Informationsgehalt bekommt ein Bit, wenn es etwas repräsentiert z. B. schwanger / nicht schwanger Mehrere Bits können komplexere Informationen repräsentieren z.B. Zahlen, Farben, ... (oft Datentypen) Dazu muss man wissen, wofür eine bestimmte Bitsequenz (=Zeichen) steht ... und das wird komplizierter, wenn es nicht nur um eine Farbe, einen Buchstaben geht, sondern bspw. um ein ganzes Dokument Information existiert nicht in reiner Form eine Formulierung von Information kann für vieles stehen (repräsentieren)

Definition (Daten-/Datei-) Format: Ein Format ist eine spezifische Anordnung von Daten (Bits) für Speicherung, Weiterverarbeitung, Ausgabe, etc. Ein Format definiert so etwas wie eine Erwartungshaltung, in welcher Form (digitale) Information vorliegt. Das betrifft die Anordnung (wie teilt man die Sequenz in Zeichen auf?) die Codierung (für was steht ein Zeichen/Bitsequenz?) Diese grösstenteils impliziten (also nicht in der Sequenz enthaltenen) Informationen müssen allen Beteiligten bekannt sein – nur so kann man herausfinden, wofür die expliziten Informationen (Bitsequenz) stehen

Universalität vs. Speicherplatzbedarf Ein Format macht nur Sinn, wenn es (für einen gewissen Bereich) universell ist, also bspw. alle Fotos speichern kann, nicht nur die grünen Andererseits benötigt diese Universalität Speicherplatz und ist nicht immer einfach festzulegen: macht es beispielsweise Sinn, in .DOC Unicode zu benutzen, nur damit die Chinesen dasselbe Format haben? ... oder sollte man Meta-Informationen einbauen, so dass z.B. die Codierung ausgetauscht oder explizit mitgeschickt werden kann?

Digitale Repräsentation von Schach oder: ein universeller digitale Koffer für 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 Welche Informationen codiert man (explizit) als Zeichen, welche (implizit) in der Anordnung? es geht nicht um maximale Effizienz, man muss aber trotzdem keinen Speicherplatz verschwenden Vorschläge? Wie viele Bits brauchen Sie?

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 0 = weiss 000 = leer 100 = Pferd 001 = Bauer 101 = Dame 010 = Turm 110 = König 011 = Springer 111 = steht für nichts

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 die 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

Und woher weiss der Computer, welches Format eine Datei hat? Endung Header Diese Informationen sagen dem Computer, welche Brille er anziehen muss Die meisten Datei-Formate haben einen header, in dem sie sich vorstellen und zusätzliche Angaben zur Formatierung machen, z.B. Version/Variation des Formats Parameter allgemeine Zusatzinformationen

z.B. http://www.onlinehexeditor.com/ Beispiel.rtf öffnen mit Hex-Editor, z.B. http://www.onlinehexeditor.com/ { \rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf250 {\fonttbl\f0\fnil\fcharset0 GoudyOldStyleT-Regular;} {\colortbl;\red255\green255\blue255;\red6\green10\blue58;} \paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8 400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\t x5669\tx6236\tx6803\ql\qnatural\pardirnatural \f0\fs36 \cf2 Lirum \b larum \b0 L\ ‘f6ffelstiel }

RTF (Rich Text Format) Entwickelt von Microsoft, aber frei verfügbar Basierend auf Standard-Codetabellen (ASCII, UNICODE) Lesbar von allen gängigen Texteditoren, wobei u.U. Teile der Layout-Information ignoriert werden

RTF Spezifikationen Syntax: { <header> <document>} Der header beinhalten Kontrollwörter, die mit Backslash anfangen und mit Leerzeichen getrennt werden Im header wird zusätzliche Layoutinformation repräsentiert, z.B. Schriftfarbe oder Schrifttyp RTF kann mit verschiedenen Versionen von ASCII oder UNICODE Zeichen umgehen (Meta-Information im header) Bei RTF wird implizit angenommen, dass die entsprechenden Codetabellen verfügbar sind, und dass die Blöcke innerhalb der Bitsequenz in der richtigen Reihenfolge vorliegen

Zusammenfassung RTF kann mehr als TXT und weniger als DOC, das ist seine „digitale Nische“ RTF ermöglicht die Repräsentation von allgemeinen Layoutinformation durch standardisierte Kontrollwörter im header Das Layout für Textteile geschieht durch Auszeichnung des Dokuments mit Kontrollwörtern im Text (wie HTML)

Eine Analogie zur Zusammenfassung Bildinformation in einem etwas speziellen Format Die Brille implementiert die Decodierung Das Format gibt an, welche Brille man braucht

Konzepte Beispiele Format Eigene Formate für Spiele .rtf Header Endung Zeichen explizite & implizite Bestandteile Universalität Eigene Formate für Spiele .rtf

z.B. http://www.onlinehexeditor.com/ Datei: Raetsel öffnen mit Hex-Editor, z.B. http://www.onlinehexeditor.com/ <svg version="1.1“ xmlns="http://www.w3.org/2000/svg" xmlns:xlink=http://www.w3.org/1999/xlink xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/“ x="0px" y="0px" width="400px" height="400px" viewBox="0 0 400 400“ enable-background="new 0 0 400 400" xml:space="preserve"> <defs> </defs> <rect fill="#FF0000" stroke="none" x="0" y="0" width="400" height="400"/> <polygon fill="#FFFFFF" stroke="#FFFFFF" points="350,250 50,250 50,150 350,150"/> <polygon fill="#FFFFFF" stroke="#FFFFFF" points="250,350 150,350 150,50 250,50"/> </svg>

und verlustbehaftete Komprimierung Grafikformate und verlustbehaftete Komprimierung

Wie viel Information ist nötig? Anfangs- und Endpunkt definieren die Linie eindeutig Mittelpunkt und Radius definieren den Kreis eindeutig Die Eckpunkte definieren das Polygon eindeutig

Vektorgrafik Mit allgemeinen Kurven (z.B. Bezier Kurven) und noch mehr Parametern kann man jede beliebige Form berechen  kann zu extrem geringen Dateigrössen führen  Vektorgrafiken sind beliebig skalierbar 26 Kb

26 Kb

Reine Vektorgrafikformate Sind nicht weit verbreitet, meist proprietär, in Verbindung mit einem Editor – z.B. Adobe Illustrator (.ai) Ausnahme: SVG (scalable vector graphics) Benutzt werden Vektorgrafiken aber oft in Kombination, z.B. einzelne Ebenen in Photoshop Vektor-Fonts Zeichnungen in Word oder Powerpoint in Druckformaten (PDF, EPS) Interessant: .pptx hacken

Flagge der Marshall Islands

Konzepte Beispiele Vektor- vs. Raster Farbtiefe Farbraum indizierte Farben Farbraum RGB(A), CMYK, LAB Pixel zusammenfassen Farbverlauf Lauflänge .svg .bmp .jpg .gif .png, .tiff, RAW, .psd, eps

Reine Rastergrafikformate Produzieren sehr grosse Dateien (aber verlustfrei) Beispiele .bmp – nur Windows, veraltet .pict – nur MAC, veraltet .tiff – (wenn ohne Komprimierung) Bestes Format für sehr hohe Qualität, üblich beim Drucken RAW – reine Sensordaten, für jede Kamera anders

RAW ist abhängig von Kamerasensor bzw. –Hersteller DNG ist Adobes Versuch für ein herstellerübergreifendes Standard- RAW-Format RAW-Dateien haben eine höhere Farbtiefe (10 – 16 Bit) RAW-Dateien richten sich nach dem geomet- rischen Layout des Sensors, meist Bayer-Matrix Arbeitsschritte wie Demosaicing, Rauschunterdrückung, Weissabgleich, oder Tonwertkorrekturen können mit RAW- Daten in der Nachbearbeitung festgelegt werden Verschieden Algorithmen führen zu leicht unterschiedlichen Ergebnissen Bei starken Manipulationen verhilft die Farbtiefe zu besseren Ergebnissen

Die üblichsten Grafikformate (.jpg & .gif) Komprimieren die Information reiner Rastergrafiken Nehmen ggf. Informationsverlust in Kauf (meist variabel) Ansätze zum (verlustbehafteten) Komprimieren: mehrere Pixel zusammenfassen Speicherplatz sparen bei der Repräsentation von Farben Dabei geht es immer darum, möglichst die Informationen zu verlieren, die (optisch) keinen grossen Unterschied machen

JPG & GIF Pixel zusammenfassen Farben repräsentieren Besonderheiten Anwendungsgebiet

JPG in Bildern

GIF in Bildern

Probleme & Spezialitäten

Formatentscheidungen Sie wollen mit ihrer Digitalkamera ein Photo aufnehmen, um dann Sie dann im Internet einen Abzug in Postergrösse zu bestellen. Wie gehen Sie optimalerweise vor? Ein Freund von ihnen hat gehört, dass Vektorgraphiken wenig Speicherplatz brauchen und trotzdem skalierbar sind. Er hat ein Logo für seine Webseite gezeichnet (von Hand) und fragt Sie, wie er es in ein Vektorformat umwandelt. Was raten Sie ihm? Sie wollen ihren Freunden ein paar Urlaubsbilder per E-Mail schicken. Wie gehen Sie vor? Für die Maturazeitung verfassen Sie einen Artikel, in dem sie auch einige statistische Grafiken zeigen wollen. Worauf achten Sie?

Zusammenfassung Ein Bild besteht aus Pixeln (Rastergrafik) Auflösung, Farbraum, Farbtiefe, Transparenz? (ggf.) verlustbehaftete Komprimierung: Farben indizieren (.gif) Farbtiefe (in LAB-Farbraum) reduzieren (.jpg) Blöcke gleicher Pixel zusammenfassen (.gif) Farbverläufe zusammenfassen (.jpg) Ein Bild besteht aus geometrischen Objekten, bzw. Kurven (Vektorgrafik) Wie beschreibt man die Formen, welche Parameter gibt es?

(Grafik-) Formate, Überblick BMP (Rastergrafik, Farbräume erwähnen) JPEG (Grafik mit Kompression) GIF (Grafik mit Kompression) PNG (Grafik mit Kompression, inkl. Alphakanal) TIFF (Grafik mit optionaler Kompression) SVG (Vektorgrafik) EPS (Druckerformat, Rastergrafik + Vektorgrafik) PDF (Grafik + Text) ZIP* (Komprimierung) RAR (Archivierung) MIDI (Musik) MP3 (Musik) AVI (Video) MOV (Video) MPEG (Video) Warum gibt es dieses Format? Wie funktioniert dieses Format?

Digitales Koffer packen bzw. verlustfreie Komprimierung

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 genau und möglichst kompakt in 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

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?

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

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?

Konzepte Beispiele Block-Codierung Frequenz-Codierung Präfixfreier Code Telefonnummern Morse-Code Huffman Codierung Arithmetische Codierung

Frequenzcodierung

Präfixfreie Telefonnummern Was Telefonnummer Allgemeiner Notruf 112 Feuerwehrnotruf 118 Polizeinotruf 117 Sanitätsnotruf 144 Rega (Rettungshelikopter) 1414 Pannenhilfe 140 Toxikologisches Institut (bei Vergiftungen) 145 Auch normale Telefonnummern erfüllen die Fano-Bedingung, z.B. 0789218418 wenn das eine gültige Nummer ist 078921841 dann kann es diese 07892184182 oder diese nicht geben

Information Genau & Kompakt Koffer packen (Komprimieren von Information) Information Genau & Kompakt Codieren Komprimieren 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!

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

Komprimierung von Buchstaben originale Nachricht (z.B. ASCII) codierte Nachricht + Liste (z.B. Huffman) Komprimieren, z.B. mit Huffman Codierung Dekomprimieren, z.B. mit Huffman Decodierung Welche Informationen braucht es hier? speichern /verschicken

ASCII (American Standard Code for Information Interchange) Dezimal Hex Binär Zeichen 96 60 0110 0000 ` 97 61 0110 0001 a 98 62 0110 0010 b 99 63 0110 0011 c 100 64 0110 0100 d 101 65 0110 0101 e 102 66 0110 0110 f 103 67 0110 0111 g 104 68 0110 1000 h 105 69 0110 1001 i 106 6A 0110 1010 j 107 6B 0110 1011 k 108 6C 0110 1100 l 109 6D 0110 1101 m 110 6E 0110 1110 n 111 6F 0110 1111 o 112 70 0111 0000 p 113 71 0111 0001 q 114 72 0111 0010 r 115 73 0111 0011 s 116 74 0111 0100 t 117 75 0111 0101 u 118 76 0111 0110 v 119 77 0111 0111 w 120 78 0111 1000 x 121 79 0111 1001 y 122 7A 0111 1010 z 123 7B 0111 1011 { 124 7C 0111 1100 | 125 7D 0111 1101 } 126 7E 0111 1110 ~ 127 7F 0111 1111 DEL ASCII (American Standard Code for Information Interchange) Kleinbuchstaben:

Huffman Komprimierung

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

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

Komprimierung allgemein originale Nachricht (z.B. ASCII) codierte Nachricht + Liste (z.B. Huffman) Komprimieren, z.B. mit Huffman Codierung Dekomprimieren, z.B. mit Huffman Decodierung Welche Informationen braucht es hier? speichern /verschicken

Grundsätzliche Idee bei Huffman Häufige Zeichen (Buchstaben) werden in kurze Codewörter übersetzt (Frequenzcodierung) Im Binärsystem funktioniert das nur, wenn der entstehende Code (die Codewörter) präfixfrei ist! Die Bäumchen-Taktik (eigentlich ein Algorithmus) produziert eine Codierung, die diese beiden Prinzipien optimal verbindet. (allerdings ist der resultierende Komprimierungsgrad nur annähernd optimal, noch effizienter ist die Arithmetische Codierung)

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 return currentMax

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); else länge ++; end return nachricht_txt;

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

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

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? originale Nachricht codierte Nachricht

Enthropie

Konzepte Beispiele Huffman in .zip Entropieschätzung (Informations) Entropie Entropieschätzung Huffman in .zip

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

Ein BIT ist: There are 10 sorts of people: those who unterstand binary and those who do not. 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.

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

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

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

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 trägt mehr Information? was ist wahrscheinlicher?

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 genau diesen Entropiewert erreichen http://de.wikipedia.org/wiki/Entropie_(Informationstheorie)#Maximaler_Entropiewert_und_Normierung http://de.wikipedia.org/wiki/Bedingte_Entropie

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)

Normierung für unterschiedliche Block-, bzw. Zeichenlängen 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

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

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!

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

Optimalität der 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 Noch bessere Lösung: Arithmetische Codierung

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

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

Hausaufgaben Prüfziffern (jede(r) eine andere) Möglichkeiten s. Wiki Eine übersichtliche Seite zusammenstellen mit Kurzbeschreibung: Berechnung dieser Prüfziffer Beispiel Versuch einer allgemeinen Definition von Prüfziffer

Formate, Codes & Algorithmen Definitionen und Zusammenhänge

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

Komprimierung allgemein originale Nachricht (Bitsequenz) codierte Nachricht + Liste Komprimieren, z.B. mit Huffman Codierung Dekomprimieren, z.B. mit Huffman Decodierung Welche Informationen braucht es hier? speichern /verschicken

Information Genau & Kompakt Koffer packen (Komprimieren von Information) Information Genau & Kompakt Codieren Komprimieren 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!

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

Und wie passt das jetzt alles zusammen? Format Information Codierung

Definition Code:

Definition von Code, lang Im Allgemeinen ist ein Code eine Vereinbarung über einen Satz (eine Menge) von Symbolen (Bedeutungsträgern, oder Verweisen) zum Zweck des Informationsaustauschs. Information existiert nicht in „reiner“ Form; sie ist immer in irgendeiner Weise formuliert. Ein Code ist – allgemein ausgedrückt – eine Formulierung von Information. Das setzt folgende Elemente voraus: mindestens eine informationsformulierende Instanz (Aufzeichner/Sender) mindestens eine informationsempfangende Instanz (Lesender/Empfänger) – kann unter Umständen auch identisch mit (1) sein ein zu übermittelnder, abstrakter Inhalt, die Information eine Vereinbarung zum Zweck der Informationsformulierung und gegebenenfalls Informationsübermittlung. Diese enthält einen Satz von Bedeutungsträgern oder Symbolen, der beiden Instanzen (1) und (2) bekannt ist, und gegebenenfalls Regeln zur Verwendung der Symbole

Codieren allgemein Nicht-digitale Information Entdigitalisieren?! Darstellen Digitalisieren Komprimieren Komprimierte digitale Information Entkomprimieren Digitale Information Digitale Information

Codieren allgemein Nicht-digitale Information Entdigitalisieren?! Darstellen Digitalisieren Verschlüsseln Verschlüsselte digitale Information Entschlüsseln Digitale Information Digitale Information

Codieren allgemein Format Format Format Nicht-digitale Information Entdigitalisieren?! Darstellen Digitalisieren Format Digitale Information Digitale Information Komprimieren Kompr. Information Entkomprimieren Format Verschlüsseln Entschlüsseln Verschlüsselte Information Verschlüsselte Information Format

Definition von Code, kurz Beispiele für Codes: Ein Code ist eine Anleitung, um Zeichen eines Zeichensystems in die eines anderen zu übertragen. Ein Code definiert eine Umformulierung von Information Morse Code ASCII Code Huffman Codierung Hamming Code Binärcode Quellcode Genetischer Code Neuronaler Code Schrift Sprache ...

Wozu Information umformulieren? Damit ein spezieller Empfänger sie verstehen kann, z.B. Übersetzung in andere Sprache, Digitalisieren, Drucken... Um bestimmte Übertragungswege oder Speichermedien zu nutzen, z.B. Morsen, Telefonieren, Bücher, Fotos, E-Mail... Um Platz zu sparen, z.B. DNA, Komprimierung, Datenübertragung... Um Fehler bei der Übertragung zu vermeiden, z.B. DNARNA, Hamming Code... Um Inhalte vor Unbefugten zu verstecken, z.B. Geheimsprachen, Verschlüsselung...

Codieren Wie gross sollte NachrichtB sein? Inhalt: „Fischers Fritz...“ (36 Zeichen) Format? Nicht-digitale Information Nicht-digitale Information Entdigitalisieren?! Darstellen Digitalisieren Komprimieren Komprimierte digitale Information Entkomprimieren Beispiel: NachrichtB.rtf Wie geht das? Welche Informationen braucht es hier? Digitale Information Digitale Information wie viele KB hat die Datei nachrichtB.rtf? In Hex-Editor öffnen

Informatik = Automatische Informationsverarbeitung Computer machen eigentlich nichts anderes als Information mithilfe von Codes von einem Format in das andere umzuwandeln damit diese Information gespeichert, transportiert, verschlüsselt, dargestellt, extrahiert, verglichen, zusammengeführt oder sonst wie verarbeitet werden kann Achtung! Gerade haben wir uns Codes ohne Informationsverlust angeschaut. Es kann aber auch sein, dass „unwichtige“ Information verloren geht, z.B. weil man den Unterschied sowieso kaum bemerkt (.jpg) oder weil man nur an bestimmten Aspekten der Daten interessiert ist (der grösste Wert, die Richtigkeit einer Antwort, etc.)

Ein bisschen Magie!

Fehlerkorrigierende Codes

Konzepte Beispiele Binärmagie Hamming-Code CRSC Fehlerkorrektur Fehlererkennung Prüfsumme Paritätsbit Fehlerkorrektur Hamming-Distanz Binärmagie Hamming-Code CRSC

1 x

Lohnt sich das? Resultat für 1% Flip-Wahrscheinlichkeit pro Bit: http://stattrek.com/online-calculator/binomial.aspx P für ein Bit, geflippt zu werden Anzahl Bits Eines von 4 Bit ist geflippt P für genau einen Flip P für keinen Flip P für einen oder keinen Flip P für mehr als einen Flip P für einen oder mehr Flips Resultat für 1% Flip-Wahrscheinlichkeit pro Bit: In ~96% der 4-Bit Sequenzen gibt es sowieso keinen Fehler In ~3.9% gibt es einen Fehler  kann korrigiert werden In ~0.06% gibt es mehr als einen Fehler  keine Korrektur möglich

Lohnt sich das? Resultat für 0.01% Flip-Wahrscheinlichkeit pro Bit: http://stattrek.com/online-calculator/binomial.aspx P für ein Bit, geflippt zu werden Anzahl Bits Eines von 4 Bit ist geflippt P für genau einen Flip P für keinen Flip P für einen oder keinen Flip P für mehr als einen Flip P für einen oder mehr Flips Resultat für 0.01% Flip-Wahrscheinlichkeit pro Bit: In ~99.96% der 4-Bit Sequenzen gibt es sowieso keinen Fehler In ~0.039% gibt es einen Fehler  kann korrigiert werden In ~0.00000006% gibt es mehr als einen Fehler  keine Korrektur