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-60 Aufgaben und <strong>Lösungen</strong><br />
Aufgabe 3.4.4 (L2)<br />
Lässt sich der String ANTANANARIVO (das ist die Hauptstadt von Madagaskar) oder<br />
PAPAYAPALMEN (die wachsen in Madagaskar, sind aber eigentlich keine Palmen)<br />
durch den LZW-Algorithmus effizienter codieren? Bitte begründen Sie Ihre Antwort.<br />
Lösung<br />
Die Strings ANTANANARIVO und PAPAYAPALMEN sind beide 12 Zeichen lang und sie<br />
bestehen beide aus 7 verschiedenen Buchstaben. Es sei n die Anzahl der pro Zeichen in der<br />
Code-Tabelle verwendeten Bits. <strong>Teil</strong>t man die Strings in Zeichengruppen auf, für deren Codierung<br />
jeweils n Bits erforderlich sind, so erhält man:<br />
A N T AN ANA R I V O Länge: 9 n Bit<br />
P A PA Y AP A L M E N Länge 10 n Bit<br />
Die Kompression ist also für ANTANANARIVO um 10% effizienter als für PAPAYAPALMEN.<br />
Aufgabe 3.4.5 (M1)<br />
Es soll ein aus 2 16 Zeichen bestehender Text komprimiert werden, dessen Quellalphabet aus<br />
40 <strong>mit</strong> gleicher Häufigkeit auftretenden Zeichen besteht. Weiter sei nichts über den Text und<br />
das Alphabet bekannt.<br />
a) Berechnen Sie die Entropie dieses Alphabetes.<br />
b) Wie viele Bits pro Zeichen benötigt man mindestens für eine Codierung <strong>mit</strong> einem binären<br />
Block-Code?<br />
c) Ist das folgende Kompressionsverfahren für dieses Beispiel sinnvoll?<br />
Man kann eine Anzahl n von Codewörtern <strong>mit</strong> 5 Bit und die verbleibenden 40-n Codewörter<br />
<strong>mit</strong> 6 Bit codieren. Dabei muss n so bestimmt werden, dass die <strong>mit</strong>tlere Wortlänge<br />
nicht kleiner als die Entropie wird.<br />
d) Wie viele Byte umfasst dann der komprimierte Text? Welchem Kompressionsfaktor entspricht<br />
dies im Vergleich <strong>mit</strong> dem Block-Code aus a)?<br />
Lösung<br />
a) Für die Entropie gilt <strong>mit</strong> wi=1/40:<br />
40 1 1<br />
H wi<br />
ld ( ) 40 ld ( 40)<br />
5.<br />
3219 [ Bit / Zeichen]<br />
i 1 wi<br />
40<br />
b) Wegen H = 5.3219 [Bit/Zeichen benötigt man für einen Block-Code (Code <strong>mit</strong> konstanter<br />
Wortlänge) mindestens 6 Bit pro Zeichen.<br />
c) Man berechnet für dieses Verfahren:<br />
(n 5 + (40-n) 6)/40 > 5.3219 n < 240 - 5.3219 40 = 27.124 n=27<br />
Allerdings ergibt sich dafür das Problem, dass die Fano-Bedingung nicht notwendigerweise<br />
erfüllt ist. Man könnte zur Erfüllung der Fano-Bedingung beispielsweise alle 6-Bit-<br />
Worte <strong>mit</strong> 0 beginnen und alle 5-Bit-Worte <strong>mit</strong> 1. Man hat also Code-Wörter der Art 0xxxxx<br />
und 1xxxx. Dies ergibt 32 Wörter <strong>mit</strong> 6 Bit und 16 Wörter <strong>mit</strong> 5 Bit. Man wird also als Optimum<br />
n=16 wählen, also 16 Wörter <strong>mit</strong> 5 Bit und 24 Wörter <strong>mit</strong> 6 Bit codieren.<br />
d) Die <strong>mit</strong>tlere Wortlänge ist L=(16 5+24 6)/40=5.6.<br />
Die Anzahl der Bytes des komprimierten Textes ist also 5.6 2 16 /8 = 0.7*2 16<br />
Die Anzahl der Bytes des unkomprimierten Textes ist 6 2 16 /8 = 0.75*2 16<br />
Der Kompressionsfaktor beträgt k=5.6/6=0.933...