Sie erhalten eine Binärdatei, die ein Schwarz-Weiß-Bild der Größe 8 × 8 Pixel in bitweise lauflängencodierter Form enthält. Nachdem Sie die Binärdaten in Dezimalzahlen übersetzt haben, erhalten Sie die folgende Zahlenfolge:
2, 4, 4, 1, 2, 1, 2, 15, 0, 2, 6, 4, 2, 15, 0, 4
Sie wissen, dass die lauflängencodierten Bilddaten mit “weiß” beginnen.
Wenn die Lauflänge mit 3 Bit statt 4 Bit codiert wird, lassen sich nur die Lauflängenwerte 0–7 direkt darstellen, statt wie oben 0–15.
In der Aufgabe DNS-Sequenzen zur Einführung in die Codierung wurden DNS-Sequenzen betrachtet, die aus den Buchstaben A
, C
, G
und T
bestehen.
Da diese Sequenzen aus nur 4 verschiedenen Buchstaben bestehen, sind Zeichenwiederholungen nicht unwahrscheinlich. In dieser Aufgabe sollen DNS-Sequenzen daher mittels Lauflängencodierung komprimiert werden.
Geben Sie die folgende DNS-Sequenz in lauflängencodierter Form an (Leerzeichen dienen hier nur zur besseren Lesbarkeit). Verwenden Sie dazu die einfache Form der Lauflängencodierung ohne Markierungszeichen, in der auch einzelne Zeichen im Format Zeichen
Lauflänge dargestellt werden:AAA CCT TTT AAA AGG
Die Sequenz wird nun um 12 einzelne Zeichen am Ende erweitert:AAA CCT TTT AAA AGG ACT ACT ACT ACT
Verwenden Sie nun die Lauflängencodierung mit Markierungszeichen und komprimieren Sie dabei Zeichenwiederholungen erst ab einer Lauflänge von 3 im Format Markierungszeichen
Zeichen
Lauflänge. Als Markierungszeichen wird hier der Buchstabe G
festgelegt.
Codieren Sie die folgende Textnachricht mit der Huffman-Codierung:
ONINOOONOKIMONO
Skizzieren Sie den resultierenden Huffman-Baum und ermitteln Sie die Binärcodes für jedes einzelne Zeichen.
Beantworten Sie anschließend die folgenden Fragen zur Kompressionsstärke des Huffman-Codes:
Decodieren Sie den folgenden binären Huffman-Code und ermitteln Sie die codierte Textnachricht:
001010110110000011101011
Zur Decodierung ist der folgende Huffman-Baum gegeben:
Codieren Sie die folgende Textnachricht mit dem LZW-Algorithmus und geben Sie die codierte Nachricht an (es reicht dabei, die Nummern in der Ausgabe als Dezimalzahlen anzugeben):
TINTININTINTENTINT
Vervollständigen Sie dazu das Wörterbuch, das während der Codierung entsteht. Das Wörterbuch enthält initial die folgenden Einträge:
Nummer | Zeichenfolge |
---|---|
0 | E |
1 | I |
2 | N |
3 | T |
Für Fortgeschrittene: Geben Sie die Ausgabe des LZW-Algorithmus im Binärformat an. Beachten Sie dabei, dass die Anzahl an Bitstellen, mit denen die Codewörter jeweils ausgegeben werden, im Laufe der Codierung ansteigt.
Sie erhalten eine Textdatei, die mit dem LZW-Algorithmus komprimiert wurde. Nachdem Sie die Binärdaten in Dezimalzahlen übersetzt haben, erhalten Sie die folgende Zahlenfolge:
0, 0, 2, 3, 1, 4, 9, 8, 2, 6, 10
Decodieren Sie die Zahlenfolge in die ursprüngliche Textnachricht und rekonstruieren Sie dabei das Wörterbuch. Sie wissen dabei, dass das Wörterbuch initial die folgenden Einträge enthält:
Nummer | Zeichenfolge |
---|---|
0 | A |
1 | H |
2 | L |
3 | O |