1.9k likes | 2.1k Views
Grundlagen der Informatik Wintersemester 2009. Prof. Dr. Peter Kneisel. Didaktik: Durchführung. Diese Vorlesung enthält Übungen Die Übungen werden je nach Bedarf durchgeführt. Zur Vorbereitung werden Übungsblätter, je nach Vorlesungsverlauf zusammengestellt.
E N D
Grundlagen derInformatikWintersemester 2009 Prof. Dr. Peter Kneisel
Didaktik: Durchführung • Diese Vorlesung enthält Übungen • Die Übungen werden je nach Bedarf durchgeführt. • Zur Vorbereitung werden Übungsblätter, je nach Vorlesungsverlauf zusammengestellt. • Weitere Übungen sind im Foliensatz vorhanden und sollten selbständig und vollständig bearbeitet werden. • Vorsicht ! • Kommen Sie in alle Veranstaltungen - machen Sie die Übungen • Überschätzen Sie sich nicht - auch wenn Sie PC-Crack sind
Didaktik: Folien • Der Vorlesungsstoff wird anhand von Folien dargelegt • Die Folien bilden nur einen Rahmen für die Inhalte. Die Folien sollten daher mit Hilfe eigener Vorlesungsskizzen ergänzt werden - am besten in Form einer Vorlesungsnachbereitung max. 3 Tage nach der Vorlesung • Zusätzlich zu den Folien werden Beispiele an der Tafel oder am Rechner gezeigt. Diese sollten Sie vollständig mitskizzieren. • Zur vollständigen Nachbereitung, z.B. als Klausurvorbereitung, sind die Folien einheitlich strukturiert • Es gibt genau drei Gliederungsebenen: Kapitel, Unterkapitel, Abschnitte • Die Inhalte jedes Kapitels und jedes Unterkapitels werden jeweils motiviert und sind verbal beschrieben. Zusätzlich gibt es jeweils ein stichwortartiges Inhaltsverzeichnis der Unterkapitel, bzw. Abschnitte • Die Vorlesung wird ständig überarbeitet, so dass sich die Foliensätze ändern können (und werden) • Laden Sie sich zur endgültigen vollständigen Klausurvorbereitung nochmals zusätzlich den kompletten Foliensatz herunter.
Literatur • Diese Veranstaltung ist anhand (wirklich) vieler Bücher und einer Menge eigener Erfahrungen erstellt worden. Jedes Buch hat dabei Schwerpunkte in speziellen Bereichen und ist daher sinnvoll. Eine Auflistung aller dieser Bücher ist nicht sinnvoll.Stellvertretend für all diese Bücher sei hier ein Buch angeführt: • H.P.Gumm, M.Sommer: „Einführung in die Informatik“; Oldenbourg-Verlag 2004 • Motivation ist alles !Hier ein paar Bücher, die das Interesse und den Spaß an der Wissenschaft im Allgemeinen und an der Informatik im besonderen wecken soll: • S.Singh: „Fermats letzter Satz“; DTV, 9.Auflage 2004 • M. Spitzer: „Geist im Netz“; Spektrum, Akad. Verlag 2000 • H. Lyre: „Informationstheorie“; UTB, 2002 • A.Hodges: „Alan Turing, Enigma“; Springer-Verlag, 1983 • D.R.Hofstadter: „Gödel, Escher, Bach“; Klett-Cotta, 2006 (Taschenbuch 1991)
Inhalt • Wie jede Wissenschaft befasst sich die Informatik mit ihren eigenen „Objekten“. Was diese „Objekte“ sind und was man mit diesen Objekten machen kann - und wie - wird in dieser Vorlesung auf eher abstraktem Niveau, aber immer mit Beispielen aus der Realität eines Informatikers (oder einer Informatikerin), erläutert. • Diese Vorlesung konzentriert sich auf den „Kern“ der Informatik. Vertieftere Einführungen in z.B die Bereiche der Programmierung, Rechnerarchitekturen, Betriebssysteme, etc. sollen daher bewusst den entsprechenden Veranstaltungen vorbehalten bleiben • Inhalt • Informatik • Information und Codes • Zeichen und Zahlen • Datenstrukturen • Algorithmenentwurf
Überblick und Einordnung PIS AD AFS RN SWT Daten-strukturen 4 OOP RA Dynamik (Algorithmik) Zahlen 3 Statik (Struktur) Zeichen 2 Strukturierung Codes 5 1 Elemente Information Praktische Theoretische Technische Informatik
Kapitel 1 Information • Information ist der grundlegende Begriff der Informatik. Mehr noch: „Der Begriff der Information ist vermutlich das zentrale interdisziplinäre Brückenkonzept der modernen Wissenschaften * “.Dieses Kapitel beschreibt, aus welchen Aspekten Information besteht, welche für die Informarik wesentlichen Definitionsansätze es gibt und wie Information in der Informatik tatsächlich dargestellt wird.Inhalt • Was ist Information • Nachrichtentechnische Definition • Algorithmische Definition • Darstellung in der Informatik Im Anfang war das Wort Johannes 1.1 * (einige Teile dieses Kapitels entstammen: H.Lyre: „Informationstheorie)
1.1 Was ist Information • Es deutet einiges darauf hin, dass „Information“ ein zumindest ebenso fundamentaler Begriff ist, wie „Stoff“ in der Chemie und „Energie“ in der Physik (die tatsächlich schon zu „Materie-Energie“ vereint wurden).Betrachtet man Information als ursächliche (atomare) Größe so ist die Frage: „was ist Information“ eher irrelevant. Dafür rücken Fragestellungen wie „woraus besteht Information“, „worin ist Information“, „was kann ich mit Information machen“ in den Vordergrund.In diesem Unterkapitel soll die erste dieser Fragen: „woraus besteht Information?“ betrachtet werden • Inhalt • Semiotische Dreidimensionalität • Semantik und Pragmatik • Semantische Ebenen
1.1.1 Semiotische Dreidimensionalität • Die wohl wichtigste Charakterisierung des Informationsbegriffes entspringt der „Semiotik“ – der Zeichenlehre (Also die Lehre, die sich mit Zeichen bzw. Symbolen befasst) und lässt sich auf den Informationsbegriff übertragen. Demnach haben Informationseinheiten drei Aspekte: • die Syntax betrifft das Auftreten einzelnder Informationseinheiten und ihrer Beziehungen untereinander. • die Semantik betrifft die Bedeutung der Informationseinheiten und ihre Beziehungen untereinander. • die Pragmatik betrifft die Wirkung der Informationseinheiten und ihrer Beziehungen untereinander. • Diese drei Aspekte • müssen in ihrer Gesamtheit berücksichtigt werden(entweder explizit oder implizit) • sind ungewichtet • haben keinen Bezug zum informationsverarbeitenden System (z.B. Mensch, Maschine, …)
1.1.2 Semantik und Pragmatik • Carl Friedrich von Weizsäcker: • Information ist nur, was verstanden wird • Information ist nur, was Information erzeugt(die wiederum syntaktische Aspekte hat, verstanden werden muss und Information erzeugen muss, die wiederum … hermeneutischer Zirkel) • Der Aspekt „verstanden werden“ erlaubt keine strenge Formalisierung (denn was bedeutet „verstanden werden“ – wie kann man es messen)sehr wohl lässt sich aber der Aspekt „Information erzeugen“ formalisieren.Beispiel: • Person A bittet Person B, das Licht einzuschalten:Sequenz von Zeichen: „B I T T E S C H A L T E D A S L I C H T A N“ • Person B „interpretiert“ die Zeichenkette = wertet die Semantik, die Bedeutung der Zeichenkette aus – dabei kann man sich streiten, ob er die Bedeutung auch „verstanden“ hat oder auch nur haben muss. • Person B generiert neue Information:Licht = onoder stellt sich einen erleuchteten Raum vor, was neurologisch zu messen ist. • Da Semantik und Pragmatik eng miteinander verzahnt sind spricht man auch vom semantopragmatischen Aspekt der Information
1.1.3 Semantische Ebenen • Der semantopragmatischen Aspekt der Information zeigt die Unmöglichkeit eines absoluten Begriffs von Information, d.h. Information ist relativ zu den semantischen Ebenen der beteiligten Systemen.Beispiel (siehe 2.1.2): • Person A spricht deutsch, Person B kann kein deutschd.h. die semantischen Ebenen sind völlig disjunkt.Daher ist in diesem Bezugssystem zwar der syntaktische Aspekt von Information, aber keine semantischer und damit (sehr wahrscheinlich;-) auch kein pragmatischer Aspekt und damit auch keine Information vorhanden. • In der Realität sind unterschiedliche semantische Ebenen die Regel und verändern sich auch dynamisch:Beispiel: Beim Erlernen der Muttersprache testet ein Kleinkind zunächst Laute. Bei einer positiven Reaktion (z.B. Ma-Ma) erfolgt rudimentäre Wortbildung, die mit dem Semantikverständnis von Worten zu komplexeren syntaktischen Strukturen (Sätzen) mit komplexeren semantischen Strukturen weiterentwickelt werden. • In der Informatik strebt man oft (z.B. bei einer Datenkommunikation) gleichartige semantische Ebenen an.
1.2 Nachrichtentechnische Definition (nach Shannon) • Information hat vielfältige Repräsentationsformen. Noch vor Entstehen der Informatik als Wissenschaft hat Claude Elwood Shannon (1916-2001) wichtige Maßzahlen zur Erfassung von Information definiert. Dabei geht er von der nachrichtentechnischen Repräsentation von Information, der „Nachricht“ aus.Diese Repräsentation von Information hat „eigentlich“ nur syntaktische Aspekte (im Sinne der „Semiotischen Dreidimensionalität), denn es wird weder nach dem Sinn der Nachricht gefragt, noch nach deren Konzequenz.Dieses Unterkapitel stellt diese Maßzahlen und deren Grundlagen dar. • Inhalt: • Nachricht • Informationsgehalt einer Nachricht • Informationsgehalt eines Zeichens • Mittlerer Informationsgehalt • Informationsgehalt des Menschen
1.2.1 Definition: Nachricht • sei Alphabet X: Menge von Symbolen/Zeichen X = {x1, x2, ... xn} • Eine Zeichenkette (ein Wort) der Länge n über X ist eine Folge von n Zeichen aus X (ein n-Tupel über X) • Beispiel: X={a,b}Worte über X: {a,b,ab,ba,aba,abb,baa,bbb, ...}Worte der Länge n mit n=3: {aaa,aab,aba,abb,baa,bab,bba,bbb} • Die Menge aller n-Tupel über X ist das n-facheKreuzprodukt X X ... X (n mal), bezeichnet als Xn • |Xn| = | X X ... X | = |X| * |X| * ... * |X| = |X|n • Die Anzahl der Elemente alle Worte mit der exakte Länge n ist |X|n • Wird eine Zeichenkette übermittelt, so spricht man von Nachricht Nx Informationsübetragung(nach Shannon, Hartley,Weaver und Wiener) Sender Kanal Empfänger Störung
Ein Maß für die Information (der Informationsgehalt) einer Nachricht Nn,x der Länge n (über ein Alphabet X) ist die kürzeste Länge der Beschreibung, die notwendig ist, um die Nachricht Nn,x aus der Menge aller möglichen Nachrichten der Länge n sicher zu ermitteln Beispiel: Information der Nachricht N8,{0,1} : Suche in |{0,1}|8 = 256 Wörtern Der Informationsgehalt einer aus mehreren (voneinander unabhängigen) Zeichen bestehenden Zeichenkette ist gleich der Summe der Informationen der einzelnen Zeichen: 1 * ld(|X|) + 1* ld(|X|) + ... + 1* ld(|X|) = n * ld(|X|) = ld(|X|n) obere Hälfte ? Optimal mit binärem Suchen Anzahl Fragen:ld(|Xn|) = ld(|X|n) = n ld(|X|) ja nein obere Hälfte ? obere Hälfte ? ja nein ja nein ... 1.2.2 Definition: Informationsgehalt einer Nachricht
1.2.3 Definition: Informationsgehalt eines Zeichens • Idee: • Der Informationsgehalt eines Symbols xi hängt von der Wahrscheinlichkeit seines Auftretens ab: Je seltener ein Symbol auftritt, desto höher ist sein Informationsgehalt: h(xi) = f(1/p(xi)) • Definition nach Shannon (ca. 1950):Der Informationsgehalt h (Einheit bit) eines Symbols xi ist definiert als der Logarithmus Dualis des Reziprokwertes der Wahrscheinlichkeit, mit der das Symbol auftritt:h(xi) = ld(1/p(xi)) = -ld p(xi)
Umrechnungsregel des ld in den 10er-Logarithmus (lg) lg b log c b 3,322 lg b log a b = mit a = 2, c = 10 gilt: ld b = lg 2 log c a 1.2.3 Beispiel: Informationsgehalt • Beispiel: Sei die Wahrscheinlichkeit von E = 0,5 und die von H = 0,25 • Informationsgehalt des Zeichens „E“ :hE = ld (1/0.5) = 1bit • Informationsgehalt des Zeichens „H“ :hH = ld (1/0,25) = 2 bit • Informationsgehalt der Zeichenkette „EHE“hEHE = ld(2) + ld(4) + ld(2) = ld(2 * 4 * 2) = 4 bit
1.2.4 Definition: Mittlerer Informationsgehalt • Kennt man die Einzelwahrscheinlichkeiten aller möglichen Symbole einer Symbolsequenz, so ist der mittlere Informationsgehalt Hs der Symbole s (Entropie der Quelle) definiert als:Hs = S (p(xi) * h(xi)) = S (p(xi) * ld(1/p(xi))) = - S( p(xi) * ld(p(xi))) • Der mittlere Informationsgehalt Hs,n einer Symbolkette der Länge n ist:Hs,n = Hs * n • Beispiel d.h. die Symbole haben einen mittleren Informa- tionsgehalt von 1,5 bit. Hs = 0,5 * 1bit + 0,25 * 2bit + 0,25 * 2bit = 1,5 bit
1.2.5 Informationsaufnahme des Menschen • Beim Lesen (eines deutschen Textes) erreicht der Mensch eine Geschwindigkeit von ca. 25 Zeichen/sec • das entspricht 25 * 2 Bit (mittleren Informationsgehalt in der deutschen Sprache) = 50 Bit/sec • dieser Wert ist unabhängig vom Alphabet - kann also auch z.B. im chinesischen erreicht werden (weniger Zeichen/sec, größerer mittlerer Informationsgehalt). • Nachrichten, die mit anderen Medien dargestellt werden, können ca. genauso schnell verarbeitet werden. • Aufnahme des Menschen • Bewusst aufgenommen werden ca. 50% von 50 Bit/sec also 25 bit/sec • Bei einer Aufnahmedauer von ca. 16 Stunden am Tag ergibt sich eine Lebensinformationsmenge von ca. 3 * 1010 Bit • die Speicherkapazität des Gehirns ist mit ca. 1012 Bit auch in der Lage, diese Informationsmenge zu speichern (sogar 100 Mal) • Die Lebensinformationsmenge findet auf einer CD-ROM Platz und ist über Glasfaserkabel in wenigen Sekunden zu übertragen.
1.3 Algorithmische Definition • Betrachten wir folgende Nachrichten (A und B): Nachricht A: 1110111011000110110101100010 Nachricht B: 1111000111100011110001111000nach Shannon ist der Informationsgehalt der ersten Zeichenkette A identisch mit dem der zweiten Zeichenkette B (denn hA(0)=hB(0) und hA(1)= hB(1))Aber: Ist das (intuitiv) wirklich so ?Tatsächlich lässt sich die Information aus Nachricht B leicht (algorithmisch) beschreiben: „4 1en, dann 3 0en, das Ganze 4 mal“Hat man also die Regelmäßigkeit der Nachricht „verstanden“ lässt sich die Information einfacher (kürzer) formulieren. Im Sinne der „Semiotischen Dreidimensionalität“ berücksichtigt die Algorithmische Definition von Information zusätzlich zur Syntax auch die Semantik. • Inhalt: • Die Turing-Maschine • Das Turing-Programm • Beispiele
1.3.1 Einige Fragen • Kann jede Zeichenkette durch Regeln (einen Algorithmus) beschrieben werden. • Wie können diese Regeln zur Generierung von Zeichenketten beschieben werden? • Gibt es ein Modell, mit dem man solche Regeln formalisieren kann? • Wie sieht ein solches abstraktes Model aus ? • Gibt es genau ein Model oder mehrere ? • Sind diese Modelle äquivalent ?
1.3.2 Die Turing-Maschine • Als abstraktes Modell eines Computers beschrieb Alan Turing (1912-1954) 1936 - also noch vor der Erfindung des Digitalrechners - eine nach ihm benannte abstrakte Maschine • Formal kann eine Turing-Maschine wie folgt beschrieben werden: • Alphabet: A = {a0, ... , an}, der Zeichenvorrat der Turing-Maschine, wobei a0 das Leerzeichen ("blank") darstellt (Oft: a1=0, a2=1) • Bandinschrift: B: Z A eine Zuordnung, die jeder Stelle des rechtsseitig unendlichen Bandes ein Zeichen zuordnet. Dabei wird festgesetzt, dass B(k) = a0 für alle bis auf endlich viele . • Kopfposition: k Z • Zustände: eine endliche Menge von Maschinenzuständen.Q = {q0, ..., qm} Darunter sind q0, der Anfangszustand und H Q , die Menge der Haltezustände, ausgezeichnet. • Statt Haltzustände wird oft auch eine Halteaktion angegeben • Turing-Tabelle:eine Übergangsrelation: d : A Q A Q {r, l, n, h}, das jedem (gelesenen) Zeichen in Abhängigkeit eines Zustandes ein neues Zeichen, einen Folgezustand und eine Aktion (r,l,n,h} zuordnet
a1 a2 a3 a4 ... a6 1.3.3 Das Turing-Programm • Die Aktionen: • r (right): das Verschieben des Kopfes nach rechts • l (left): das Verschieben des Kopfes nach links • optional n (none): keine Bewegung des Kopfes • optional h (halt): Impliziter Übergang in einen Endzustand falls so ist die Maschineim Zustand das neue Zeichen das unter dem Kopf gelesene Zeichen dieAktion der neueZustand ak al q‘ q r oder l
Das „Busy beaver“-Problem:Wie viele „1“-en kann ein terminierendes Turing-Programm auf einem leeren Band mit einer vorgegebenen Anzahl von Zuständen maximal erzeugen. In dieser Notation wird statt eines Übergangs in den Haltezustand (z.B. q5) die Aktion „halt“ ausgeführt. Der Rekord für |Z|=5 liegt bei 4096 „1“en (J.Buntrock, H.Marxen, 1989) Es wurde gezeigt, dass es möglich ist, mehr als 4098 „1“en zu generieren - allerdings nicht wie. 1.3.4 Beispiel 96 Schritte, 13 Einsen 11 Schritte, 6 Einsen
.3.5 Information • Die algoritmische Definition definiert Informationgehalt:Der algorithmische Informationsgehalt einer Nachricht ergibt sich aus der Länge L des kürzesten Algorithmuses (z.B. Turing-Programms), welches die Nachricht erzeugt. • Daraus ergibt sich, dass der algorithmische Informationsgehalt (bis auf eine kleine Konstante) immer kleiner oder gleich dem (nachrichtentechnischen) Informationsgehalt einer Nachricht ist, denn im „einfachsten“ Fall kann die Turing-Maschine die komplette Nachricht auf dem Turingband codieren und besteht aus einem leeren Programm. • Es gibt keine Möglichkeit, für beliebige Nachrichten zu bestimmen, ob der algorithmische Informationsgehalt kleiner als der nachrichtentechnische Informationsgehalt (ob es also ein Turing-Programm gibt, welches die Nachricht „geschickter“ codiert).
12.4 Darstellung in der Informatik • Die Wurzeln der Informatik liegen weniger in der Nachrichtentechnik, als vielmehr in der Mathematik. Darum ist die Repräsentation von Information als Nachricht weniger relevant als die Darstellung von Zahlen (in binärer Repräsentation) und algebraischen (bool‘schen) Objekten.In diesem Unterkapitel geht es um diese Repräsentationen. • Inhalt • Das Bit in der Informatik • Die Darstellung des Bit • Beispiel • Das Byte und mehr
1.4.1 Das Bit in der Informatik • Definition aus der Informatik:Ein bit ist die Informationsmenge in einer Antwort, auf eine Frage, die zwei Möglichkeiten zulässt: • ja /nein • wahr/falsch • schwarz/weiß • ... • Der Informationsgehalt eines Zeichens einer zweielementigen Alphabetes mit gleicher Auftretungswahrscheinlichkeit ist(nach Shannon)h = -ld p = -ld 0,5 = 1bit
1.4.2 Die Darstellung des Bit • Diese zwei Möglichkeiten werden meist mit 0 bzw. 1 codiert • Die technische Darstellung erfolgt u.a. mit Hilfe von: • Ladung • 0 = ungeladen • 1 = geladen • Spannung • 0 = 0 Volt • 1 = 5 Volt • Magnetisierung • 0 = nicht magnetisiert • 1 = magnetisiert • Licht • 0 = kein Licht • 1 = Licht • Reflexionseigenschaften • 0 = reflektiert • 1 = reflektiert nicht • ...
1.4.3 Das Byte und mehr • Aus bestimmten Gründen • Geschwindigkeit von Lese- und Schreiboperationen • Darstellungsmöglichkeit „häufiger“ Zeichen (z.B. Alphabet) • Darstellungsmöglichkeiten von Zahlen, etc. werden in der Informatik oft Vielfache von 8bit-Gruppen verwendet (8bit, 16bit, ...)Eine 8-Bitsequenz heißt ein Byte. • Diese 8bit werden manchmal nochmals unterstruktuiert in zwei 4er Gruppen, die dann „Nibble“ heißen. • Nibble können geschickt als Hexadezimalziffer dargestellt werden. • Bestimmte 2er-Potenzen werden in der Informatik häufig als Maßzahlen (z.B. für Speichergrößen) verwendet: • 1 KByte = 210 = 1024 Byte (1 Kilobyte) • 1 MByte = 210 * 210 Byte (1 Megabyte) • 1 GByte = 210 * 210 * 210 Byte (1 Gigabyte) • 1 TByte = 210 * 210 * 210 * 210 Byte (1 Terrabyte)
Achtung: Nicht verwechseln ! 1.4 Zusammenfassung des Kapitels • Was ist Information • Nachrichtentechnische Definition • Informationsgehalt • eines Zeichens (x) h(x) = ld (1/p(x)) = - ld (p(x) • einer Nachricht (n) h(n) = h(n1) + h(n2) + h(n3) + ... • Mittlerer Informationsgehalt • ein/aller Zeichen(s) (x) H(x) = S p(xi) * h(xi) • einer Nachricht (n) n * H(x) • Algorithmische Definition • Definition in der Informatik • Bits und Bytes
Kapitel 2 Codes • Information ist abstrakt: damit Information in einem Rechner verarbeitet werden kann, muss sie in eine für den Rechner verarbeitbare Form transformiert werden.Dabei kann man sich beliebig ungeschickt anstellen. Dieses Unterkapitel beschreibt, wie eine solche Transformation funktionieren kann, welche Möglichkeiten man dabei hat und gibt ein Maß für die Qualität einer Transformation an. • Inhalt • Definitionen • Codes zur Optimierung der Codelänge • Codes zur Fehlererkennung und Fehlerkorrektur • Beispiele … und das Wort ward Fleisch Johannes 1.14
2.2.1 Definitionen • … ein paar Definitionen .. • Inhalt • Definition • Willkürliche Codes • Fano-Bedingung • Mittlere Wortlänge • Redundanz
2.1 Definition: Code • Definition:Seien X,Y zwei Alphabete • Eine Codierung ist eine Abbildung C:XnYm aller n-Tupel aus X nach m-Tupel aus Y. • oft ist n=1 • oft ist X,Y = {0,1} • Die Worte aus Ym werden Code genannt. • Die Umkehrrelation C-1 bezeichnet man als Dekodierung • Definition:Ein Code heißt vollständig, wenn alle Wörter aus Xn mit Hilfe der Codierung abgebildet werden können. • Definition:Für ein Wort Xin aus C:XinYimist m die Längel(Xin) von C(Xin)(Zur Erinnerung: meist in n=1, d.h. die Codierung bildet ein jeweils ein Zeichen xi auf mehre Zeichen xim ab) • Definition:Ein Code heißt Code gleicher Länge, wenn die Anzahl der Symbole auf die ein Wort abgebildet wird, für alle Worte gleich ist(also: l(Xn)=m konstant für alle XnYm).Ansonsten heißt der Code: Code unterschiedlicher Länge
Definition:Ein Code heißt eindeutig, wenn C-1 injektiv ist, ansonsten heißt er mehrdeutig Codes sollten also (meist) so beschaffen sein, dass sie bei der Decodierung eindeutig sind. Gegenbeispiel: Problem Dekodierung: 10111100100 = 101 11100 100 (aui) 101 11 100 100 (aoii) 2.1.2 Definition: Eindeutigkeit mehrdeutig
Fano-Bedingung:Kein Codewort darf Anfang eines anderen Codewortes sein Beispiel: Die Fano-Bedingung ist hinreichend aber nicht notwendig hinreichend: Wenn die Fano-Bedingung erfüllt ist, ist der Code eindeutig nicht notwendig: Auch eine Codierung, die die Fano-Bedingung nicht erfüllt kann eindeutig sein. Beispiel: a 1, b 10 Anmerkung: Eine Betrachtung der Fano-Bedingung macht „eigentlich“ nur Sinn bei Codes unterschiedlicher Länge (warum ?) 2.1.3 Definition: Fano-Bedingung
011100011 yxxzyx H = 1,5 Bit L = 1,5 Bit 2.1.4 Definition: Mittlere Wortlänge • Codiert man die Zeichen eines Alphabetes binär (also mit Sequenzen eines 2-Zeichen-Alphabetes, z.B. 0 und 1) , so versteht man unter der mittleren Wortlänge L eines Codes die mit den Auftrittswahrscheinlichkeiten gewichtete Summe der Längen l(xi) der den einzelnen Symbole entsprechenden CodewörternL = S p(xi) * l(xi) • Beispiel
2.1.5 Definition: Redundanz • Die mittlere Wortlänge eines Binärcodes ist immer größer oder gleich dem mittleren Informationsgehalt. • Die Differenz zwischen mittlerer Wortlänge und mittlerem Informationsgehalt wird als Redundanz R des Codes bezeichnet:R = L - H • Die Redundanz bezogen auf die Wortlänge nennt man relative Redundanz r:r = R / L • Redundanz ist also ein Maß für die Qualität einer Kodierung (insofern die Länge eines Codes als Qualität angesehen wird)
H = S pi* hi = - S pi* ld(pi) = 0,360+0,464+0,332 = 1,156 L = S pi* li = 0,7+0,4+0,2 = 1,3 R = L - H = 1,3 - 1,156 = 0,144 r = R / L = 0,144 / 1,3 = 0,111 2.1.6 Redundanz – Beispiel • Beispiel H 1,5 Bit L 1,5 Bit H 1,16 Bit L 1,3 Bit
2.1.7 Codierungsarten • Die Entropiekodierung • kodiert ungeachtet der zugrundliegenden Information und betrachtet die zu komprimierten Daten als “reine” Bitsequenz (also nur die Syntax). • es werden nur (informationstheoretische) Redundanzen eliminiert, es geht keine Information verloren. • unterschiedliche Kompressionsquoten bei unterschiedlichen zu komprimierenden Daten. • Die Quellenkodierung • ist abhängig von den zu kodierenden Informationen (daher: Quellcodierung). und verwendet dazu die Semantik der zu kodierenden Information. • eliminiert für das “Ziel” (z.B. den Menschen) definierte Redundanzen und ist (meist) verlustbehaftet. • Spezifika der Informationen können dadurch gut genutzt werden und man erreicht eine wesentlich bessere Kompressionsraten bei "akzeptabler" Qualität.
2.2 Huffman-Codierung • Oft ist es wichtig, einen Code möglichst kurz zu gestalten • aus Gründen der Speicherplatzoptimierung • aus Gründen der Übertragungskapazitäts-Optimierung • … • Idee • Häufige Symbole – kurze Codes, Seltene Symbole – lange Codes • Kodierung • Die Häufigkeit des Auftretens der Zeichen (oder Zeichenketten) wird bestimmt • Die am häufigsten auftretenden Zeichen (oder Zeichenketten) werden mit kurzen Bitfolgen (Huffmann-Code) kodiert • Der Huffmann-Code wird zur Kodierung der Bitfolge verwendet • Dekodierung • Dekodierer besitzt identischen Huffmann-Code (oder bekommt die Zuordnungstabelle explizit übertragen) • Dekodierer setzt den Huffmann-Code in Bytefolge um • Die Huffmann-Codierung generiert einen vollständigen, eindeutigen Code unterschiedlicher Länge (der die Fano-Bedingung erfüllt)
P(C)=0,09 P(E)=0,11 P(D)=0,13 P(A)=0,16 1 0 1 0 P(CE)=0,2 P(A D)=0,29 1 0 P(C E A D)=0,49 P(B)=0,51 1 0 P(B C E A D)=1,0 2.2.1 Vorgehen • Der Baum wird von oben nach unten mit den zwei Buchstaben (oder Buchstabengruppen) mit den jeweils kleinsten Wahrscheinlichkeiten schrittweise aufgebaut sei P(A) = 0,16 P(B) = 0,51 P(C) = 0,09 P(D) = 0,13 P(E) = 0,11 Kodierung A = 000 B = 1 C = 011 D = 001 E = 010
2.2.2 Verbesserung • Codierung ist optimal, wenn sich die Wahrscheinlichkeiten der Zeichen „geschickt“ ergeben • „geschickt“ sind Wahrscheinlichkeiten mit negativen 2er-Potenzen. • Durch Betrachtung (und Codierung) von Zeichenpaaren, -drillingen, ... , n-Tupeln können solche „geschickten“ Wahrscheinlichkeiten gefunden werden • Die Redundanzen lassen sich sogar beliebig verkleinern, weil die Einzelwahrscheinlichkeiten von n-Tupeln beliebig klein werden und dadurch immer „geschickter“ kombiniert werden können. • Beispiel: ... Produkt der Einzelwahrscheinlichkeiten (Annahme: Auftritt von A,B unabhängig)
2.2.3 Beispiel für Tupelbildung • Beispiel
2.3.3 Hamming-Codierung • Manchmal ist es wichtig, Fehler in einem Code zu erkennen und ggf. zu korrigieren. (z.B. bei der Übertragung) • Idee • Gezielter Einsatz von Redundanz • Nicht alle möglichen Codeworte sind daher gültig • Kodierung • Dem Code werden zusätzliche Bits hinzugefügt. • Die Werte der zusätzlichen Bits stehen in Bezug zu den ursprünglichen Bits • Beispiel aus der natürlichen Sprache • “Ich studiere in Gießer” – Fehler kann erkannt und behoben werden • “Ich liebe rich” – Fehler kann erkannt, aber nicht behoben werden
Paritätsbit bei der 7-bit ASCII-Codierung wähle das 8te Bit so, dass immer eine gerade Anzahl von Bits gesetzt ist (gerade Anzahl = „even parity“, ungerade Anzahl = „odd parity“) erhält man eine Nachricht mit ungerader Anzahl, so weiß man, dass (mindestens) ein Bit verkehrt ist. man weiß allerdings nicht welches man weiß auch nicht, ob nicht mehr als ein Bit verkehrt ist man weiß bei richtigem parity-Bit auch nicht, ob nicht mehr als 1 Bit verkehrt ist Idee: den „Abstand“ gültiger Worte so groß wie nötig wählen 2.3.1 Beispiel ASCII Zeichen Binär mit even Parity @ 100 0000 1100 0000 := 1 + 1 = 2 A 100 0001 0100 0001 := 1 + 1 + 0 = 2 B 100 0010 0100 0010 := 1 + 1 + 0 = 2 C 100 0011 1100 0011 := 1 + 1 + 1 + 1 = 4
2.3.2 Hamming-Distanz • Definition:Der Hamming-Abstand (die Hamming-Distanz D) zwischen zwei Wörtern ist die Anzahl der Stellen, an denen sich zwei Worte gleicher Länge unterscheiden. • Beispiel: Hamming-Abstand von 1100 0000 (A) und 0100 0001 (B) = 2 • Definition:Der Hamming-Abstand (die Hamming-Distanz D) eines Codes ist der minimale Hamming-Abstand zwischen zwei beliebigen Wörtern des Codes. • Beispiel: Hamming-Abstand von ASCII (mit even parity) = 2 • Einige Konsequenzen: • Codes mit Hamming-Distanz = 0 sind nicht eindeutig • Bei Codes mit Hamming-Distanz = 1 kann das „Kippen“ eines Bits zu einem anderen gültigen Codewort führen (muss nicht) • Bei Codes mit Hamming-Distanz = 2 kann ein Ein-Bit Fehler erkannt werden.
2.3.3 Fehlererkennung • Fehler, bei denen höchstens D-1 Bits gestört sind, können sicher erkannt werden • einige andere Fehler können, müssen aber nicht unbedingt erkannt werden können.(genau dann, wenn die Hamming-Distanz zwischen zwei Wörtern eines Codes größer als die Distanz des Codes ist) • Fehler werden erkannt, wenn ein Codewort ungültig ist gültiges Codewort „nur“ erkennbares Codewort korrigierbares Codewort A B 1-Bit-Fehler 2-Bit-Fehler
2.3.4 Fehlerkorrektur • Fehler, bei denen höchsten (D-1)/2 Bits gestört sind, können sicher korrigiert werden • einige andere Fehler können, müssen aber nicht korrigiert werden können(genau dann, wenn die Hamming-Distanz zwischen zwei Wörtern eines Codes größer als die Distanz des Codes ist) • Falsches Codewort wird dem „nächstmöglichen“ Codewort (d.h. dem mit der minimalen Distanz) zugeordnet. gültiges Codewort korrigierbares Codewort B A 1-Bit-Fehler 2-Bit-Fehler
Idee Jedes Prüfbit stellt die gerade Parität einer gewissen Menge von Bits (einschließlich sich selbst) sicher Jedes Datenbit kann in mehreren dieser Mengen einbezogen sein Die Hamming-Methode Es werden an der 1,2,4,8,... Stelle Prüfbits eingeführt Jedes Prüfbit hat damit in seiner dualen Stellennummer genau eine Stelle mit einer 1 (1,2,4,8,... = 1,10,100,1000,...) Alle Stellen im Wort, die an derselben Stelle eine 1 haben (und an den anderen 1 oder 0) werden aufsummiert 1 001,011,101,111, ... also 1,3,5,7, ... Stellen 10 010,011,110,111, ... also 2,3,6,7, ... Stellen 100 100,101,110,111, ... also 4,5,6,7, ... Stellen Das entsprechende Parity-Bit wird als even-parity Bit gesetzt Die Hamming-Methode generiert einen eindeutigen, vollständigen Code gleicher Länge ... 8 1 P D D D P D P P 2.3.5 Hamming
7 1 0 1 0 1 P 1 P 1 1 0 1 P 1 P 1 1 0 1 P 1 0 1 1 0 1 0 1 P 2.3.6 Beispiel Hamming • zu kodieren: 1011 • Prüfbit 1 (001)relevant 011,101,111also Bit 3,5,7Summe = 3 Bit setzen • Prüfbit 2 (010)relevant 011,110,111also Bit 3,6,7Summe = 2 Bit löschen • Prüfbit 4 (100)relevant 101,110,111also Bit 5,6,7Summe = 2 Bit löschen • kodiert: 1010101
0 7 1 0 1 0 0 1 0 1 0 1 0 1 1 1 2.3.7 Beispiel Hamming • Fehlerhafter Code: 1000101 • Verfahren • prüfe alle Parity-Bits • k = Summe der fehlerhaften Bitnummern • k gibt die Nummer des gestörten Bits an (nur bei 1-Bit Fehler zuverlässig) • Hier: • Bit1 prüft 3,5,7: falsch • Bit2 prüft 3,6,7: ok • Bit4 prüft 5,6,7: falsch • k = 1 + 4 = 5 • Bit5 muss getauscht werden