Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1
Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1
Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
1-58 Aufgaben und <strong>Lösungen</strong><br />
Lies Code x<br />
solange x>0 (bzw. noch nicht alle Zeichen decodiert sind)<br />
Suche Zeichen c, in dessen Intervall x liegt und gib c aus<br />
len = og(c) - ug(c) Intervall-Länge<br />
x = (x - ug(c))/len neuer Code<br />
Die Berechnung ist per Hand auch <strong>mit</strong> Taschenrechner sehr mühsam. Es empfiehlt sich,<br />
dafür ein Programm zu schreiben.<br />
b) LZW-Kompression:<br />
Beim LZW-Algorithmus wird zunächst eine Code-Tabelle <strong>mit</strong> allen Einzelzeichen des Quell-<br />
Alphabets, wobei die Wortlänge des Ziel-Alphabets um einige Bit größer gewählt wird, als die<br />
des Quell-Alphabets. Im Laufe der Kompression wird dann die Code-Tabelle um Codes für<br />
Zeichengruppen erweitert, so dass die Kompression immer effizienter wird.<br />
Die Codierung einer Zeichenkette Z läuft nun nach folgendem Schema ab: zunächst wird das<br />
nächste Eingabezeichen c des Eingabestrings Z eingelesen und an den als Präfix bezeichneten<br />
Anfangs-<strong>Teil</strong>string P des Strings Z angehängt, es wird also der String Pc gebildet. Zu<br />
Beginn wird der Präfix P <strong>mit</strong> dem leeren String vorbesetzt. Ist Pc in der Code-Tabelle bereits<br />
vorhanden, so wird P=Pc gesetzt und das nächste Zeichen eingelesen. Andernfalls wird P<br />
ausgegeben, Pc in die Code-Tabelle eingetragen und der neue Präfix P=c gesetzt. Kommt<br />
der soeben eingetragene <strong>Teil</strong>string Pc später im Text nochmals vor, so kann er durch ein<br />
einziges Code-Wort ersetzt werden. Darauf beruht letztlich die komprimierende Wirkung des<br />
LZW-Verfahrens.<br />
Der Kompressions-Algorithmus lautet da<strong>mit</strong> in Pseudo-Code-Formulierung:<br />
Initialisiere die Code-Tabelle <strong>mit</strong> den Einzelzeichen<br />
Weise dem Präfix P den Leerstring zu<br />
Wiederhole, solange Eingabezeichen vorhanden sind:<br />
Lies nächstes Eingabezeichen c aus dem Eingabestring Z<br />
Wenn Pc in der Code-Tabelle gefunden wird:<br />
steze P=Pc<br />
Sonst:<br />
Wenn Code-Tabelle noch nicht voll: Trage Pc in die nächste freie Position ein<br />
Gib den Code für P aus<br />
setze P=c<br />
Ende der Schleife<br />
Gib den Code für das letzte Präfix P aus<br />
Zeichen c Binär-Code Hex-Code<br />
____________________________________________<br />
A 0000 0<br />
H 0001 1<br />
K 0010 2<br />
M 0011 3<br />
N 0100 4<br />
P 0101 5<br />
U 0110 6<br />
- 0111 7<br />
- 1000 8<br />
- 1001 9<br />
- 1010 a<br />
- 1011 b<br />
- 1100 c<br />
- 1101 d<br />
- 1110 e<br />
- 1111 f<br />
Für die nebenstehende Code-Tabelle werden<br />
in diesem Beispiel Einträge <strong>mit</strong> vier Bit gewählt.<br />
Da das Quellalphabet nur sieben Zeichen umfasst,<br />
bleiben nach der Vorbesetzung noch<br />
neun Plätze für spätere Einträge frei.