Wiederholungscode

Hallo,
Weiß jetzt nicht genau, ob ich hier richtig bin, hoffe schon…

Mich verwirrt ein Skript zum Wiederholungscode etwas

Sei die Nachricht s=1011
Es wird der k=3 Wiederholungscode verwendet

Das heißt, jedes Bit wird 3 mal wiederholt

Sollte dann so aussehen: 1011 1011 1011 1011 -> ursprüngliche Nachricht + 3 Wiederholungen

Oder auch so: 1111 0000 1111 1111 -> ist das gleichbedeutend mit oben?

Nur steht hier im Skript bei k=3:
111 000 111 111

Was ich allerdings nicht verstehe. Kann mir da bitte jemand erklären wie das funktioniert? Vor allem verwirren mich diese 2 Schreibweisen etwas

Dann heißt es weiter, es können k-1 Fehler erkannt werden.
Wenn ich mir die Nachricht ansehe:
1011 1011 1011 1011
Hier können also 2 Fehler erkannt werden. Also je ein Fehler pro Block oder? Das heißt also, mann hat noch 2 richtige Blocks, mit denen man die falschen vergleichen kann.
Dann heißt es weiter, es können (k-1)/2 Fehler korrigiert werden.
Heißt also 1 Fehler kann korrigiert werden.

Wenn ich mir jetzt die andere Schreibweise ansehe:
1111 0000 1111 1111
Dann kann das Verfahren wie oben ja gar nicht funktionieren zur Fehlererkennung und Korrektur oder? Denn ich darf die Blocks ja nicht miteinander vergleichen, weil sie von Haus aus andere Informationen beinhalten.

Also die größten Fragen, die sich mir stellen:
Im Skript steht k=3, Code lautet aber 111 000 111 111 ?

Wie kann ich bei diesem Code das Fehlererkennungs- und korrekturverfahren anwenden?

Sind diese beiden Schreibweisen gleichbedeutend? Denn in meinem Skript steht 111 000 111 111, und im Internet habe ich eben
1011 1011 1011 1011 gesehen. Da ist die Anordnung anders und das k auch anders interpretiert worden, also mit Information + 3 Wiederholungen.

Hoffe es nimmt sich jemand die Zeit.
Danke!!

Hallo,

Weiß jetzt nicht genau, ob ich hier richtig bin, hoffe
schon…

das Informatik-Brett wäre eventuell passender gewesen.

Sei die Nachricht s=1011
Es wird der k=3 Wiederholungscode verwendet

Das heißt, jedes Bit wird 3 mal wiederholt

Sollte dann so aussehen: 1011 1011 1011 1011 -> ursprüngliche
Nachricht + 3 Wiederholungen

Oder auch so: 1111 0000 1111 1111 -> ist das gleichbedeutend
mit oben?

Na, im ersten Fall wurde die Nachricht als Ganzes wiederholt, im zweiten Fall jedes Bit für sich. Das sind zwei unterschiedliche, aber prinzipiell ähnliche Spielweisen des Wiederholungscodes.

Nur steht hier im Skript bei k=3:
111 000 111 111

Also gibt es offensichtlich in unterschiedlichen Quellen unterschiedliche Konventionen, wie man die „Wiederholungen“ zählt. Das ist nichts ungewöhnliches und sollte dich nicht beunruhigen, solange du das zugrundeliegende Prinzip verstehst.

Dann heißt es weiter, es können k-1 Fehler erkannt werden.

Ja, stimmt, aber nur, wenn du für k die zweite Definition der Wiederholungen aus dem Skript nimmst (sonst kannst du halt k Fehler erkennen).

Wenn ich mir die Nachricht ansehe:
1011 1011 1011 1011
Hier können also 2 Fehler erkannt werden.

Nein, hier drei. Z.B. könnten 3 Bits umkippen:

1011 1011 1011 1011
 + + +
1111 1111 1011 1111

Da nicht alle 4 Wiederholungen übereinstimmen, erkennt man, dass ein Übertragungsfehler vorliegt. Erst bei 4 Fehlern könnte man eine Nachricht empfangen, der man nicht ansieht, dass sie fehlerhaft ist. (Z.B. wenn im Beispiel die letzte Null umkippt).

Also je ein Fehler pro Block oder?

Nein, die Fehler könnten auch alle im selben Block vorliegen. Auch dann weicht der Block von den Wiederholungen ab, und man erkennt den Fehler.

Dann heißt es weiter, es können (k-1)/2 Fehler korrigiert
werden.
Heißt also 1 Fehler kann korrigiert werden.

Richtig, das gilt auch für das aktuelle Beispiel mit k = 4. Mit deiner Formel kommt man auf 1.5 Fehler, aber halbe Fehler gibt es nicht, also muss man abrunden.

Wenn ich mir jetzt die andere Schreibweise ansehe:
1111 0000 1111 1111
Dann kann das Verfahren wie oben ja gar nicht funktionieren
zur Fehlererkennung und Korrektur oder?

Natürlich funktioniert es genauso gut. Du kannst deine „Blöcke“, die du eben verglichen hast, ja rekonstruieren, indem du die Bits umordnest.

Also die größten Fragen, die sich mir stellen:
Im Skript steht k=3, Code lautet aber 111 000 111 111 ?

k = 3 => jedes Bit wird dreimal übertragen

Wie kann ich bei diesem Code das Fehlererkennungs- und
korrekturverfahren anwenden?

Beispiel: Du empfängst die Nachricht 110 001 111 111. Du weißt, dass das drei Wiederholungen sein sollen, also kannst du das auseinandernehmen in

1011
1011
0111

Nicht alle drei Wiederholungen stimmen überein: Fehler erkannt. Zur Fehlerbehebung machst du eine Art Abstimmung pro Bit: Wenn mehr Wiederholungen für 1 „stimmen“, nimmst du eine 1 ins Ergebnis, sonst eine Null:

1011
1011
0111
||
|2-mal "0", 1-mal "1", also "0"!
|
2-mal "1", 1-mal "0", also "1"!

=\> korrigierte Nachricht: 1011

Andreas

Super erklärt. Danke

Werde mid jetzt einfach auf die Schreibweise im Skript konzentrieren, mehr Informationen werden mich wahrscheinlich eher verwirren als mir weiterhelfen.