Informatik · Klasse 10–12 · aktualisiert
Lauflängenkodierung (RLE) einfach erklärt
Du lernst, Symbolfolgen und Bitfolgen mit RLE zu codieren, den Speicherbedarf zu vergleichen und zu begründen, wann sich RLE lohnt.
0 von 13 Aufgaben gelöst
Kurz gesagt
Die Lauflängenkodierung (RLE) ist ein einfacher verlustfreier Kompressionsalgorithmus. Sie ersetzt jede Folge gleicher Symbole durch ihre Anzahl und gegebenenfalls das Symbol. Sie ist geeignet für längere Wiederholungen. Bei kurzen Wiederholungen ist die Einsparung gering.
Ein Fax schickt ganze Seiten mit großen weißen Flächen. Müsste es dafür jeden weißen Punkt einzeln senden? Genau hier hilft RLE. Du lernst, wie man Daten damit kürzer aufschreibt und wann das klappt.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
4 Abschnitte
Stell dir vor, du sollst jemandem AAAAA diktieren. Statt fünfmal „A“ zu sagen, sagst du „fünf A“. Genau das macht die Lauflängenkodierung (englisch run-length encoding, kurz RLE). Sie ist ein einfacher verlustfreier Kompressionsalgorithmus. Kompression heißt: Daten werden kürzer aufgeschrieben. Verlustfrei heißt: Beim Decodieren kommt die Ausgangsfolge wieder heraus.
Die Grundidee: Jede Folge gleicher Symbole wird durch ihre Anzahl und gegebenenfalls das Symbol ersetzt. Das Alphabet ist die Menge der möglichen Symbole. Hat es mehr als zwei Symbole, muss neben der Anzahl auch das Symbol mitgesendet werden. Dafür schreibt man Paare der Form {Symbol, Anzahl}.
Beim Codieren zählst du, wie oft ein Symbol direkt hintereinander steht, und schreibst das Paar auf. Beim Decodieren gibst du zu jedem Paar das Symbol so oft aus, wie die Anzahl sagt.
Definition
Lauflänge
Die Lauflänge ist die Anzahl gleicher Symbole, die direkt hintereinander stehen. RLE speichert diese Anzahl statt jedes einzelnen Symbols.
Beispiel: Eine Folge mit fünf verschiedenen Symbolen
- 1Folge: AAAA ABBB BBBB CDDD EE (die Leerzeichen gruppieren nur)
- 2A steht 5-mal, B 7-mal, C 1-mal, D 3-mal und E 2-mal hintereinander
- 3Codiert: {A, 5}, {B, 7}, {C, 1}, {D, 3}, {E, 2}
- 4Decodiert: AAAAABBBBBBBCDDDEE
Teste dich
Ein Schwarz-Weiß-Bild heißt auch Binärbild. Seine Pixel sind nur Schwarz oder Weiß, also reicht ein Bit je Pixel. Meist steht 0 für Schwarz und 1 für Weiß. Der umgekehrte Fall kommt auch vor. Nenne deshalb immer dazu, welche Zuordnung gilt.
Bei Bitfolgen gibt es nur Nullen und Einsen. Auf eine Folge von Nullen folgt also eine Folge von Einsen und umgekehrt, außer am Ende der Nachricht. Deshalb musst du das Symbol nicht mitsenden. Kodierer und Dekodierer einigen sich vorher, mit welchem Bit begonnen wird: durch Konvention oder durch ein zusätzliches Bit am Anfang. Danach werden abwechselnd die Längen der Null- und der Eins-Folgen übertragen.
Der Dekodierer gibt zu jedem empfangenen Wert entsprechend viele Null- oder Eins-Bits aus. Nach jedem Wert wechselt er das Bit. Binärbilder werden unter anderem bei Faxgeräten verwendet.
Definition
Binärbild
Ein Binärbild ist eine Rastergrafik, deren Pixel nur Schwarz oder Weiß sein können. Jedes Pixel kann mit einem Bit gespeichert werden.
Beispiel: Acht Bit mit vereinbartem Beginn bei 0
- 1Folge: 0000 0111
- 2Vereinbart: Es beginnt mit 0.
- 3Erst stehen 5 Nullen, dann 3 Einsen.
- 4Codiert: 5 3
- 5Decodiert: 5 Nullen, dann 3 Einsen → 00000111
Teste dich
Den Speicherbedarf zählst du bei Bitfolgen in Bit, bei Symbolfolgen in Zeichen. Vergleiche die Länge vor und nach dem Codieren.
Bei Bitfolgen speicherst du jede Länge als Binärzahl mit fester Stellenzahl. Drei Binärstellen decken die Zahlen von 0 bis 7 ab. Darum passen nur Läufe bis 7 in 3 Bit. Im Beispiel unten werden aus 24 Bit nur 15 Bit. Ein zusätzliches Start-Bit ist dabei nicht mitgezählt. Speicherst du es doch, zähle es extra und sage dazu, wie du gezählt hast.
Lange Läufe sparen viel: Für 100 Wiederholungen braucht man nur drei Dezimalstellen. Die Einsparung ist umso geringer, je kürzer die Wiederholungen sind. Ausgedachtes Beispiel: Die Bitfolge 0101 hat vier Läufe der Länge 1 (Beginn mit 0). Mit je 3 Bit wären das 12 Bit statt 4 Bit.
Bei mehr als zwei Symbolen kann die komprimierte Nachricht sogar größer werden. Deshalb kodiert man mitunter nur Folgen ab einer bestimmten Länge, zum Beispiel ab vier. Dann braucht man ein Escape-Zeichen, das anzeigt, dass ein komprimiertes Paar folgt.
Beispiel: 24 Bit werden zu 15 Bit
- 1Folge (24 Bit): 1111 1110 0000 1000 0001 1111
- 2Vereinbart: Es beginnt mit 1.
- 3Längen: 7 5 1 6 5
- 4Die größte Länge ist 7. Drei Binärstellen decken 0 bis 7 ab.
- 57 → 111, 5 → 101, 1 → 001, 6 → 110, 5 → 101
- 6Codiert: 111 101 001 110 101
- 75 Längen · 3 Bit = 15 Bit statt 24 Bit (ohne zusätzliches Start-Bit gerechnet)
Merke: Ohne Wiederholungen wird die „komprimierte“ Nachricht größer als das Original. Aus ABCD wird A1B1C1D1: Aus 4 Zeichen werden 8 Zeichen.
Teste dich
RLE ist geeignet, um längere Wiederholungen von Symbolen zu komprimieren. Bei langen Wiederholungsfolgen spart man insbesondere erheblich Speicherplatz. Bei kurzen Wiederholungen ist die Einsparung gering. Im ungünstigsten Fall, also ohne Wiederholungen, wäre die „komprimierte“ Nachricht größer als das Original.
Ein Beispiel sind Schwarz-Weiß-Seiten beim Fax. Dort wechseln sich lange weiße Bereiche mit kürzeren schwarzen Bereichen ab. Darum erzielt RLE dort gute Ergebnisse. Auch Grafikformate wie Windows Bitmap, Targa oder PCX verwenden die Lauflängenkodierung.
So begründest du: Prüfe, ob die Daten lange Läufe enthalten. Wenn ja, spart RLE viel Platz. Wechseln die Zeichen dagegen ständig, bringt RLE wenig oder sogar eine größere Nachricht.
| Daten | Läufe | Wirkung von RLE |
|---|---|---|
| Faxseite mit langen weißen Bereichen | lange Läufe | gute Ergebnisse, erhebliche Einsparung |
| Viele kurze Wiederholungen | kurze Läufe | Einsparung gering |
| Folge ohne Wiederholungen | keine Läufe | Nachricht wird größer als das Original |
Merke: RLE lohnt sich bei langen Wiederholungen. Je kürzer die Wiederholungen sind, desto geringer ist die Einsparung.
Teste dich
Alles auf einen Blick
Lauflängenkodierung
Grundidee
Jede Folge gleicher Symbole wird durch ihre Anzahl und gegebenenfalls das Symbol ersetzt.
Bitfolgen
Man einigt sich auf das Startbit, danach stehen abwechselnd die Längen der Null- und Eins-Folgen.
Mehr als zwei Symbole
Neben der Anzahl wird auch das Symbol mitgesendet.
Speicher
Die Einsparung ist umso geringer, je kürzer die Wiederholungen sind. Im ungünstigsten Fall wird die Nachricht größer.
Eignung
RLE ist geeignet für längere Wiederholungen, zum Beispiel bei Schwarz-Weiß-Seiten im Fax.
Musteraufgabe · Schritt für Schritt
Eine Pixelzeile codieren und decodieren (ausgedachtes Beispiel)
- 1Annahmen (ausgedacht): 16 Pixel, 0 steht für Schwarz, 1 für Weiß. Vereinbart: Es beginnt mit 0. Jede Länge wird mit 3 Bit gespeichert, ein Start-Bit wird nicht gespeichert.
- 2Zeile: 0001 1111 1100 0000
- 3Läufe: 3 Nullen, 7 Einsen, 6 Nullen. Alle Längen sind höchstens 7.
- 4Längen: 3, 7, 6
- 53 → 011, 7 → 111, 6 → 110
- 6Codiert: 011 111 110, das sind 3 · 3 = 9 Bit statt 16 Bit
- 7Decodieren: 3 Nullen, 7 Einsen, 6 Nullen → 0001 1111 1100 0000
Fehler finden
Prüfe die Aussagen zu einer ausgedachten Folge In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 4Hier steht das Gegenteil der Regel. Richtig: Die Einsparung ist umso geringer, je kürzer die Wiederholungen sind. Der lange Lauf Q spart ein, die Einzelzeichen R, S und T tun das kaum.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Die Lauflängenkodierung ist ein einfacher Kompressionsalgorithmus. Bei mehr als zwei Symbolen muss neben der Anzahl auch das mitgesendet werden. Mit drei Binärstellen deckt man die Zahlen von 0 bis ab.
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback