30.11.2012 Aufrufe

Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1

Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1

Grundkurs Informatik Aufgabensammlung mit Lösungen Teil 1

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!