Stewdent.eu
▾

Lauflängenkodierung

Die Lauflängenkodierung (RLE) ist eine einfache, aber effektive verlustfreie Kompressionsmethode, die Wiederholungen in Daten als Zahl-Symbol-Paare speichert.

Zuletzt aktualisiert: 20. Februar 2026

★★☆☆☆ Stufe 2computingDatencompressionrlerun-length-encoding3 Min Lesezeit

Fehler melden

Was ist Lauflängenkodierung?

Lauflängenkodierung (englisch: Run-Length Encoding, kurz RLE) ist eine der einfachsten Kompressionsmethoden. Die Idee ist brillant simpel: Anstatt dieselben Daten mehrmals zu wiederholen, speichert man, wie oft sie wiederholt werden.

Beispiel:

  • Original: AAAAAABBBBBBBCCA (16 Zeichen)
  • Komprimiert: 6A7B2C1A (8 Zeichen) – 50 % kleiner!

Jede „Lauflänge" besteht aus zwei Teilen: der Anzahl der Wiederholungen und dem Symbol selbst.

Ein visuelles Beispiel: Schwarzweiß-Bilder

RLE wird oft bei einfachen Bildern eingesetzt. Stell dir eine Zeile eines Schwarzweiß-Bildes vor:

Original:    000000001111111100000000000000001111000
Komprimiert: 8×0  8×1  16×0  4×1  3×0

Anstatt 39 Werte zu speichern, speichern wir nur 10 Werte – eine enorme Ersparnis!

Hinweis

Das Faxgerät, das viele Büros früher benutzt haben, verwendet RLE zur Kompression von Schwarz-Weiß-Dokumenten. Da Dokumente meist große weiße Flächen haben, funktioniert RLE dabei sehr gut.

RLE in Python implementieren

def rle_kodieren(daten):
    """Kodiert eine Liste mit Lauflängenkodierung."""
    if not daten:
        return []
    
    ergebnis = []
    zaehler = 1
    
    for i in range(1, len(daten)):
        if daten[i] == daten[i - 1]:
            zaehler += 1
        else:
            ergebnis.append((zaehler, daten[i - 1]))
            zaehler = 1
    
    ergebnis.append((zaehler, daten[-1]))
    return ergebnis

def rle_dekodieren(kodiert):
    """Dekodiert Lauflängenkodierung zurück zu Originaldaten."""
    return [symbol for anzahl, symbol in kodiert for _ in range(anzahl)]

# Test
original = [0, 0, 0, 0, 1, 1, 1, 0, 0]
kodiert = rle_kodieren(original)
dekodiert = rle_dekodieren(kodiert)

print("Original:", original)
print("Kodiert:", kodiert)       # [(4, 0), (3, 1), (2, 0)]
print("Dekodiert:", dekodiert)   # [0, 0, 0, 0, 1, 1, 1, 0, 0]

Wann funktioniert RLE gut – und wann nicht?

RLE ist sehr effektiv, wenn die Daten viele Wiederholungen enthalten:

  • Einfache Schwarz-Weiß-Bilder (viele weiße Flächen)
  • Hintergründe mit einfarbigen Bereichen
  • Texte mit vielen Leerzeichen

RLE ist ineffektiv oder sogar kontraproduktiv, wenn die Daten wenige Wiederholungen haben:

Warnung

Bei Daten ohne Wiederholungen macht RLE die Datei sogar größer! Das Wort ABCDE würde zu 1A1B1C1D1E – doppelt so groß. Deshalb sollte man vor dem Komprimieren prüfen, ob RLE für den Datentyp geeignet ist.

Vergleich: Original vs. RLE

DatentypRLE-Effizienz
Einfarbiges BildSehr hoch
Schwarz-Weiß-DokumentHoch
Foto mit vielen FarbenNiedrig
Zufällige DatenNegativ

Übungsaufgaben

Kodiere die folgende Zeichenkette mit RLE: WWWWWWBBBBWWWWWWWWWWWWBB. Wie viele Zeichen hat das Ergebnis?

Antwort anzeigen
6W4B12W2B = 8 Zeichen (im Vergleich zu 24 Originalzeichen). Darstellung: 6×W, 4×B, 12×W, 2×B.

Gegeben die RLE-kodierte Folge: 3R2G4B1R. Dekodiere sie und gib die ursprüngliche Zeichenkette an.

Antwort anzeigen
3R = RRR, 2G = GG, 4B = BBBB, 1R = R. Ergebnis: RRRGGBBBBBR. (Hinweis: Korrekte Dekodierung: RRRGGBBBBR)