Was ist verlustfreie Kompression?
Verlustfreie Kompression ist eine Methode, die Dateien kleiner macht, ohne dabei irgendwelche Informationen wegzulassen. Das bedeutet: wenn du eine komprimierte Datei wieder entpackst, bekommst du exakt dasselbe zurück wie vorher – Bit für Bit identisch.
Das ist so, als würde man ein Wort wie „aaaaabbbbb" abkürzen zu „5a5b" – beide Versionen enthalten dieselbe Information, aber die zweite ist kürzer.
Wann brauchen wir verlustfreie Kompression?
Verlustfreie Kompression ist wichtig, wenn jede Information erhalten bleiben muss:
- Textdokumente – ein fehlender Buchstabe kann eine Bedeutung verändern
- Quellcode – ein falsches Zeichen kann ein Programm zum Absturz bringen
- Medizinische Bilder – kein Pixel darf verändert werden
- Datenarchive – ZIP-Dateien müssen exakt wiederherstellbar sein
Das ZIP-Format, das du vielleicht kennst, verwendet verlustfreie Kompression. Du kannst eine ZIP-Datei entpacken und erhältst exakt die ursprünglichen Dateien zurück.
Wie funktioniert verlustfreie Kompression?
Es gibt verschiedene Algorithmen. Zwei wichtige Prinzipien:
1. Lauflängenkodierung (RLE)
Wiederholungen werden durch eine Zahl + Symbol ersetzt:
- Original:
AAAAAABBBB(10 Zeichen) - Komprimiert:
6A4B(4 Zeichen)
2. Huffman-Kodierung
Häufige Zeichen bekommen kürzere Codes, seltene Zeichen bekommen längere Codes. In einem deutschen Text kommt 'e' sehr oft vor – es bekommt vielleicht nur 2 Bits. Das seltene 'q' bekommt 8 Bits.
# Einfaches Beispiel: Lauflängenkodierung in Python
def rle_kodieren(text):
if not text:
return ""
ergebnis = ""
zaehler = 1
for i in range(1, len(text)):
if text[i] == text[i-1]:
zaehler += 1
else:
ergebnis += str(zaehler) + text[i-1]
zaehler = 1
ergebnis += str(zaehler) + text[-1]
return ergebnis
print(rle_kodieren("AAAAAABBBB")) # Ausgabe: 6A4B
print(rle_kodieren("ABCDE")) # Ausgabe: 1A1B1C1D1E
Bekannte verlustfreie Formate
| Format | Verwendung |
|---|---|
| ZIP | Allgemeine Dateiarchive |
| PNG | Bilder (besonders Grafiken/Logos) |
| FLAC | Audio (CD-Qualität) |
| GIF | Einfache Bilder und Animationen |
Der Kompressionsgrad hängt vom Inhalt ab. Eine Textdatei mit vielen Wiederholungen lässt sich stark komprimieren. Ein Foto lässt sich mit verlustfreier Kompression weniger stark verkleinern, weil die Pixelwerte weniger Muster aufweisen.
Verlustfrei vs. Verlustbehaftet
Der Hauptunterschied:
- Verlustfrei: 100 % der Daten werden nach dem Entpacken wiederhergestellt
- Verlustbehaftet: Einige Daten werden dauerhaft entfernt, kleinere Dateien, aber nicht vollständig wiederherstellbar
Verlustfreie Kompression erzeugt meistens größere Dateien als verlustbehaftete Kompression – dafür sind die Daten vollständig erhalten.
Übungsaufgaben
Die Zeichenkette 'BBBBBAAAAAACCC' soll mit Lauflängenkodierung komprimiert werden. Wie lautet das Ergebnis? Wie viele Zeichen spart man?
Antwort anzeigen
Ein Programmierer speichert eine wichtige Programmdatei als ZIP-Archiv. Warum ist verlustfreie und nicht verlustbehaftete Kompression hier wichtig?