Aufgaben:Aufgabe 1.08: Identische Codes: Unterschied zwischen den Versionen
Wael (Diskussion | Beiträge) |
|||
(10 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
}} | }} | ||
− | [[Datei:P_ID2393__KC_A_1_8_neu.png|right|frame|Zuordnung des | + | [[Datei:P_ID2393__KC_A_1_8_neu.png|right|frame|Zuordnung des $(6, 3)$–Blockcodes]] |
− | Wir betrachten einen Blockcode | + | Wir betrachten einen Blockcode $\mathcal{C}$, der durch folgende Generatormatrix beschrieben wird: |
:G=(001011100110011110). | :G=(001011100110011110). | ||
− | Die Zuordnung zwischen den Informationsworten | + | Die Zuordnung zwischen den Informationsworten $\underline{u}$ und den Codeworten $\underline{x}$ kann der Tabelle entnommen werden. Man erkennt, dass es sich dabei nicht um einen systematischen Code handelt. |
− | Durch Manipulation der Generatormatrix | + | Durch Manipulation der Generatormatrix $\boldsymbol {\rm G}$ lassen sich daraus identische Codes konstruieren. Darunter versteht man Codes mit gleichen Codeworten, jedoch unterschiedlicher Zuordnung $\underline{u} \rightarrow \underline{x}$. |
+ | |||
+ | Folgende Operationen sind erlaubt, um einen identischen Code zu erhalten: | ||
*Vertauschen oder Permutieren der Zeilen, | *Vertauschen oder Permutieren der Zeilen, | ||
− | *Multiplizieren aller Zeilen mit einem konstanten Vektor ungleich 0, | + | |
+ | *Multiplizieren aller Zeilen mit einem konstanten Vektor ungleich "$\underline{0}$", | ||
+ | |||
*Ersetzen einer Zeile durch eine Linearkombination zwischen dieser Zeile und einer anderen. | *Ersetzen einer Zeile durch eine Linearkombination zwischen dieser Zeile und einer anderen. | ||
− | |||
− | '' | + | Für den in der Teilaufgabe '''(3)''' gesuchten Code Csys mit Generatormatrix Gsys wird weiter gefordert, dass er systematisch ist. |
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Hinweise: | ||
+ | |||
+ | *Die Aufgabe gehört zum Kapitel [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes|"Allgemeine Beschreibung linearer Blockcodes"]]. | ||
+ | |||
+ | *Bezug genommen wird insbesondere auf die Seite [[Kanalcodierung/Allgemeine_Beschreibung_linearer_Blockcodes#Systematische_Codes|"Systematische Codes"]]. | ||
+ | |||
+ | *Bezug genommen wird zudem auf die so genannte "Singleton–Schranke":& | ||
+ | |||
+ | *Diese besagt, dass die minimale Hamming–Distanz eines (n,k)–Blockcodes nach oben beschränkt ist: dmin≤n−k+1. | ||
+ | |||
+ | |||
− | |||
− | |||
− | |||
Zeile 29: | Zeile 45: | ||
<quiz display=simple> | <quiz display=simple> | ||
− | {Geben Sie die Kenngrößen des gegebenen Codes | + | {Geben Sie die Kenngrößen des gegebenen Codes $\mathcal{C}$ an. |
|type="{}"} | |type="{}"} | ||
− | $\ | + | $n \hspace{0.3cm} = \ $ { 6 } |
− | $\ | + | $k \hspace{0.3cm} = \ $ { 3 } |
− | $\ | + | $m \hspace{0.15cm} = \ $ { 3 } |
− | $\ | + | $R \hspace{0.2cm} = \ ${ 0.5 3% } |
− | $\ | + | $|\hspace{0.05cm}\mathcal{C}\hspace{0.05cm}| \hspace{-0.05cm} = \ ${ 8 } |
− | $ | + | $d_{\rm min} \hspace{0.01cm} = \ $ { 3 } |
− | {Gibt es einen (6, 3)–Blockcode mit größerer Minimaldistanz? | + | {Gibt es einen $(6, 3)$–Blockcode mit größerer Minimaldistanz? |
− | |type=" | + | |type="()"} |
+ Ja. | + Ja. | ||
- Nein. | - Nein. | ||
− | {Wie lautet die Generatormatrix Gsys des identischen systematischen Codes? | + | {Wie lautet die Generatormatrix Gsys des identischen systematischen Codes? |
|type="[]"} | |type="[]"} | ||
− | - Die 1. Zeile lautet | + | - Die 1. Zeile lautet „$1 \ 0 \ 1 \ 1 \ 0 \ 1$”. |
− | + Die 2. Zeile lautet | + | + Die 2. Zeile lautet „$0 \ 1 \ 0 \ 1 \ 0 \ 1$”. |
− | + Die 3. Zeile lautet | + | + Die 3. Zeile lautet „$0 \ 0 \ 1 \ 0 \ 1 \ 1$”. |
{Welche Zuordnungen ergeben sich bei dieser Codierung? | {Welche Zuordnungen ergeben sich bei dieser Codierung? | ||
|type="[]"} | |type="[]"} | ||
− | + $\underline{u} = (0, 0, 0) | + | + $\underline{u} = (0, 0, 0) \ \Rightarrow \ \underline{x}_{\rm sys} = (0, 0, 0, 0, 0, 0)$. |
− | + $\underline{u} = (0, 0, 1) | + | + $\underline{u} = (0, 0, 1) \ \Rightarrow \ \underline{x}_{\rm sys}= (0, 0, 1, 0, 0, 1)$. |
− | - $\underline{u} = (0, 1, 0) | + | - $\underline{u} = (0, 1, 0) \ \Rightarrow \ \underline{x}_{\rm sys} = (0, 1, 0, 1, 1, 0)$. |
− | {Welche Prüfbits hat der systematische Code x_sys=(u1,u2,u3,p1,p2,p3)? | + | {Welche Prüfbits hat der systematische Code $\underline{x}_{\rm sys} = (u_{1},\ u_{2},\ u_{3},\ p_{1},\ p_{2},\ p_{3})$? |
|type="[]"} | |type="[]"} | ||
− | +$p_{1} = u_{1} | + | +$p_{1} = u_{1} \oplus u_{2},$ |
− | -$p_{2} = u_{2} | + | -$p_{2} = u_{2} \oplus u_{3},$ |
− | -$p_{3} = u_{1} | + | -$p_{3} = u_{1} \oplus u_{3}.$ |
Zeile 68: | Zeile 84: | ||
===Musterlösung=== | ===Musterlösung=== | ||
{{ML-Kopf}} | {{ML-Kopf}} | ||
− | '''1 | + | '''(1)''' Der vorgegebene Code $\mathcal{C}$ wird durch folgende Kenngrößen charakterisiert: |
− | *Bitanzahl der Codeworte: n=6_, | + | *Bitanzahl der Codeworte: n=6_, |
− | |||
− | |||
− | |||
− | |||
− | |||
+ | *Bitanzahl der Informationsworte: k=3_, | ||
+ | *Anzahl der Prüfbitgleichungen: m=n−k=3_, | ||
− | + | *Coderate: $R = k/n = 3/6 \Rightarrow \underline{R = 0.5}$, | |
− | + | *Anzahl der Codeworte (Codeumfang): $|\mathcal{C}| = 2^k \Rightarrow \underline{|C| = 8}$, | |
− | * | + | *minimale Hamming–Distanz (siehe Tabelle): $\underline{d}_{\rm min} \underline{= 3}$. |
− | |||
+ | '''(2)''' Richtig ist \underline{\rm JA}: | ||
+ | *Nach der Singleton–Schranke gilt d_{\rm min} ≤ n - k + 1. Mit n = 6 und k = 3 erhält man hierfür d_{\rm min} ≤ 4. | ||
+ | |||
+ | *Es kann also durchaus ein (6, 3)–Blockcode mit größerer Minimaldistanz konstruiert werden. Wie ein solcher Code aussieht, wurde freundlicherweise nicht gefragt. | ||
− | '''3 | + | |
+ | Die Minimaldistanz aller Hamming–Codes ist d_{\rm min} = 3, und nur der Sonderfall mit n = 3 und k = 1 erreicht den Grenzwert. Dagegen erreichen das Maximum entsprechend der Singleton–Schranke: | ||
+ | |||
+ | *alle [[Kanalcodierung/Beispiele_binärer_Blockcodes#Wiederholungscodes|Wiederholungscodes]] (Repetition Codes, \rm RC) wegen k = 1 und d_{\rm min} = n; hierzu gehört auch der \rm (3, 1)–Hamming–Code, der ja bekannterweise identisch ist mit dem \text{RC (3, 1)}, | ||
+ | |||
+ | *alle [[Kanalcodierung/Beispiele_binärer_Blockcodes#Single_Parity.E2.80.93check_Codes|Single Parity–check Codes]] \rm (SPC): k = n - 1, d_{\rm min} = 2. | ||
+ | |||
+ | |||
+ | |||
+ | '''(3)''' Richtig sind die <u>Lösungsvorschläge 2 und 3</u>: | ||
+ | *Vertauscht man Zeilen der Generatormatrix $\boldsymbol {\rm G}$, so kommt man zu einem identischen Code $\mathcal{C}'$. Das heißt: $\mathcal{C}$ und $\mathcal{C}'$ beinhalten die genau gleichen Codeworte. | ||
+ | |||
+ | *Beispielsweise erhält man nach zyklischem Zeilentausch $2 \rightarrow 1,\ 3 \rightarrow 2$ und $1 \rightarrow 3$ die neue Matrix | ||
:{ \boldsymbol{\rm G}}' = \begin{pmatrix} 1 &0 &0 &1 &1 &0\\ 0 &1 &1 &1 &1 &0\\ 0 &0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}. | :{ \boldsymbol{\rm G}}' = \begin{pmatrix} 1 &0 &0 &1 &1 &0\\ 0 &1 &1 &1 &1 &0\\ 0 &0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}. | ||
− | Die erste und die letzte Zeile der neuen Matrix entsprechen schon den Vorgaben eines systematischen Codes, nämlich, dass deren Generatormatrix { \boldsymbol{\rm G}_{\rm sys}} mit einer Diagonalmatrix beginnen muss. Ersetzt man die Zeile 2 durch die Modulo–2–Summe von Zeile 2 und 3, so erhält man: | + | *Die erste und die letzte Zeile der neuen Matrix entsprechen schon den Vorgaben eines systematischen Codes, nämlich, dass deren Generatormatrix { \boldsymbol{\rm G}_{\rm sys}} mit einer Diagonalmatrix beginnen muss. |
+ | |||
+ | *Ersetzt man die Zeile 2 durch die Modulo–2–Summe von Zeile 2 und 3, so erhält man: | ||
:{ \boldsymbol{\rm G}}_{\rm sys} = \begin{pmatrix} 1 &0 &0 &1 &1 &0\\ 0 &1 &0 &1 &0 &1\\ 0 &0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}. | :{ \boldsymbol{\rm G}}_{\rm sys} = \begin{pmatrix} 1 &0 &0 &1 &1 &0\\ 0 &1 &0 &1 &0 &1\\ 0 &0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}. | ||
− | + | *Dieser systematische Code beinhaltet genau die gleichen Codeworte wie die Codes $\mathcal{C}$ und $\mathcal{C}'$. | |
− | |||
− | |||
− | |||
− | * | + | '''(4)''' Richtig sind die <u>Lösungsvorschläge 1 und 2</u>: |
− | + | *Wendet man die Gleichung $\underline{x}_{\rm sys} = \underline{u} \cdot \boldsymbol{\rm G}_{\rm sys}$ auf obige Beispiele an, so erkennt man, dass die beiden ersten Aussagen richtig sind, nicht aber die letzte. | |
+ | *Ohne Rechnung kommt man zum gleichen Ergebnis, wenn man berücksichtigt, dass | ||
− | + | :*das systematische Codewort \underline{x}_{\rm sys} mit \underline{u} beginnen muss, | |
+ | :*der Code $\mathcal{C}_{\rm sys} die gleichen Codeworte beinhaltet wie der vorgegebene Code \mathcal{C}$. | ||
+ | *Für \underline{u} = (0, 1, 0) lautet somit das Codewort (0, 1, 0, ?, ?, ?). | ||
− | + | *Ein Vergleich mit der Codetabelle von \mathcal{C} auf der Angabenseite führt zu \underline{x}_{\rm sys} = (0, 1, 0, 1, 0, 1). | |
− | |||
− | |||
− | + | '''(5)''' Richtig ist nur die <u>Aussage 1</u>. Die Angaben für $p_{2}$ und $p_{3}$ sind dagegen genau vertauscht. | |
+ | *Bei systematischer Codierung besteht folgender Zusammenhang zwischen Generator– und Prüfmatrix: | ||
− | + | :$${ \boldsymbol{\rm G}} =\left({ \boldsymbol{\rm I}}_k \: ; \:{ \boldsymbol{\rm P}} \right) \hspace{0.3cm}\Leftrightarrow \hspace{0.3cm} { \boldsymbol{\rm H}} =\left({ \boldsymbol{\rm P}}^{\rm T}\: ; \:{ \boldsymbol{\rm I}}_m \right) \hspace{0.05cm}.$$ | |
[[Datei:P_ID2395__KC_A_1_8_ML.png|right|frame|Schaubild der Prüfgleichungen]] | [[Datei:P_ID2395__KC_A_1_8_ML.png|right|frame|Schaubild der Prüfgleichungen]] | ||
+ | *Angewendet auf das aktuelle Beispiel erhält man so: | ||
− | :$$ | + | :$${ \boldsymbol{\rm G}}_{\rm sys} = \begin{pmatrix} 1 &0 &0 &1 &1 &0\\ 0 &1 &0 &1 &0 &1\\ 0 &0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm H}}_{\rm sys} = \begin{pmatrix} 1 &1 &0 &1 &0 &0\\ 1 &0 &1 &0 &1 &0\\ 0 &1 &1 &0 &0 &1 \end{pmatrix} \hspace{0.05cm}.$$ |
− | |||
− | |||
− | |||
− | |||
+ | *Daraus ergeben sich Prüfgleichungen (siehe Grafik): | ||
+ | :u_1 \oplus u_2 \oplus p_1 \hspace{-0.15cm} \ = \ \hspace{-0.15cm}0 \hspace{0.3cm} \Rightarrow\hspace{0.3cm} p_1 = u_1 \oplus u_2 \hspace{0.05cm}, | ||
+ | : u_1 \oplus u_3 \oplus p_2 \hspace{-0.15cm} \ = \ \hspace{-0.15cm} 0 \hspace{0.3cm} \Rightarrow\hspace{0.3cm} p_2 = u_1 \oplus u_3 \hspace{0.05cm}, | ||
+ | : u_2 \oplus u_3 \oplus p_3 \hspace{-0.15cm} \ = \ \hspace{-0.15cm} 0 \hspace{0.3cm} \Rightarrow\hspace{0.3cm} p_3 = u_2 \oplus u_3 \hspace{0.05cm}. | ||
Zeile 134: | Zeile 164: | ||
− | [[Category:Aufgaben zu Kanalcodierung|^1.4 | + | [[Category:Aufgaben zu Kanalcodierung|^1.4 Beschreibung linearer Blockcodes |
^]] | ^]] |
Aktuelle Version vom 10. Juli 2022, 17:41 Uhr
Wir betrachten einen Blockcode \mathcal{C}, der durch folgende Generatormatrix beschrieben wird:
- { \boldsymbol{\rm G}} = \begin{pmatrix} 0 &0 &1 &0 &1 &1\\ 1 &0 &0 &1 &1 &0\\ 0 &1 &1 &1 &1 &0 \end{pmatrix} \hspace{0.05cm}.
Die Zuordnung zwischen den Informationsworten \underline{u} und den Codeworten \underline{x} kann der Tabelle entnommen werden. Man erkennt, dass es sich dabei nicht um einen systematischen Code handelt.
Durch Manipulation der Generatormatrix \boldsymbol {\rm G} lassen sich daraus identische Codes konstruieren. Darunter versteht man Codes mit gleichen Codeworten, jedoch unterschiedlicher Zuordnung \underline{u} \rightarrow \underline{x}.
Folgende Operationen sind erlaubt, um einen identischen Code zu erhalten:
- Vertauschen oder Permutieren der Zeilen,
- Multiplizieren aller Zeilen mit einem konstanten Vektor ungleich "\underline{0}",
- Ersetzen einer Zeile durch eine Linearkombination zwischen dieser Zeile und einer anderen.
Für den in der Teilaufgabe (3) gesuchten Code \mathcal{C}_{\rm sys} mit Generatormatrix \boldsymbol{\rm G}_{\rm sys} wird weiter gefordert, dass er systematisch ist.
Hinweise:
- Die Aufgabe gehört zum Kapitel "Allgemeine Beschreibung linearer Blockcodes".
- Bezug genommen wird insbesondere auf die Seite "Systematische Codes".
- Bezug genommen wird zudem auf die so genannte "Singleton–Schranke":&
- Diese besagt, dass die minimale Hamming–Distanz eines (n, k)–Blockcodes nach oben beschränkt ist: d_{\rm min} \le n - k +1.
Fragebogen
Musterlösung
- Bitanzahl der Codeworte: \underline{n = 6},
- Bitanzahl der Informationsworte: \underline{k = 3},
- Anzahl der Prüfbitgleichungen: \underline{m = n - k = 3},
- Coderate: R = k/n = 3/6 \Rightarrow \underline{R = 0.5},
- Anzahl der Codeworte (Codeumfang): |\mathcal{C}| = 2^k \Rightarrow \underline{|C| = 8},
- minimale Hamming–Distanz (siehe Tabelle): \underline{d}_{\rm min} \underline{= 3}.
(2) Richtig ist \underline{\rm JA}:
- Nach der Singleton–Schranke gilt d_{\rm min} ≤ n - k + 1. Mit n = 6 und k = 3 erhält man hierfür d_{\rm min} ≤ 4.
- Es kann also durchaus ein (6, 3)–Blockcode mit größerer Minimaldistanz konstruiert werden. Wie ein solcher Code aussieht, wurde freundlicherweise nicht gefragt.
Die Minimaldistanz aller Hamming–Codes ist d_{\rm min} = 3, und nur der Sonderfall mit n = 3 und k = 1 erreicht den Grenzwert. Dagegen erreichen das Maximum entsprechend der Singleton–Schranke:
- alle Wiederholungscodes (Repetition Codes, \rm RC) wegen k = 1 und d_{\rm min} = n; hierzu gehört auch der \rm (3, 1)–Hamming–Code, der ja bekannterweise identisch ist mit dem \text{RC (3, 1)},
- alle Single Parity–check Codes \rm (SPC): k = n - 1, d_{\rm min} = 2.
(3) Richtig sind die Lösungsvorschläge 2 und 3:
- Vertauscht man Zeilen der Generatormatrix \boldsymbol {\rm G}, so kommt man zu einem identischen Code \mathcal{C}'. Das heißt: \mathcal{C} und \mathcal{C}' beinhalten die genau gleichen Codeworte.
- Beispielsweise erhält man nach zyklischem Zeilentausch 2 \rightarrow 1,\ 3 \rightarrow 2 und 1 \rightarrow 3 die neue Matrix
- { \boldsymbol{\rm G}}' = \begin{pmatrix} 1 &0 &0 &1 &1 &0\\ 0 &1 &1 &1 &1 &0\\ 0 &0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}.
- Die erste und die letzte Zeile der neuen Matrix entsprechen schon den Vorgaben eines systematischen Codes, nämlich, dass deren Generatormatrix { \boldsymbol{\rm G}_{\rm sys}} mit einer Diagonalmatrix beginnen muss.
- Ersetzt man die Zeile 2 durch die Modulo–2–Summe von Zeile 2 und 3, so erhält man:
- { \boldsymbol{\rm G}}_{\rm sys} = \begin{pmatrix} 1 &0 &0 &1 &1 &0\\ 0 &1 &0 &1 &0 &1\\ 0 &0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.05cm}.
- Dieser systematische Code beinhaltet genau die gleichen Codeworte wie die Codes \mathcal{C} und \mathcal{C}'.
(4) Richtig sind die Lösungsvorschläge 1 und 2:
- Wendet man die Gleichung \underline{x}_{\rm sys} = \underline{u} \cdot \boldsymbol{\rm G}_{\rm sys} auf obige Beispiele an, so erkennt man, dass die beiden ersten Aussagen richtig sind, nicht aber die letzte.
- Ohne Rechnung kommt man zum gleichen Ergebnis, wenn man berücksichtigt, dass
- das systematische Codewort \underline{x}_{\rm sys} mit \underline{u} beginnen muss,
- der Code \mathcal{C}_{\rm sys} die gleichen Codeworte beinhaltet wie der vorgegebene Code \mathcal{C}.
- Für \underline{u} = (0, 1, 0) lautet somit das Codewort (0, 1, 0, ?, ?, ?).
- Ein Vergleich mit der Codetabelle von \mathcal{C} auf der Angabenseite führt zu \underline{x}_{\rm sys} = (0, 1, 0, 1, 0, 1).
(5) Richtig ist nur die Aussage 1. Die Angaben für p_{2} und p_{3} sind dagegen genau vertauscht.
- Bei systematischer Codierung besteht folgender Zusammenhang zwischen Generator– und Prüfmatrix:
- { \boldsymbol{\rm G}} =\left({ \boldsymbol{\rm I}}_k \: ; \:{ \boldsymbol{\rm P}} \right) \hspace{0.3cm}\Leftrightarrow \hspace{0.3cm} { \boldsymbol{\rm H}} =\left({ \boldsymbol{\rm P}}^{\rm T}\: ; \:{ \boldsymbol{\rm I}}_m \right) \hspace{0.05cm}.
- Angewendet auf das aktuelle Beispiel erhält man so:
- { \boldsymbol{\rm G}}_{\rm sys} = \begin{pmatrix} 1 &0 &0 &1 &1 &0\\ 0 &1 &0 &1 &0 &1\\ 0 &0 &1 &0 &1 &1 \end{pmatrix} \hspace{0.3cm} \Rightarrow\hspace{0.3cm} { \boldsymbol{\rm H}}_{\rm sys} = \begin{pmatrix} 1 &1 &0 &1 &0 &0\\ 1 &0 &1 &0 &1 &0\\ 0 &1 &1 &0 &0 &1 \end{pmatrix} \hspace{0.05cm}.
- Daraus ergeben sich Prüfgleichungen (siehe Grafik):
- u_1 \oplus u_2 \oplus p_1 \hspace{-0.15cm} \ = \ \hspace{-0.15cm}0 \hspace{0.3cm} \Rightarrow\hspace{0.3cm} p_1 = u_1 \oplus u_2 \hspace{0.05cm},
- u_1 \oplus u_3 \oplus p_2 \hspace{-0.15cm} \ = \ \hspace{-0.15cm} 0 \hspace{0.3cm} \Rightarrow\hspace{0.3cm} p_2 = u_1 \oplus u_3 \hspace{0.05cm},
- u_2 \oplus u_3 \oplus p_3 \hspace{-0.15cm} \ = \ \hspace{-0.15cm} 0 \hspace{0.3cm} \Rightarrow\hspace{0.3cm} p_3 = u_2 \oplus u_3 \hspace{0.05cm}.