Codierungstheorie

Die vorliegenden Materialien wurden von Daniel Hoherz und André Tempel erstellt. Sollten andere Editoren die Materialien erstellt haben, werden diese explizit genannt.
Wiederholung: Codierungstheorie
Im vorangegangenen Schuljahr haben Sie bereits eine Einführung in die Codierungstheorie erhalten. Am Beispiel von drei verschiedenen Codierungen wurden Vor- und Nachteile der untersuchten Codierungen erarbeitet.
Morse-Code
- + Mittlere Codewortlänge = 3,71
- - Nicht eindeutig dekodierbar, da es Codewörter gibt, die Anfangs- oder Endstücke anderer Codewörter sind.
- - Übertragungsfehler werden nicht sicher erkannt
- + Informationsrate 100%
ASCII-Code
- - Mittlere Codewortlänge = 8
- + Eindeutig von links und rechts dekodierbar (präfixfrei und suffixfrei)
- - Übertragungsfehler werden nicht sicher erkannt
- + Informationsrate 100%
3Bit-Code
- + Mittlere Codewortlänge = 3
- + Durch das Prüfbit wird zumindest ein Übertragungsfehler sicher erkannt. Eine Fehlerkorrektur ist nicht möglich und zwei oder mehr Übertragungsfehler werden nicht erkannt.
- - Nur zwei Drittel des gesendeten Codes enthalten Informationen. Ein Drittel ist Redundanz (zusätzliche Daten, die keine Informationen beinhalten) → Informationsrate ca. 66,67%.
Ziele / Wünsche an eine „gute“ Codierung:
- Schnelle Übertragbarkeit, also möglichst kleine mittlere Codewortlänge
- Eindeutige Dekodierbarkeit, also möglichst präfix- oder suffixfrei
- Hohe Informationsrate
- Erkennen von Übertragungsfehlern
- Korrigieren von Übertragungsfehlern
Fehlererkennung und Fehlerkorrektur stehen also im Widerspruch zur schnellen Übertragung.
Der Betreiber eines privaten Onlinemarktplatzes bietet eine Schnittstelle zur automatisierten Abfrage von anonymisierten Kaufbewertungen an. Die genaue Art der Kommunikation zwischen einem Client und dem Server des Onlinemarktplatzes hat er dabei in einem Kommunikationsprotokoll EvaluationAnalytics konkret festgelegt. So gibt dieses als einen Aspekt beispielsweise vor, welche Adressierung eine Anfrage an den Server haben sein muss.
Erstellt eine kurze Präsentation, in welcher ihr
- anhand der drei in Jahrgang 11 untersuchten Codierungen gewünschte Eigenschaften einer guten Codierung deutlich macht.
- zwei weitere Aspekte, die ein solches Protokoll vorgeben könnte, beschreibt.
- die Auswirkungen des Ausfalls eines Clients mit denen bei einem Ausfall des Servers vergleicht.
Was ist eine Codierung?
Eine Codierung ist mathematisch wie folgt definiert. Sei \(A\) ein endliches Alphabet aus bestimmten Zeichen und \(B\) ein weiteres endliches Alphabet aus bestimmten Zeichen. Die Zeichen von \(A\) und \(B\) können aber müssen nicht verschieden sein. Dann ist eine Codierung eine Abbildung, die jedem Zeichen aus \(A\) ein Zeichen aus \(B\) zuordnet... Puh, das liest sich aber kompliziert. Schauen wir uns vielleicht ein bekanntes Beispiel an.
| Der Morse-Code | |
|---|---|
| Alphabet A | \(A = \{a, \dots, z, 0, \dots, 9\}\) (Satzzeichen werden nicht aufgeführt.) |
| Alphabet B | \(B = \{w \mid w\) ist eine endliche Kombination aus den Zeichen \(-\) und \(\cdot\}\) |
Beispiele:
\(a \rightarrow \cdot-\) und \(8 \rightarrow ---\cdot\cdot\)
Alle Wörter, die sich aus der Abbildung ergeben, heißen Codewörter.
Seien \(A\) und \(B\) endliche Alphabete. Eine Abbildung \(\varphi : A \rightarrow B\), die jedem Zeichen aus \(A\) ein eindeutiges Zeichen aus \(B\) zuordnet, heißt eine Codierung.
Die Elemente der Menge \(\varphi(A)\), der durch die Abbildung \(\varphi\) erzeugten Wörter, nennt man Codewörter.
Wir haben bereits festgestellt, dass man einerseits eine möglichst kurze Codierung möchte. Auf der anderen Seite möchte man jedoch, dass möglichst viele Übertragungsfehler erkannt und korrigiert werden. Diese beiden Ziele widersprechen sich, da man für eine Fehlererkennung und Fehlerkorrektur eine Codierung mit Redundanzen versehen muss, was jedoch sicher die mittlere Codewortlänge erhöht.
Von Situation zu Situation möchte man jedoch den einen Aspekt stärke in einer Codierung haben als den anderen. Deshalb betrachten wir zunächst beide Ziele getrennt voneinander.
Wiederholung: Kommunikationsprotokolle

Informationen jeglicher Art werden ständig von einem Sender über einen Kommunikationskanal verschickt und von einem Empfänger erhalten. An ein Kommunikationsprotokoll werden verschiedene Anforderungen gestellt. Anhand des Beispiels mit der Flaggenkommunikation haben wir in den vorherigen Schuljahren die folgenden Aspekte eines Kommunikationsprotokolls identifiziert.

Kompressionsverfahren
Bei Kompressionsverfahren geht es darum, die vorhandenen Informationen zu 100% zu erhalten und trotzdem den Speicheraufwand zu verringern. Dies nennt man verlustfreie Kompression.
Grundlage: Das RGB-Farbmodell
Das RGB-Farbmodell ist ein additives Farbmodell, bei welchem eine Farbe durch die Angabe des Rot-, Grün- und Blauanteils definiert wird.
Man kann sich diese Farbmischung so vorstellen, als würden je eine Lichtquelle mit rotem, grünem und blauem Licht auf einen Punkt scheinen. Das Licht auf dem Punkt ist dann eine Mischung aus den drei Farben. Die Intensität der jeweiligen Farbe ist umso stärke, je stärke die jeweilige Lichtquelle strahlt.

Überschneiden sich zwei Lichtkreise, so entstehen die Sekundärfarben Gelb, Magenta und Cyan. In der Mitte überschneiden sich alle drei Lichtkreise, wobei die Mischung Weiß erscheint. Die Farbe Schwarz wird durch die Dunkelheit (kein Licht) im umgebenden Raum dargestellt.
Die Farbanteile \((r, g, b)\) werden dabei in Zahlen von 0 bis 255 codiert. So ergeben sich \(256 \cdot 256 \cdot 256 = 2^8 \cdot 2^8 \cdot 2^8 = 2^{24} = 16.777.216\) verschiedene Farben.
Für jeden Farbanteil werden aufgrund der \(256 = 2^8\) Möglichkeiten 8 Bit, also ein Byte, Speicher benötigt. Da es drei Farbanteile sind, benötigt ein gespeichertes Pixel eines Bildes somit \(3 \cdot 8 = 24\text{ Bit}\), oder 3 Byte.
Beispiele für die binäre Darstellung einiger Farben:
| Farbe | Dezimalwerte | Binärwerte |
|---|---|---|
| Rot | (255, 0, 0) | (11111111, 00000000, 00000000) |
| Grün | (0, 255, 0) | (00000000, 11111111, 00000000) |
| Magenta | (255, 0, 255) | (11111111, 00000000, 11111111) |
| Dunkelgrau | (50, 50, 50) | (00110010, 00110010, 00110010) |
| Hellgrau | (200, 200, 200) | (11001000, 11001000, 11001000) |
Nach einem besonderen Urlaub in der Karibik habt ihr sehr schöne Urlaubsfotos, die sich in euren Social-Media-Accounts sehr gut machen würden.

Die Kamera eines modernen Smartphones hat typischerweise 12 Megapixel, also 12 Millionen Pixel. Angenommen, das obere Foto wurde mit einer solchen Kamera aufgenommen.
Wenn es im RGB-Format gespeichert oder versendet werden soll, würde jeder Pixel 3 Byte Speicherplatz beanspruchen. Das gesamte Bild wäre dann 36 Millionen Byte groß. Das sind 36 Megabyte.
Wenn man ein Foto im Speicher des Smartphones oder einer Cloud betrachtet, hat es 2–3 Megabyte. Das Bild kann demnach nicht im RGB-Format abgespeichert worden sein.
Es wurde ein Kompressionsverfahren genutzt. Ein solches Verfahren reduziert die Größe einer Datei. Bei verlustfreien Kompressionsverfahren wird die Datenmenge reduziert und man verliert keine Informationen. Bei verlustbehafteten Kompressionsverfahren wird die Datenmenge reduziert, aber man verliert einen Teil der ursprünglichen Informationen.
Für beides kennen Sie bereits Beispiele:
Verlustfreies Kompressionsverfahren
Lauflängencodierung bei Schwarz-Weiß- und Graubildern: Alle Informationen der einzelnen Pixel werden beibehalten. Kein Informationsverlust.
Verlustbehaftetes Kompressionsverfahren
Jeweils vier Pixel zu einem mit „gemittelter“ Farbe zusammenfassen. Die komprimierte Datei ist nur noch 25% so groß wie die ursprüngliche. Allerdings verliert man die Informationen der vier ursprünglichen Pixel.
Bevor wir uns mit einem weiteren Bildkompressionsverfahren befassen, betrachten wir zunächst ein verlustfreies Kompressionsverfahren für Texte. Wenn wir das Verfahren verstanden haben, kommen wir wieder zu den Bildern zurück.
Die Huffmancodierung
Die Huffmancodierung ist ein Kompressionsverfahren, welches einen verlustfreien präfixfreien Code mit minimaler mittlerer Codewortlänge liefert. Solch eine Codierung bezeichnet man als optimal. Außerdem ist eine mit der Huffmancodierung codierte Nachricht präfixfrei, also von links eindeutig decodierbar.
Genutzt wird der Huffman-Code bei z. B. MPEG, JPG, MP3 und ZIP.
Die Idee dahinter ist ähnlich dem Morse-Code: Häufig genutzte Zeichen erhalten eine kürzere Codierung als weniger genutzte Zeichen.
Beispiel: Es soll der Text "TILL LIEBT SIBILLE" codiert werden.
Es wird die Häufigkeit eines jeden Zeichens im zu codierenden Text gezählt. Für jedes Zeichen wird ein Knoten erzeugt und mit der entsprechenden Häufigkeit gewichtet. Die Knoten werden absteigend sortiert:

Die beiden Knoten am weitesten rechts werden mit einem weiteren Knoten verbunden.

Der neu entstandene Knoten bildet nun die sogenannte Wurzel einer Baumstruktur. Diese wird nun wieder in absteigender Reihenfolge einsortiert. Die Wurzeln, nach deren Inhalten sortiert wird, werden nun immer orange dargestellt.

Die Schritte 2 und 3 werden so lange wiederholt, bis es nur noch eine Wurzel gibt.
Zusammensetzen 2![]() | Einsortieren 2![]() |
Zusammensetzen 3![]() | Einsortieren 3![]() |
Zusammensetzen 4![]() | Einsortieren 4![]() |
Zusammensetzen 5 Ende, da nur noch eine Wurzel vorhanden ist![]() | |
Gibt es mehrere Bäume mit gleichem Wurzelinhalt und gleicher Höhe, kann man diese gleichwertig betrachten. Bei diesen ist es egal, welcher links und welcher rechts steht.
Jetzt gibt es zwei Möglichkeiten. Entweder schreibt man an alle Kanten des Baumes, die nach links abgehen, eine 0 und an alle, die nach rechts abgehen, eine 1 oder andersherum. Wichtig ist nur, dass man dies konsistent macht.

Die Codierung der Zeichen wird nun von oben am Baum abgelesen. Liest man nicht von oben ab, ist der Code nicht präfixfrei.
| Zeichen | S | T | E | B | I | L |
|---|---|---|---|---|---|---|
| Codewort | 111 | 110 | 011 | 010 | 10 | 00 |
Hamming-Abstand

Stellen Sie sich vor, Sie befinden sich im Sommerurlaub am Strand, während Ihr neues Smart-Home-System zu Hause über die Sicherheit wacht. Der drahtlose Sicherheitssensor im Wohnzimmer sendet routinemäßig seinen Status an die Basisstation. Um Energie und Bandbreite zu sparen, verwendet das System einen 2-Bit-Code:
| 2-Bit-Code | Status / Bedeutung |
|---|---|
| 00 | Alles in Ordnung |
| 01 | Fenster geöffnet |
| 10 | Tür geöffnet |
| 11 | Alarmauslösung (Einbruch / Glasbruch) |
Der Störfall: Während Sie die Sonne genießen, löst ein vorbeifahrender Funkwagen in Ihrer Straße eine kurze elektromagnetische Störung aus. Genau in diesem Moment sendet der Sensor zu Hause den Status 10 („Tür geöffnet“, was auch in Ordnung ist, da die Katze durch das Haus gehen darf). Das Signal wird auf dem Funkweg gestört: Das rechte Bit kippt von 0 auf 1. Die Zentrale empfängt somit die Bitfolge 11.
Bearbeiten Sie die folgenden Fragestellungen zur Auswirkung der Übertragungsstörung:
a) Reaktion des Systems: Beschreiben Sie, wie die Smart-Home-Zentrale auf das empfangene Signal 11 reagieren wird. Welche konkreten Konsequenzen hat dies für Ihren Urlaub?
b) Das technische Grundproblem: Erklären Sie, warum die Smart-Home-Zentrale überhaupt nicht bemerken kann, dass auf dem Funkweg ein Fehler aufgetreten ist.
c) Problemformulierung: Formulieren Sie in einem prägnanten Satz die zentrale Herausforderung, vor der Ingenieurinnen und Ingenieure bei der Entwicklung von Datenübertragungen stehen.
11 fest zugeordnet? Welche automatisierte Benachrichtigung wird folglich ausgelöst?11 ein im System vorgesehenes, gültiges Codewort? Woher soll die Zentrale wissen, was der Sensor ursprünglich senden wollte?a) Reaktion des Systems & Konsequenzen:
Die Zentrale interpretiert das empfangene Signal 11 laut Tabelle als „Einbruch“. Sie sendet eine Push-Benachrichtigung an Ihr Smartphone. Konsequenz: Der Urlaub wird durch die unberechtigte Sorge vor Einbruch gestört, oder es müssen vergebens Nachbarn zur Überprüfung organisiert werden (Fehlalarm).
b) Das technische Grundproblem:
Die empfangene Bitfolge 11 stellt ein gültiges Codewort innerhalb des definierten 2-Bit-Codes dar. Da jede denkbare Bitkombination (00, 01, 10, 11) einer konkreten Nachricht zugeordnet ist, existieren keine ungültigen Wörter. Das System besitzt keine Redundanz und kann gestörte Signale nicht von echten unterscheiden.
c) Problemformulierung:
„Wie müssen Daten für eine Übertragung über fehleranfällige Kanäle codiert werden, damit der Empfänger aufgetretene Übertragungsfehler zuverlässig erkennen (oder sogar korrigieren) kann?“
Aufgaben: Von der Bit-Abweichung zur Fehlererkennung
Sender und Empfänger vereinbaren nun, längere Bitfolgen zu nutzen und nur bestimmte Muster als gültige Signale zuzulassen. Nutzen Sie bei Bedarf die integrierten Hilfen.
Betrachten Sie noch einmal die ursprünglichen Signale aus Teil 1: 00, 01, 10, 11.
An wie vielen Bit-Positionen unterscheiden sich zwei beliebige dieser Signale mindestens voneinander?
Sender und Empfänger einigen sich nun auf neue, 3 Bit lange Signale und lassen alle anderen 3-Bit-Muster als „ungültig“ sperren:
| Gültiges Signal | Bedeutung |
|---|---|
| 001 | Alles in Ordnung |
| 010 | Fenster geöffnet |
| 100 | Tür geöffnet |
| 111 | EINBRUCH / ALARM |
Vergleichen Sie diese vier neuen Signale paarweise untereinander. An wie vielen Bit-Positionen unterscheiden sich zwei dieser Signale nun mindestens voneinander?
Der Sensor sendet 001 („Alles in Ordnung“). Bei der Übertragung kippt 1 Bit → Die Zentrale empfängt die Folge 011.
Befindet sich 011 in der Liste der gültigen Signale?
Erkennt die Zentrale, dass ein Übertragungsfehler vorliegt?
Welche Eigenschaft der 2. Variante sorgt dafür, dass ein einzelner Bitfehler nicht mehr unbemerkt bleiben kann? (Beziehen Sie sich auf Ihre Ergebnisse aus Aufgabe 1 und 2).
Warum kann die Zentrale das empfangene Signal 011 zwar als fehlerhaft erkennen, aber nicht automatisch korrigieren?
Untersuchen Sie, durch welchen 1-Bit-Fehler das Wort
011 aus den ursprünglichen Codewörtern entstanden sein könnte.Die Anzahl der Positionen, an denen sich zwei binäre Wörter gleicher Länge unterscheiden, nennt man in der Informatik den Hamming-Abstand (oder die Hamming-Distanz).
Der Minimalabstand \(d_{\text{min}}\) eines Codes ist der kleinste Hamming-Abstand, der zwischen zwei zulässigen Nachrichten vorkommt:
- Variante 1 hatte einen Minimalabstand von \( d_{\min} = 1 \).
- Variante 2 hat einen Minimalabstand von \(d_{\min} = 2\).
Untersuchen Sie nun zwei gültige Nachrichten \(A\) und \(B\), die so gewählt wurden, dass sie einen Minimalabstand von \(d_{\min} = 3\) zueinander haben (z. B. 000 und 111).
Füllen Sie die Tabelle aus und ermitteln Sie, wie viele Bitfehler das System sicher als Fehler bemerkt:
| Anzahl gekippter Bits (\(e\)) | Empfangenes Wort (Beispiel) | Ist das Wort gültig? | Wird der Fehler erkannt? |
|---|---|---|---|
| 1 Bitfehler | 001 | ||
| 2 Bitfehler | 011 | ||
| 3 Bitfehler | 111 |
Leiten Sie aus Ihren Beobachtungen eine allgemeine Regel für die maximale Anzahl erkennbarer Fehler \(e\) in Abhängigkeit vom Minimalabstand \(d_{\min}\) ab:
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!
Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.
Musterlösung zu den Aufgaben 1 bis 4
Zwei Signale unterscheiden sich an mindestens 1 Bit-Position (z. B. unterscheiden sich 00 und 01 an exakt einer Stelle).
- a) Zwei Signale unterscheiden sich nun an mindestens 2 Bit-Positionen (z. B. unterscheidet sich
001von010an genau 2 Stellen). - b) Nein,
011ist kein gültiges Signal. - c) Ja. Die Zentrale vergleicht die Nachricht mit ihrer Liste, findet
011dort nicht und schlägt Alarm wegen eines Übertragungsfehlers.
- a) Der Abstand zwischen allen gültigen Signalen wurde vergrößert (von 1 auf 2 Bits). Ein einzelner Bitfehler führt dadurch zwangsläufig auf ein ungenutztes/ungültiges Bit-Muster.
- b) Das Wort
011unterscheidet sich von001(1 Bit abweichend), von010(1 Bit abweichend) und von111(1 Bit abweichend) um jeweils genau 1 Bit. Die Zentrale kann daher nicht wissen, welches dieser drei Wörter gesendet werden sollte.
a) Ausgefüllte Tabelle:
- 1 Bitfehler (001): Ist gültig? Nein | Wird erkannt? Ja
- 2 Bitfehler (011): Ist gültig? Nein | Wird erkannt? Ja
- 3 Bitfehler (111): Ist gültig? Ja (falsches Signal!) | Wird erkannt? Nein
b) Allgemeine Regel:
$$\text{Maximal erkennbare Fehler } e = d_{\min} - 1$$
(In Worten: Man kann immer einen Fehler weniger erkennen, als der Minimalabstand lang ist.)
Aufgaben: Fehler automatisch korrigieren
Um Fehler nicht nur zu bemerken, sondern auch automatisch zu korrigieren, einigen sich Sender und Empfänger auf 5-Bit-Codes mit einem Minimalabstand von \(d_{\min} = 3\):
| Gültiges Signal | Bedeutung |
|---|---|
| 01011 | Alles in Ordnung |
| 01100 | Fenster geöffnet |
| 10010 | Tür geöffnet |
| 10101 | EINBRUCH / ALARM |
Die Smart-Home-Zentrale empfängt durch eine Funkstörung die fehlerhafte Folge 01111.
Bestimmen Sie den Hamming-Abstand von 01111 zu allen vier gültigen Codewörtern:
Welches ursprüngliche Signal wird die Zentrale automatisch rekonstruieren, wenn sie davon ausgeht, dass auf der Funkstrecke möglichst wenige Bits gekippt sind? Begründen Sie Ihre Entscheidung.
Die Smart-Home-Zentrale korrigiert Fehler nach einem einfachen Grundsatz:
„Ordne ein empfangenes Signal immer demjenigen gültigen Signal zu, das den geringsten Hamming-Abstand hat.“
In der folgenden Tabelle werden für verschiedene Minimalabstände \(d_{\min}\) jeweils die Belastungstests (Grenzfälle) zwischen zwei gültigen Signalen \(A\) und \(B\) untersucht. Ziel ist es herauszufinden, ab wie vielen Bitfehlern die automatische Korrektur scheitert.
Arbeitsauftrag: Betrachten Sie die Grenzfälle für die verschiedenen Minimalabstände \(d_{\min}\). Tragen Sie in den freien Feldern den Hamming-Abstand zum Signal \(B\), die Auswertung der Zentrale sowie die maximal korrigierbaren Fehler \(t\) ein:
| Minimalabstand \(d_{\min}\) | Gekippte Bits bei Signal A | Abstand zu A | Abstand zu B | Auswertung der Zentrale | Max. korrigierbare Fehler \(t\) |
|---|---|---|---|---|---|
| \(d_{\min} = 3\) | 1 Bit kippt | 1 | 2 | Eindeutig näher an \(A\) → Korrektur klappt | 1 Fehler |
| 2 Bits kippen | 2 | 1 | Näher an \(B\) → Falsche Korrektur! | ||
| \(d_{\min} = 4\) | 1 Bit kippt | 1 | |||
| 2 Bits kippen | 2 | ||||
| \(d_{\min} = 5\) | 2 Bits kippen | 2 | |||
| 3 Bits kippen | 3 | ||||
| \(d_{\min} = 6\) | 2 Bits kippen | 2 | |||
| 3 Bits kippen | 3 |
Warum erhöht sich die Anzahl der korrigierbaren Fehler nicht, wenn man den Minimalabstand von 3 auf 4 (oder von 5 auf 6) vergrößert?
Formulieren Sie die Regel zur Berechnung der maximal korrigierbaren Fehler \(t\) aus dem Minimalabstand \(d_{\min}\) in eigenen Worten oder als Formel:
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!
Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.
Musterlösung zu Teil 3 (Aufgaben 1 & 2)
- a) Hamming-Abstände von
01111:- Zu
01011(„Alles OK“): 1 Bit (an Pos. 3) - Zu
01100(„Fenster“): 2 Bits (an Pos. 4 und 5) - Zu
10010(„Tür“): 3 Bits (an Pos. 1, 4 und 5) - Zu
10101(„Alarm“): 2 Bits (an Pos. 3 und 4)
- Zu
- b) Entscheidung der Zentrale:
Die Zentrale rekonstruiert das Signal01011(„Alles in Ordnung“), da dieses Signal mit nur 1 abweichenden Bit den geringsten Hamming-Abstand aufweist.
- a) Belastungstest-Tabelle:
Bei \(d_{\min} = 3\): Abstand zu \(B\) = 2 (Korrektur klappt) bzw. 1 (Falsche Korrektur) → \(t = 1\)
Bei \(d_{\min} = 4\): Abstand zu \(B\) = 3 (Korrektur klappt) bzw. 2 (Unentschieden) → \(t = 1\)
Bei \(d_{\min} = 5\): Abstand zu \(B\) = 3 (Korrektur klappt) bzw. 2 (Falsche Korrektur) → \(t = 2\)
Bei \(d_{\min} = 6\): Abstand zu \(B\) = 4 (Korrektur klappt) bzw. 3 (Unentschieden) → \(t = 2\)
- b) Beobachtung bei geraden Abständen (\(d_{\min} = 4, 6\)):
Bei geraden Abständen kommt es bei der Hälfte der Fehler zu einem exakten Gleichstand (Unentschieden) zwischen zwei Codewörtern. Da das Signal beiden Codewörtern gleich nahe steht, ist eine eindeutige Korrektur unmöglich. - c) Allgemeine Formelbildung:
In Worten: „Man zieht vom Minimalabstand 1 ab (um den Gleichstand zu vermeiden), teilt durch 2 und rundet bei Nachkommastellen ab.“
Als Formel:$$t = \left\lfloor \frac{d_{\min} - 1}{2} \right\rfloor$$
(Hinweis: Für den Unterricht reicht auch die Schreibweise: \(t = (d_{\min} - 1) / 2\) abgerundet).
Der (7,4)-Hammingcode
Der Repetitionscode hat eine sehr geringe Informationsrate und wird deshalb in der Praxis nicht verwendet. Es gibt fehlererkennende Codierungen mit einer deutlich höheren Informationsrate. Ein Beispiel ist der Hammingcode. Auf Grund der Visualisierungsmöglichkeit in einem Kreis-Modell werden Sie nun den (7,4)-Hammingcode kennenlernen. Der Code übermittelt jeweils Blöcke mit 7 Bit, wobei 4 Bit die Daten codieren und 3 Bit als Prüfbit hinzugefügt werden. In der Praxis werden z. B. der (63,57)-Hammingcode verwendet (s. z. B. Wikipedia).

Die oben abgebildete Darstellung zeigt, wie sich die drei Prüfbit/Paritätsbit \(p_0\), \(p_1\) und \(p_2\) aus den vier Datenbit \(d_0\), \(d_1\), \(d_2\) und \(d_3\) zusammensetzen:
\(p_1 = d_0 + d_2 + d_3\)
\(p_2 = d_1 + d_2 + d_3\)
Die Addition ist eine binäre Addition, wobei der Übertrag nicht relevant ist. Bei einer ungeraden Anzahl Einsen ist demnach das entsprechende Prüfbit 1, ansonsten 0.
Es gilt also: \(0+0 = 0\), \(0+1 = 1+0 = 1\) und \(1+1 = 0\).
Die Codierung mit dem (7,4)-Hammingcode sieht dann wie folgt aus:
Man beachte, dass die Reihenfolge der Bit exakt festgelegt ist. So wird z. B. das Wort 1011, mit \(d_0 = 1\), \(d_1 = 0\), \(d_2 = 1\) und \(d_3 = 1\) wegen \(p_0 = 1+0+1 = \mathbf{\!\color{#000}{\bbox[#fca5a5, 2px]{0}}\!}\), \(p_1 = 1+1+1 = \mathbf{\!\color{#000}{\bbox[#fca5a5, 2px]{1}}\!}\) und \(p_2 = 0+1+1 = \mathbf{\!\color{#000}{\bbox[#fca5a5, 2px]{0}}\!}\) auf das Codewort 0110011 abgebildet.
| p0=d0+d1+d3 | p1=d0+d2+d3 | d0 | p2=d1+d2+d3 | d1 | d2 | d3 | |
|---|---|---|---|---|---|---|---|
| Berechnung | 1+0+1 | 1+1+1 | 1 | 0+1+1 | 0 | 1 | 1 |
| Codewort | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
Die drei Prüfbit sind Paritätsbit, die jeweils drei Datenbit zu einer geraden Parität ergänzen.
Für die Codierung von Zeichen können z. B. jeweils 8 Bit eines ASCII-Wertes in zwei Blöcke zu je 4 Bit aufgeteilt werden. Diese 4 Bit-Blöcke werden dann nach dem oben beschriebenen Verfahren codiert.
Aufgabe
Bearbeiten Sie die folgenden Teilaufgaben zum (7,4)-Hammingcode in Einzel-, Partner- und Gruppenarbeit. Nutzen Sie bei Bedarf die integrierten Hilfen.
Erstelle eine Tabelle mit allen 16 möglichen 4-Bit-Datenblöcken \((d_0, d_1, d_2, d_3)\) und der jeweiligen Codierung \((p_0, p_1, d_0, p_2, d_1, d_2, d_3)\) im (7,4)-Hammingcode.
Erinnerung an die Formeln zur Berechnung der Prüfbits:
\(p_0 = d_0 + d_1 + d_3 \pmod 2\)
\(p_1 = d_0 + d_2 + d_3 \pmod 2\)
\(p_2 = d_1 + d_2 + d_3 \pmod 2\)
Achten Sie darauf, die Bits in der vorgegebenen Reihenfolge anzugeben: \((p_0, p_1, d_0, p_2, d_1, d_2, d_3)\).
Vergleicht eure Tabelle untereinander.
Codiert eine 4-Bit-Sequenz mit dem Hammingcode. Invertiert ein beliebiges Bit (erzeugt also extra einen Übertragungsfehler) und übermittelt das fehlerhafte Codewort einer anderen Zweiergruppe.
Decodiert das fehlerhafte Codewort, das ihr von den anderen erhalten habt, indem ihr die Prüfbit und die Datenbit kontrolliert.
Untersucht, ob der (7,4)-Hammingcode auch zwei Übertragungsfehler erkennen bzw. korrigieren kann.
Unterscheidet dabei die folgenden drei Fälle:
- Zwei Datenbit werden falsch übertragen
- Zwei Prüfbit werden falsch übertragen
- Ein Daten- und ein Prüfbit werden falsch übertragen
Denken Sie an den Minimalabstand \(d_{\min}\) des (7,4)-Hammingcodes (\(d_{\min} = 3\)). Wie viele Fehler kann ein Code mit \(d_{\min} = 3\) sicher erkennen und wie viele korrigieren?
Wenn 2 Bits kippen, führt dies auf ein anderes unzulässiges Muster (Fehler wird erkannt) oder gar auf ein anderes gültiges Codewort? Was passiert, wenn die Korrektur versucht wird?
Vervollständigt die untere Tabelle und vergleicht den (7,4)-Hammingcode mit dem 3-Bit-Repetitionscode und dem \(n\)-Bit-Repetitionscode.
Vergleich 3-Bit-Repetitionscode, n-Bit-Repetitionscode und (7,4)-Hammingcode
| Eigenschaft | 3-Bit-Repetitionscode | n-Bit-Repetitionscode | (7,4)-Hammingcode |
|---|---|---|---|
| Anzahl Datenbit | 1 | 1 | 4 |
| Länge des Codeworts | |||
| Informationsrate | |||
| Anzahl korrigierbarer Fehler | |||
| Anzahl erkennbarer Fehler |
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!
Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.
Musterlösung zu Aufgabe 1 (a bis d)
| Datenbits \((d_0, d_1, d_2, d_3)\) | Prüfbits \((p_0, p_1, p_2)\) | Codewort \((p_0, p_1, d_0, p_2, d_1, d_2, d_3)\) |
|---|---|---|
| 0000 | 000 | 0000000 |
| 0001 | 111 | 1101001 |
| 0010 | 011 | 0101010 |
| 0011 | 100 | 1000011 |
| 0100 | 101 | 1001100 |
| 0101 | 010 | 0100101 |
| 0110 | 110 | 1100110 |
| 0111 | 001 | 0001111 |
| 1000 | 110 | 1110000 |
| 1001 | 001 | 0011001 |
| 1010 | 101 | 1011010 |
| 1011 | 010 | 0110011 |
| 1100 | 011 | 0111100 |
| 1101 | 100 | 1010101 |
| 1110 | 000 | 0010110 |
| 1111 | 111 | 1111111 |
Ein einzelner Bitfehler führt dazu, dass mindestens zwei der Paritätsprüfungen fehlschlagen. Die Kombination der fehlgeschlagenen Paritätsprüfungen (das sogenannte Syndrom) zeigt exakt auf die Position des fehlerhaften Bits. Durch erneutes Invertieren an dieser Stelle wird das ursprüngliche Signal wiederhergestellt.
Der (7,4)-Hammingcode hat einen Minimalabstand von \(d_{\min} = 3\).
- Erkennung: Ja. Bei zwei gekippten Bits entsteht ein ungültiges Codewort. Das System bemerkt, dass ein Fehler aufgetreten ist (unabhängig davon, ob 2 Datenbits, 2 Prüfbits oder 1 Daten- und 1 Prüfbit betroffen sind).
- Korrektur: Nein! Da der Abstand zu einem anderen gültigen Codewort nun nur noch 1 Bit beträgt, versucht der Korrektur-Algorithmus das Signal in die falsche Richtung zu "korrigieren" (Fehlkorrektur). Es wird fälschlicherweise ein 1-Bit-Fehler an einer falschen Stelle vermutet.
| Eigenschaft | 3-Bit-Repetitionscode | n-Bit-Repetitionscode | (7,4)-Hammingcode |
|---|---|---|---|
| Anzahl Datenbit | 1 | 1 | 4 |
| Länge des Codeworts | 3 | \(n\) | 7 |
| Informationsrate | 1/3 (≈ 33,3 %) | 1/\(n\) | 4/7 (≈ 57,1 %) |
| Anzahl korrigierbarer Fehler | 1 | \(\lfloor (n-1)/2 \rfloor\) | 1 |
| Anzahl erkennbarer Fehler | 2 | \(n - 1\) | 2 |
Glossar
🔑 Vigenère-Tafel
Bewege die Maus über die Tabelle
Informatik am GSG wird mit Stolz präsentiert von WordPress






