Difference between revisions of "Channel Coding/Decoding of Convolutional Codes"

From LNTwww
Line 30: Line 30:
  
 
{{BlaueBox|TEXT=   
 
{{BlaueBox|TEXT=   
$\text{Conclusion:}$  Given a digital channel model (for example, the BSC model), the Viterbi algorithm searches from all possible code sequences  $\underline{x}\hspace{0. 05cm}'$  the sequence  $\underline{z}$  with the minimum Hamming distance  $d_{\rm H}(\underline{x}\hspace{0.05cm}', \underline{y})$  to the receiving sequence  $\underline{y}$:
+
$\text{Conclusion:}$  Given a digital channel model (for example, the BSC model), the Viterbi algorithm searches from all possible code sequences  $\underline{x}\hspace{0.05cm}'$  the sequence  $\underline{z}$  with the minimum Hamming distance  $d_{\rm H}(\underline{x}\hspace{0.05cm}', \underline{y})$  to the receiving sequence  $\underline{y}$:
  
 
:<math>\underline{z} = {\rm arg} \min_{\underline{x}\hspace{0.05cm}' \in \hspace{0.05cm} \mathcal{C} } \hspace{0.1cm} d_{\rm H}( \underline{x}\hspace{0.05cm}'\hspace{0.02cm},\hspace{0.02cm} \underline{y}  )  
 
:<math>\underline{z} = {\rm arg} \min_{\underline{x}\hspace{0.05cm}' \in \hspace{0.05cm} \mathcal{C} } \hspace{0.1cm} d_{\rm H}( \underline{x}\hspace{0.05cm}'\hspace{0.02cm},\hspace{0.02cm} \underline{y}  )  
Line 37: Line 37:
 
This also means: &nbsp; The Viterbi algorithm satisfies the&nbsp; [[Channel_Coding/Channel_Models_and_Decision_Structures#Criteria_.C2.BBMaximum-a-posteriori.C2.AB_and_.C2.BBMaximum-Likelihood.C2.AB| "maximum likelihood criterion"]].}}<br>
 
This also means: &nbsp; The Viterbi algorithm satisfies the&nbsp; [[Channel_Coding/Channel_Models_and_Decision_Structures#Criteria_.C2.BBMaximum-a-posteriori.C2.AB_and_.C2.BBMaximum-Likelihood.C2.AB| "maximum likelihood criterion"]].}}<br>
  
== Vorbemerkungen zu den nachfolgenden Decodierbeispielen ==
+
== Preliminary remarks on the following decoding examples ==
 
<br>
 
<br>
[[File:P ID2652 KC T 3 4 S2 v1.png|right|frame|Trellis zur Decodierung der Empfangssequenz&nbsp;  $\underline{y}$|class=fit]]
+
[[File:P ID2652 KC T 3 4 S2 v1.png|right|frame|Trellis for decoding the received sequence&nbsp;  $\underline{y}$|class=fit]]
Für alle Beispiele in diesem Kapitels gelten folgende&nbsp; '''Voraussetzungen''':
+
The following&nbsp; '''prerequisites''' apply to all examples in this chapter:
  
*Standard&ndash;Faltungscodierer: &nbsp; Rate $R = 1/2$,&nbsp; Gedächtnis&nbsp; $m = 2$;  
+
*Standard convolutional encoder: &nbsp; Rate $R = 1/2$,&nbsp; Memory&nbsp; $m = 2$;  
*Übertragungsfunktionsmatrix: &nbsp; $\mathbf{G}(D) = (1 + D + D^2, 1 + D^2)$;
+
*transfer function matrix: &nbsp; $\mathbf{G}(D) = (1 + D + D^2, 1 + D^2)$;
*Länge der Informationssequenz: &nbsp; $L = 5$;
+
*Length of information sequence: &nbsp; $L = 5$;
*Berücksichtigung der Terminierung: &nbsp; $L\hspace{0.05cm}' = 7$;  
+
*Consideration of termination: &nbsp; $L\hspace{0.05cm}' = 7$;  
*Länge der Sequenzen&nbsp; $\underline{x}$&nbsp; und&nbsp; $\underline{y}$&nbsp;: &nbsp; jeweils  $14$ Bit;
+
*Length of sequences&nbsp; $\underline{x}$&nbsp; and&nbsp; $\underline{y}$&nbsp;: &nbsp; $14$ bits each;
*Aufteilung gemäß&nbsp; $\underline{y} = (\underline{y}_1, \ \underline{y}_2, \ \text{...} \ , \ \underline{y}_7)$ <br>&rArr; &nbsp; Bitpaare&nbsp; $\underline{y}_i &#8712; \{00, 01, 10, 11\}$;
+
*Distribution according to&nbsp; $\underline{y} = (\underline{y}_1, \ \underline{y}_2, \ \text{...} \ , \ \underline{y}_7)$ <br>&rArr; &nbsp; bit pairs&nbsp; $\underline{y}_i &#8712; \{00, 01, 10, 11\}$;
*Viterbi&ndash;Decodierung mittels Trellisdiagramms:  
+
*Viterbi decoding using trellis diagram:  
::roter Pfeil &nbsp; &rArr; &nbsp; Hypothese&nbsp; $u_i = 0$,  
+
::red arrow &nbsp; &rArr; &nbsp; hypothesis&nbsp; $u_i = 0$,  
::blauer Pfeil &nbsp; &rArr; &nbsp; Hypothese&nbsp; $u_i = 1$;
+
::blue arrow &nbsp; &rArr; &nbsp; hypothesis&nbsp; $u_i = 1$;
*hypothetische Codesequenz&nbsp; $\underline{x}_i\hspace{0.01cm}' &#8712; \{00, 01, 10, 11\}$;
+
*hypothetical code sequence&nbsp; $\underline{x}_i\hspace{0.01cm}' &#8712; \{00, 01, 10, 11\}$;
*alle hypothetischen Größen mit Apostroph.
+
*all hypothetical quantities with apostrophe.
 
<br clear=all>
 
<br clear=all>
Wir gehen stets davon aus, dass die Viterbi&ndash;Decodierung auf der&nbsp; [[Channel_Coding/Zielsetzung_der_Kanalcodierung#Einige_wichtige_Definitionen_zur_Blockcodierung| Hamming&ndash;Distanz]]&nbsp; $d_{\rm H}(\underline{x}_i\hspace{0.01cm}', \ \underline{y}_i)$&nbsp; zwischen dem Empfangswort&nbsp; $\underline{y}_i$&nbsp; und den vier möglichen Codeworten&nbsp; $x_i\hspace{0.01cm}' &#8712; \{00, 01, 10, 11\}$&nbsp; basiert. Dann gehen wir wie folgt vor:
+
We always assume that the Viterbi decoding is done at the&nbsp; [[Channel_Coding/Objective_of_Channel_Coding#Important_definitions_for_block_coding| Hamming distance]]&nbsp; $d_{\rm H}(\underline{x}_i\hspace{0. 01cm}', \ \underline{y}_i)$&nbsp; between the received word&nbsp; $\underline{y}_i$&nbsp; and the four possible codewords&nbsp; $x_i\hspace{0.01cm}' &#8712; \{00, 01, 10, 11\}$&nbsp; is based. We then proceed as follows:
  
*In die noch leeren Kreise werden die Fehlergrößen&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; der Zustände&nbsp; $S_{\mu} (0 &#8804; \mu &#8804; 3)$&nbsp; zu den Zeitpunkten&nbsp; $i$&nbsp; eingetragen. Der Startwert ist stets&nbsp; ${\it \Gamma}_0(S_0) = 0$.
+
*In the still empty circles the error value&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; of the states&nbsp; $S_{\mu} (0 &#8804; \mu &#8804; 3)$&nbsp; at the time points&nbsp; $i$&nbsp; are entered. The initial value is always&nbsp; ${\it \Gamma}_0(S_0) = 0$.
  
*Die Fehlergrößen für&nbsp; $i = 1$&nbsp; und&nbsp; $i = 2$&nbsp; ergeben sich zu
+
*The error values for&nbsp; $i = 1$&nbsp; and&nbsp; $i = 2$&nbsp; are given by
  
 
::<math>{\it \Gamma}_1(S_0) =d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_1 \big )  \hspace{0.05cm}, \hspace{2.38cm}{\it \Gamma}_1(S_1) = d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_1 \big )  \hspace{0.05cm},</math>
 
::<math>{\it \Gamma}_1(S_0) =d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_1 \big )  \hspace{0.05cm}, \hspace{2.38cm}{\it \Gamma}_1(S_1) = d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_1 \big )  \hspace{0.05cm},</math>
 
::<math>{\it \Gamma}_2(S_0) ={\it \Gamma}_1(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )\hspace{0.05cm}, \hspace{0.6cm}{\it \Gamma}_2(S_1) = {\it \Gamma}_1(S_0)+ d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )  \hspace{0.05cm},\hspace{0.6cm}{\it \Gamma}_2(S_2) ={\it \Gamma}_1(S_1) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )\hspace{0.05cm}, \hspace{0.6cm}{\it \Gamma}_2(S_3) = {\it \Gamma}_1(S_1)+ d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )  \hspace{0.05cm}.</math>
 
::<math>{\it \Gamma}_2(S_0) ={\it \Gamma}_1(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )\hspace{0.05cm}, \hspace{0.6cm}{\it \Gamma}_2(S_1) = {\it \Gamma}_1(S_0)+ d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )  \hspace{0.05cm},\hspace{0.6cm}{\it \Gamma}_2(S_2) ={\it \Gamma}_1(S_1) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )\hspace{0.05cm}, \hspace{0.6cm}{\it \Gamma}_2(S_3) = {\it \Gamma}_1(S_1)+ d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )  \hspace{0.05cm}.</math>
  
*Ab&nbsp; $i = 3$&nbsp; hat das Trellis seine Grundform erreicht, und zur Berechnung aller&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; muss jeweils das Minimum zwischen zwei Summen ermittelt werden:
+
*From&nbsp; $i = 3$&nbsp; the trellis has reached its basic form, and to compute all&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; the minimum between two sums must be determined in each case:
  
 
::<math>{\it \Gamma}_i(S_0) ={\rm Min} \left [{\it \Gamma}_{i-1}(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_2) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm},</math>
 
::<math>{\it \Gamma}_i(S_0) ={\rm Min} \left [{\it \Gamma}_{i-1}(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_2) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm},</math>
Line 70: Line 70:
 
::<math>{\it \Gamma}_i(S_3) ={\rm Min} \left [{\it \Gamma}_{i-1}(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_3) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm}.</math>
 
::<math>{\it \Gamma}_i(S_3) ={\rm Min} \left [{\it \Gamma}_{i-1}(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_3) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm}.</math>
  
*Von den zwei an einem Knoten&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; ankommenden Zweigen wird der schlechtere (der zu einem größeren&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; geführt hätte) eliminiert. Zu jedem Knoten führt dann nur noch ein einziger Zweig.<br>
+
*Of the two branches arriving at a node&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; the worse one (which would have led to a larger&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp;) is eliminated. Only one branch then leads to each node.<br>
  
*Sind alle Fehlergrößen bis einschließlich&nbsp; $i = 7$&nbsp; ermittelt, so kann der Viterbi&ndash;Algotithmus mit der Suche des zusammenhängenden Pfades vom Ende des Trellis &nbsp; &#8658; &nbsp; ${\it \Gamma}_7(S_0)$&nbsp; bis zum Anfang &nbsp; &#8658; &nbsp; ${\it \Gamma}_0(S_0)$&nbsp; abgeschlossen werden.<br>
+
*Once all error values up to and including&nbsp; $i = 7$&nbsp; have been determined, the viterbi algotithm can be completed by searching the connected path from the end of the trellis &nbsp; &#8658; &nbsp; ${\it \Gamma}_7(S_0)$&nbsp; to the beginning &nbsp; &#8658; &nbsp; ${\it \Gamma}_0(S_0)$&nbsp;.
 +
<br>
  
*Durch diesen Pfad liegen dann die  am wahrscheinlichsten erscheinende Codesequenz&nbsp; $\underline{z}$&nbsp; und die wahrscheinlichste Informationssequenz&nbsp; $\underline{v}$&nbsp; fest.  
+
*Through this path, the most likely code sequence&nbsp; $\underline{z}$&nbsp; and the most likely information sequence&nbsp; $\underline{v}$&nbsp; are then fixed.  
*Nicht für alle Empfangssequenzen&nbsp; $\underline{y}$&nbsp; gilt aber&nbsp; $\underline{z} = \underline{x}$&nbsp; und&nbsp; $\underline{v} = \underline{u}$. Das heißt: &nbsp; '''Bei zu vielen Übertragungsfehlern versagt auch der Viterbi&ndash;Algorithmus'''.<br>
+
*Not all receive sequences&nbsp; $\underline{y}$&nbsp; are true, however&nbsp; $\underline{z} = \underline{x}$&nbsp; and&nbsp; $\underline{v} = \underline{u}$. That is, &nbsp; '''If there are too many transmission errors, the Viterbi algorithm also fails'''.<br>
  
== Erstellen des Trellis im fehlerfreien Fall &nbsp;&ndash;&nbsp; Fehlergrößenberechnung==
+
== Creating the trellis in the error-free case &nbsp;&ndash;&nbsp; error value calculation.==
 
<br>
 
<br>
Zunächst gehen wir von der Empfangssequenz&nbsp; $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$&nbsp; aus, die hier &ndash; wegen der Codewortlänge&nbsp; $n = 2$&nbsp; &ndash; bereits in Bitpaare&nbsp; $\underline{y}_1, \hspace{0.05cm} \text{...} \hspace{0.05cm} , \ \underline{y}_7$&nbsp; unterteilt ist. Die in das Trellis eingetragenen Zahlenwerte und die verschiedenen Stricharten werden im folgenden Text erklärt.<br>
+
First, we assume the receive sequence&nbsp; $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$&nbsp; which here &ndash; is already divided into bit pairs&nbsp; $\underline{y}_1, \hspace{0.05cm} \text{...} \hspace{0.05cm} , \ \underline{y}_7$&nbsp; is subdivided. The numerical values entered in the trellis and the different types of strokes are explained in the following text.<br>
  
[[File:KC_T_3_4_S3a_neu.png|right|frame|Viterbi–Schema für den Empfangsvektor&nbsp; $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$|class=fit]]
+
[[File:KC_T_3_4_S3a_neu.png|right|frame|Viterbi scheme for the received vector&nbsp; $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$|class=fit]]
  
*Ausgehend vom Initialwert&nbsp; ${\it \Gamma}_0(S_0) = 0$&nbsp; kommt man mit&nbsp; $\underline{y}_1 = (11)$&nbsp; durch Addition der Hamming-Distanzen
+
*Starting from the initial value&nbsp; ${\it \Gamma}_0(S_0) = 0$&nbsp; we get&nbsp; $\underline{y}_1 = (11)$&nbsp; by adding the Hamming distances
:$$d_{\rm H}((00), \ \underline{y}_1) = 2\text{    bzw.   }d_{\rm H}((11), \ \underline{y}_1) = 0$$
+
:$$d_{\rm H}((00), \ \underline{y}_1) = 2\text{    or   }d_{\rm H}((11), \ \underline{y}_1) = 0$$
  
:zu den Fehlergrößen&nbsp; ${\it \Gamma}_1(S_0) = 2, \ {\it \Gamma}_1(S_1) = 0$.<br>
+
:to the error values&nbsp; ${\it \Gamma}_1(S_0) = 2, \ {\it \Gamma}_1(S_1) = 0$.<br>
  
*Im zweiten Decodierschritt gibt es Fehlergrößen für alle vier Zustände: &nbsp; Mit&nbsp; $\underline{y}_2 = (01)$&nbsp; erhält man:
+
*In the second decoding step there are error values for all four states: &nbsp; With&nbsp; $\underline{y}_2 = (01)$&nbsp; one obtains:
  
 
::<math>{\it \Gamma}_2(S_0) = {\it \Gamma}_1(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} (01) \big )  = 2+1 = 3 \hspace{0.05cm},</math>
 
::<math>{\it \Gamma}_2(S_0) = {\it \Gamma}_1(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} (01) \big )  = 2+1 = 3 \hspace{0.05cm},</math>
Line 95: Line 96:
 
::<math>{\it \Gamma}_2(S_3) = {\it \Gamma}_1(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} (01) \big )  = 0+0=0 \hspace{0.05cm}.</math>
 
::<math>{\it \Gamma}_2(S_3) = {\it \Gamma}_1(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} (01) \big )  = 0+0=0 \hspace{0.05cm}.</math>
  
*In allen weiteren Decodierschritten müssen jeweils zwei Werte verglichen werden, wobei dem Knoten&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; stets der kleinere Wert zugewiesen wird. Beispielsweise gilt für&nbsp; $i = 3$&nbsp; mit&nbsp; $\underline{y}_3 = (01)$:
+
*In all further decoding steps, two values must be compared in each case, whereby the node&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; is always assigned the smaller value. For example, for&nbsp; $i = 3$&nbsp; with&nbsp; $\underline{y}_3 = (01)$:
  
 
::<math>{\it \Gamma}_3(S_0) ={\rm min} \left [{\it \Gamma}_{2}(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} (01) \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{2}(S_2) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) \right ] ={\rm min} \big [ 3+1\hspace{0.05cm},\hspace{0.05cm} 2+1 \big ] = 3\hspace{0.05cm},</math>
 
::<math>{\it \Gamma}_3(S_0) ={\rm min} \left [{\it \Gamma}_{2}(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} (01) \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{2}(S_2) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) \right ] ={\rm min} \big [ 3+1\hspace{0.05cm},\hspace{0.05cm} 2+1 \big ] = 3\hspace{0.05cm},</math>
 
::<math>{\it \Gamma}_3(S_3) ={\rm min} \left [{\it \Gamma}_{2}(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} (01) \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{2}(S_3) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) \right ] ={\rm min} \big [ 3+0\hspace{0.05cm},\hspace{0.05cm} 0+2 \big ] = 2\hspace{0.05cm}.</math>
 
::<math>{\it \Gamma}_3(S_3) ={\rm min} \left [{\it \Gamma}_{2}(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} (01) \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{2}(S_3) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) \right ] ={\rm min} \big [ 3+0\hspace{0.05cm},\hspace{0.05cm} 0+2 \big ] = 2\hspace{0.05cm}.</math>
  
*Ab&nbsp; $i = 6$&nbsp; wird im betrachteten Beispiel die Terminierung des Faltungscodes wirksam. Hier sind nur noch zwei Vergleiche zur Bestimmung von&nbsp; ${\it \Gamma}_6(S_0) = 3$&nbsp; und&nbsp; ${\it \Gamma}_6(S_2)= 0$&nbsp; anzustellen, und für&nbsp; $i = 7$&nbsp; nur noch ein einziger ein Vergleich mit dem Endergebnis&nbsp; ${\it \Gamma}_7(S_0) = 0$.<br>
+
*From&nbsp; $i = 6$&nbsp; the termination of the convolutional code becomes effective in the considered example. Here only two comparisons are left to determine&nbsp; ${\it \Gamma}_6(S_0) = 3$&nbsp; and&nbsp; ${\it \Gamma}_6(S_2)= 0$&nbsp; and for&nbsp; $i = 7$&nbsp; only one comparison with the final result&nbsp; ${\it \Gamma}_7(S_0) = 0$.<br>
  
  
Die Beschreibung des Viterbi&ndash;Decodiervorgangs wird auf der nächsten Seite fortgesetzt.
+
The description of the Viterbi decoding process continues on the next page.
  
== Auswerten des Trellis im fehlerfreien Fall &nbsp;&ndash;&nbsp; Pfadsuche==
+
== Evaluating the trellis in the error-free case &nbsp;&ndash;&nbsp; Path search.==
 
<br>
 
<br>
Nachdem alle Fehlergrößen&nbsp; ${\it \Gamma}_i(S_{\mu})$ &nbsp;&ndash;&nbsp; im vorliegenden Beispiel für&nbsp; $1 &#8804; i &#8804; 7$&nbsp; und&nbsp; $0 &#8804; \mu &#8804; 3$ &nbsp;&ndash;&nbsp; ermittelt wurden, kann der Viterbi&ndash;Decoder mit der Pfadsuche beginnen:<br>
+
After all error values&nbsp; ${\it \Gamma}_i(S_{\mu})$ &nbsp;&ndash;&nbsp; have been determined for&nbsp; $1 &#8804; i &#8804; 7$&nbsp; and&nbsp; $0 &#8804; \mu &#8804; 3$ &nbsp;&ndash;&nbsp; in the present example, the Viterbi decoder can start the path search:<br>
  
[[File:P ID2654 KC T 3 4 S3b v1.png|right|frame|Viterbi–Pfadsuche für für den Empfangsvektor&nbsp; $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$|class=fit]]
+
[[File:P ID2654 KC T 3 4 S3b v1.png|right|frame|Viterbi path search for for the received vector&nbsp; $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$|class=fit]]
*Die Grafik zeigt das Trellis nach der Fehlergrößenberechnung. Alle Kreise sind mit Zahlenwerten belegt.  
+
*The graphic shows the trellis after the error value calculation. All circles are assigned numerical values.  
*Allerding ist der in der Grafik bereits eingezeichnete wahrscheinlichste Pfad noch nicht bekannt.
+
*However, the most probable path already drawn in the graphic is not yet known.
*Von den jeweils zwei an einem Knoten ankommenden Zweigen wird stets nur derjenige bei der abschließenden Pfadsuche herangezogen, der zur minimalen Fehlergröße&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; geführt hat.  
+
*Of the two branches arriving at a node, only the one that led to the minimum error value&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; is used for the final path search.  
*Die "schlechten" Zweige werden verworfen. Sie sind in obiger Grafik jeweils punktiert dargestellt.
+
*The "bad" branches are discarded. They are each shown dotted in the above graph.
 
<br clear=all>
 
<br clear=all>
Die Pfadsuche läuft wie folgt ab:
+
The path search runs as follows:
*Ausgehend vom Endwert&nbsp; ${\it \Gamma}_7(S_0)$&nbsp; wird in Rückwärtsrichtung ein zusammenhängender Pfad bis zum Startwert&nbsp; ${\it \Gamma}_0(S_0)$&nbsp; gesucht. Erlaubt sind nur die durchgezogenen Zweige. Punktierte Linien können nicht Teil des ausgewählten Pfades sein.<br>
+
*Starting from the end value&nbsp; ${\it \Gamma}_7(S_0)$&nbsp; a continuous path is searched in backward direction to the start value&nbsp; ${\it \Gamma}_0(S_0)$&nbsp;. Only the solid branches are allowed. Dotted lines cannot be part of the selected path.<br>
  
*Der ausgewählte Pfad durchläuft von rechts nach links die Zustände&nbsp; $S_0 &#8592; S_2 &#8592; S_1 &#8592; S_0 &#8592; S_2 &#8592; S_3 &#8592; S_1 &#8592; S_0$&nbsp; und ist in der Grafik grau hinterlegt. Es gibt keinen zweiten durchgehenden Pfad von&nbsp; ${\it \Gamma}_7(S_0)$ zu ${\it \Gamma}_0(S_0)$. Das bedeutet: &nbsp; Das Decodierergebnis ist eindeutig.<br>
+
*The selected path traverses from right to left the states&nbsp; $S_0 &#8592; S_2 &#8592; S_1 &#8592; S_0 &#8592; S_2 &#8592; S_3 &#8592; S_1 &#8592; S_0$&nbsp; and is grayed out in the graph. There is no second continuous path from&nbsp; ${\it \Gamma}_7(S_0)$ to ${\it \Gamma}_0(S_0)$. This means: &nbsp; The decoding result is unique.<br>
  
*Das Ergebnis&nbsp; $\underline{v} = (1, 1, 0, 0, 1, 0, 0)$&nbsp; des Viterbi&ndash;Decoders hinsichtlich der Informationssequenz erhält man, wenn man für den durchgehenden Pfad &nbsp;&ndash;&nbsp; nun aber in Vorwärtsrichtung von links nach rechts &nbsp;&ndash;&nbsp; die Farben der einzelnen Zweige auswertet $($rot entspricht einer&nbsp; $0$&nbsp;und blau einer&nbsp; $1)$.<br><br>
+
*The result&nbsp; $\underline{v} = (1, 1, 0, 0, 1, 0, 0)$&nbsp; of the Viterbi decoder with respect to the information sequence is obtained if for the continuous path &nbsp;&ndash;&nbsp; but now in forward direction from left to right &nbsp;&ndash;&nbsp; the colors of the individual branches are evaluated $($red corresponds to a&nbsp; $0$&nbsp;and blue to a&nbsp; $1)$.<br><br>
  
Aus dem Endwert&nbsp; ${\it \Gamma}_7(S_0) = 0$&nbsp; erkennt man, dass  in diesem ersten Beispiel keine Übertragungsfehler vorlagen:  
+
From the final value&nbsp; ${\it \Gamma}_7(S_0) = 0$&nbsp; it can be seen that there were no transmission errors in this first example:  
*Das Decodierergebnis&nbsp; $\underline{z}$&nbsp; stimmt also mit dem Empfangsvektor &nbsp;$\underline{y} = (11, 01, 01, 11, 11, 10, 11)$&nbsp; und der tatsächlichen Codesequenz&nbsp; $\underline{x}$&nbsp; überein.  
+
*The decoding result&nbsp; $\underline{z}$&nbsp; thus matches the received vector &nbsp;$\underline{y} = (11, 01, 01, 11, 11, 10, 11)$&nbsp; and the actual code sequence&nbsp; $\underline{x}$&nbsp;.  
*Bei fehlerfreier Übertragung  ist &nbsp;$\underline{v}$&nbsp; nicht nur die nach dem ML&ndash;Kriterium wahrscheinlichste Informationssequenz&nbsp; $\underline{u}$, sondern beide sind sogar identisch: &nbsp; $\underline{v} \equiv \underline{u}$.<br>
+
*With error-free transmission, &nbsp;$\underline{v}$&nbsp; is not only the most probable information sequence according to the ML criterion&nbsp; $\underline{u}$, but both are even identical: &nbsp; $\underline{v} \equiv \underline{u}$.<br>
  
  
<i>Anmerkung:</i> &nbsp; Bei der beschriebenen Decodierung wurde natürlich von der bereits in der Überschrift enthaltenen Information "Fehlerfreier Fall" kein Gebrauch gemacht.  
+
<i>Note:</i> &nbsp; In the decoding described, of course, no use was made of the "error-free case" information already contained in the heading.  
  
Nun folgen drei Beispiele zur Viterbi&ndash;Decodierung  für den fehlerbehafteten Fall. <br>
+
Now follow three examples of Viterbi decoding for the errorneous case. <br>
  
== Decodierbeispiele für den fehlerbehafteten Fall ==
+
== Decoding examples for the erroneous case ==
 
<br>
 
<br>
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 1:}$&nbsp;  Wir gehen hier vom Empfangsvektor &nbsp;$\underline{y} = \big (11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 00\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) $&nbsp; aus, der keine gültige Codesequenz&nbsp; $\underline{x}$&nbsp; darstellt. Die Berechnung der Fehlergrößen&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; und die Pfadsuche geschieht wie auf der Seite&nbsp; [[Channel_Coding/Decodierung_von_Faltungscodes#Vorbemerkungen_zu_den_nachfolgenden_Decodierbeispielen| Vorbemerkungen]]&nbsp; beschrieben und auf den beiden  letzten Seite für den fehlerfreien Fall demonstriert.<br>
+
$\text{Example 1:}$&nbsp;  We assume here the received vector &nbsp;$\underline{y} = \big (11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 00\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) $&nbsp; which does not represent a valid code sequence&nbsp; $\underline{x}$&nbsp;. The calculation of error sizes&nbsp; ${\it \Gamma}_i(S_{\mu})$&nbsp; and the path search is done as described on page&nbsp; [[Channel_Coding/Code_Description_with_State_and_Trellis_Diagram#Definition_of_the_free_distance| "Preliminaries"]]&nbsp; and demonstrated on the last two pages for the error-free case.<br>
  
[[File:P ID2655 KC T 3 4 S4a v1.png|center|frame|Decodierbeispiel mit zwei Bitfehlern|class=fit]]
+
[[File:P ID2655 KC T 3 4 S4a v1.png|center|frame|Decoding example with two bit errors|class=fit]]
  
Als&nbsp; '''Resümee'''&nbsp; dieses ersten Beispiels ist festzuhalten:
+
As&nbsp; '''summary'''&nbsp; of this first example, it should be noted:
*Auch beim obigen Trellis  lässt sich ein eindeutiger Pfad (mit dunkelgrauer Hinterlegung) zurückverfolgen, der zu den folgenden Ergebnissen führt <br>(erkennbar an den Beschriftungen bzw. den Farben dieses Pfades):
+
*Also with the above trellis, a unique path (with a dark gray background) can be traced, leading to the following results. <br>(recognizable by the labels or the colors of this path):
  
 
::<math>\underline{z} = \big (00\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 00\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11 \hspace{0.05cm} \big ) \hspace{0.05cm},</math>
 
::<math>\underline{z} = \big (00\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 00\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11 \hspace{0.05cm} \big ) \hspace{0.05cm},</math>
 
::<math> \underline{\upsilon} =\big (0\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0 \hspace{0.05cm} \big ) \hspace{0.05cm}.</math>
 
::<math> \underline{\upsilon} =\big (0\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0 \hspace{0.05cm} \big ) \hspace{0.05cm}.</math>
  
*Der Vergleich der am wahrscheinlichsten gesendeten Codesequenz &nbsp;$\underline{z}$&nbsp; mit dem Empfangsvektor &nbsp;$\underline{y}$&nbsp; zeigt, dass hier zwei Bitfehler (gleich am Beginn) vorlagen. Da aber der verwendete Faltungscode die [[Channel_Coding/Codebeschreibung_mit_Zustands%E2%80%93_und_Trellisdiagramm#Definition_der_freien_Distanz_.281.29| freie Distanz]] $d_{\rm F} = 5$ aufweist, führen zwei Fehler noch nicht zu einem falschen Decodierergebnis.<br>
+
*Comparing the most likely transmitted code sequence &nbsp;$\underline{z}$&nbsp; with the received vector &nbsp;$\underline{y}$&nbsp; shows that there were two bit errors here (right at the beginning). But since the used convolutional code has the [[Channel_Coding/Code_Description_with_State_and_Trellis_Diagram#Definition_of_the_free_distance| "free distance"]] $d_{\rm F} = 5$, two errors do not yet lead to a wrong decoding result.<br>
  
*Es gibt andere Pfade wie zum Beispiel den heller markierten Pfad $(S_0 &#8594; S_1 &#8594; S_3 &#8594; S_3 &#8594; S_3 &#8594; S_2 &#8594; S_0 &#8594; S_0)$, die zunächst als vielversprechend erscheinen. Erst im letzten Decodierschritt $(i = 7)$ kann dieser hellgraue Pfad endgültig verworfen werden.<br>
+
*There are other paths such as the lighter highlighted path $(S_0 &#8594; S_1 &#8594; S_3 &#8594; S_3 &#8594; S_2 &#8594; S_0 &#8594; S_0)$ that initially appear to be promising. Only in the last decoding step $(i = 7)$ can this light gray path finally be discarded.<br>
  
*Das Beispiel zeigt, dass eine zu frühe Entscheidung oft nicht zielführend ist. Man erkennt auch die Zweckmäßigkeit der Terminierung: &nbsp; Bei endgültiger Entscheidung bei $i = 5$ (Ende der Informationssequenz) wären die Sequenzen &nbsp;$(0, 1, 0, 1, 1)$&nbsp; und &nbsp;$(1, 1, 1, 1, 0)$&nbsp; noch als gleichwahrscheinlich angesehen worden.<br><br>
+
*The example shows that a too early decision is often not purposeful. One can also see the expediency of termination: &nbsp; With final decision at $i = 5$ (end of information sequence), the sequences &nbsp;$(0, 1, 0, 1, 1)$&nbsp; and &nbsp;$(1, 1, 1, 1, 0)$&nbsp; would still have been considered equally likely.<br><br>
  
<i>Anmerkungen:</i> &nbsp; Bei der Berechnung von&nbsp; ${\it \Gamma}_5(S_0) = 3$&nbsp; und&nbsp; ${\it \Gamma}_5(S_1) = 3$&nbsp; führen hier jeweils die beiden Vergleichszweige zur exakt gleichen minimalen Fehlergröße. In der Grafik sind diese beiden Sonderfälle durch Strichpunktierung markiert.<br>
+
<i>Notes:</i> &nbsp; In the calculation of&nbsp; ${\it \Gamma}_5(S_0) = 3$&nbsp; and&nbsp; ${\it \Gamma}_5(S_1) = 3$&nbsp; here in each case the two comparison branches lead to exactly the same minimum error value. In the graph these two special cases are marked by dash dots.<br>
  
*In diesem Beispiel hat dieser Sonderfall keine Auswirkung auf die Pfadsuche.  
+
*In this example, this special case has no effect on the path search.  
*Der Algorithmus erwartet trotzdem stets eine Entscheidung zwischen zwei konkurrierenden Zweigen.  
+
*Nevertheless, the algorithm always expects a decision between two competing branches.  
*In der Praxis hilft man sich dadurch, dass man bei Gleichheit  einen der beiden Pfade zufällig auswählt.}}<br>
+
*In practice, one helps oneself by randomly selecting one of the two paths if they are equal.}}<br>
  
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 2:}$&nbsp;   
+
$\text{Example 2:}$&nbsp;   
Im diesem Beispiel gehen wir von folgenden Voraussetzungen bezüglich Quelle und Coder aus:
+
In this example, we assume the following assumptions regarding source and encoder:
  
 
::<math>\underline{u} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0  \big )\hspace{0.3cm}\Rightarrow \hspace{0.3cm}
 
::<math>\underline{u} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0  \big )\hspace{0.3cm}\Rightarrow \hspace{0.3cm}
 
\underline{x} = \big (11\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) \hspace{0.05cm}.</math>
 
\underline{x} = \big (11\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) \hspace{0.05cm}.</math>
  
[[File:P ID2700 KC T 3 4 S4b v1.png|center|frame|Decodierbeispiel mit drei Bitfehlern|class=fit]]<br>
+
[[File:P ID2700 KC T 3 4 S4b v1.png|center|frame|Decoding example with three bit errors|class=fit]]<br>
  
Aus der Grafik erkennt man, dass sich hier der Decoder trotz dreier Bitfehler für den richtigen Pfad (dunkle Hinterlegung) entscheidet.  
+
From the graphic you can see that here the decoder decides for the correct path (dark background) despite three bit errors.  
*Es gibt also nicht immer eine Fehlentscheidung, wenn mehr als&nbsp; $d_{\rm F}/2$&nbsp; Bitfehler aufgetreten sind.  
+
*So there is not always a wrong decision, if more than&nbsp; $d_{\rm F}/2$&nbsp; bit errors occurred.  
*Aber bei statistischer Verteilung der drei Übertragungsfehler würde häufiger falsch entschieden als richtig.}}<br>
+
*But with statistical distribution of the three transmission errors, wrong decision would be more frequent than right.}}<br>
  
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
$\text{Beispiel 3:}$&nbsp;  Auch hier gelte&nbsp; <math>\underline{u} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0  \big )\hspace{0.3cm}\Rightarrow \hspace{0.3cm}
+
$\text{Example 3:}$&nbsp;  Here also applies&nbsp; <math>\underline{u} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0  \big )\hspace{0.3cm}\Rightarrow \hspace{0.3cm}
\underline{x} = \big (11\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) \hspace{0.05cm}.</math> Im Unterschied zum&nbsp; $\text{Beispiel 2}$&nbsp; ist aber noch ein vierter Bitfehler in Form von&nbsp; $\underline{y}_7 = (01)$ hinzugefügt.
+
\underline{x} = \big (11\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) \hspace{0.05cm}.</math> Unlike&nbsp; $\text{example 2}$&nbsp; however, a fourth bit error is added in the form of&nbsp; $\underline{y}_7 = (01)$.
  
[[File:P ID2704 KC T 3 4 S4c v1.png|center|frame|Decodierbeispiel mit vier Bitfehlern|class=fit]]
+
[[File:P ID2704 KC T 3 4 S4c v1.png|center|frame|Decoding example with four bit errors|class=fit]]
  
*Nun führen beide Zweige im Schritt&nbsp; $i = 7$&nbsp; zur minimalen Fehlergröße&nbsp; ${\it \Gamma}_7(S_0) = 4$, erkennbar an den strichpunktierten Übergängen. Entscheidet man sich im dann erforderlichen Losverfahren für den dunkel hinterlegten Pfad, so wird auch bei vier Bitfehlern  noch die richtige Entscheidung getroffen:  &nbsp; $\underline{v} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0  \big )$. <br>
+
*Now both branches in step&nbsp; $i = 7$&nbsp; lead to the minimum error value&nbsp; ${\it \Gamma}_7(S_0) = 4$, recognizable by the dash-dotted transitions. If one decides in the then required lottery procedure for the path with dark background, the correct decision is still made even with four bit errors:  &nbsp; $\underline{v} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0  \big )$. <br>
  
*Andernfalls kommt es zu einer Fehlentscheidung. Je nachdem, wie das Auswürfeln im Schritt&nbsp; $i =6$&nbsp; zwischen den beiden strichpunktierten Konkurrenten ausgeht, entscheidet man sich entweder für den violetten oder den hellgrauen PfadMit dem richtigen Pfad haben beide wenig gemein.}}
+
*Otherwise, a wrong decision is made. Depending on the outcome of the dice roll in step&nbsp; $i =6$&nbsp; between the two dash-dotted competitors, you choose either the purple or the light gray pathBoth have little in common with the correct path.}}
  
  
  
== Zusammenhang zwischen Hamming–Distanz und Korrelation ==
+
== Relationship between Hamming distance and correlation ==
 
<br>
 
<br>
Insbesondere beim&nbsp; [[Channel_Coding/Kanalmodelle_und_Entscheiderstrukturen#Binary_Symmetric_Channel_.E2.80.93_BSC| BSC&ndash;Modell]]&nbsp; &ndash; aber auch bei jedem anderen Binärkanal &nbsp; &#8658; &nbsp; Eingang&nbsp; $x_i &#8712; \{0,1\}$,&nbsp; Ausgang $y_i &#8712; \{0,1\}$&nbsp; wie zum Beispiel dem&nbsp; [[Digitalsignalübertragung/Bündelfehlerkanäle#Kanalmodell_nach_Gilbert.E2.80.93Elliott| Gilbert&ndash;Elliott&ndash;Modell]]&nbsp; &ndash; liefert die Hamming&ndash;Distanz&nbsp; $d_{\rm H}(\underline{x}, \ \underline{y})$&nbsp; genau die gleiche Information über die Ähnlichkeit der Eingangsfolge&nbsp; $\underline{x}$&nbsp; und der Ausgangsfolge&nbsp; $\underline{y}$&nbsp; wie das&nbsp; [[Digitalsignalübertragung/Signale,_Basisfunktionen_und_Vektorräume#Zur_Nomenklatur_im_vierten_Kapitel| innere Produkt]]. Nimmt man an, dass die beiden Folgen in bipolarer Darstellung vorliegen (gekennzeichnet durch Tilden) und dass die Folgenlänge jeweils&nbsp; $L$&nbsp; ist, so gilt für das innere Produkt:
+
Especially for the&nbsp; [[Channel_Coding/Channel_Models_and_Decision_Structures#Binary_Symmetric_Channel_.E2.80. 93_BSC|"BSC Model"]]&nbsp; &ndash; but also for any other binary channel&nbsp; &#8658; &nbsp; input&nbsp; $x_i &#8712; \{0,1\}$,&nbsp; output $y_i &#8712; \{0,1\}$&nbsp; such as the&nbsp; [[Digital_Signal_Transmission/Burst_Error_Channels#Channel_model_according_to_Gilbert-Elliott|"Gilbert&ndash;Elliott model"]]&nbsp; &ndash; provides the Hamming distance&nbsp; $d_{\rm H}(\underline{x}, \ \underline{y})$&nbsp; exactly the same information about the similarity of the input sequence&nbsp; $\underline{x}$&nbsp; and the output sequence&nbsp; $\underline{y}$&nbsp; as the&nbsp; [[Digital_Signal_Transmission/Signals,_Basis_Functions_and_Vector_Spaces#Nomenclature_in_the_fourth_chapter| "inner product"]]. Assuming that the two sequences are in bipolar representation (denoted by tildes) and that the sequence length is&nbsp; $L$&nbsp; in each case, the inner product is:
  
 
::<math><\hspace{-0.1cm}\underline{\tilde{x}}, \hspace{0.05cm}\underline{\tilde{y}} \hspace{-0.1cm}> \hspace{0.15cm}
 
::<math><\hspace{-0.1cm}\underline{\tilde{x}}, \hspace{0.05cm}\underline{\tilde{y}} \hspace{-0.1cm}> \hspace{0.15cm}
 
= \sum_{i = 1}^{L} \tilde{x}_i \cdot \tilde{y}_i \hspace{0.3cm}{\rm mit } \hspace{0.2cm} \tilde{x}_i = 1 - 2 \cdot x_i  \hspace{0.05cm},\hspace{0.2cm} \tilde{y}_i = 1 - 2 \cdot y_i \hspace{0.05cm},\hspace{0.2cm} \tilde{x}_i, \hspace{0.05cm}\tilde{y}_i \in \hspace{0.1cm}\{ -1, +1\} \hspace{0.05cm}.</math>
 
= \sum_{i = 1}^{L} \tilde{x}_i \cdot \tilde{y}_i \hspace{0.3cm}{\rm mit } \hspace{0.2cm} \tilde{x}_i = 1 - 2 \cdot x_i  \hspace{0.05cm},\hspace{0.2cm} \tilde{y}_i = 1 - 2 \cdot y_i \hspace{0.05cm},\hspace{0.2cm} \tilde{x}_i, \hspace{0.05cm}\tilde{y}_i \in \hspace{0.1cm}\{ -1, +1\} \hspace{0.05cm}.</math>
  
Wir bezeichnen dieses innere Produkt manchmal auch als den "Korrelationswert". Die Anführungszeichen sollen darauf hinweisen, dass der Wertebereich eines&nbsp; [[Theory_of_Stochastic_Signals/Zweidimensionale_Zufallsgr%C3%B6%C3%9Fen#Korrelationskoeffizient| Korrelationskoeffizienten]]&nbsp; eigentlich $&plusmn;1$ ist.<br>
+
We sometimes refer to this inner product as the "correlation value". The quotation marks are to indicate that the range of values of a&nbsp; [[Theory_of_Stochastic_Signals/Two-Dimensional_Random_Variables#Correlation_coefficient| "correlation coefficient"]]&nbsp; is actually $&plusmn;1$.<br>
  
[[File:KC_T_3_4_S5_neu.png|right|frame|Zusammenhang zwischen Haming–Distanz und „Korrelationswert” |class=fit]]
+
[[File:KC_T_3_4_S5_neu.png|right|frame|Relationship between Haming distance and "correlation value" |class=fit]]
 
{{GraueBox|TEXT=   
 
{{GraueBox|TEXT=   
 
$\text{Beispiel 4:}$&nbsp;  Wir betrachten hier zwei Binärfolgen der Länge&nbsp; $L = 10$.<br>
 
$\text{Beispiel 4:}$&nbsp;  Wir betrachten hier zwei Binärfolgen der Länge&nbsp; $L = 10$.<br>
*Links dargestellt sind die unipolaren Folgen&nbsp; $\underline{x}$&nbsp; und&nbsp; $\underline{y}$&nbsp; sowie das Produkt&nbsp; $\underline{x} \cdot \underline{y}$.  
+
*Shown on the left are the unipolar sequences&nbsp; $\underline{x}$&nbsp; and&nbsp; $\underline{y}$&nbsp; and the product&nbsp; $\underline{x} \cdot \underline{y}$.  
*Man erkennt die Hamming&ndash;Distanz&nbsp; $d_{\rm H}(\underline{x}, \ \underline{y}) = 6$ &nbsp; &#8658; &nbsp; sechs Bitfehler an den Pfeilpositionen.  
+
*You can see the Hamming distance&nbsp; $d_{\rm H}(\underline{x}, \ \underline{y}) = 6$ &nbsp; &#8658; &nbsp; six bit errors at the arrow positions.  
*Das innere Produkt&nbsp; $ < \underline{x} \cdot \underline{y} > \hspace{0.15cm} = \hspace{0.15cm}0$&nbsp; hat hier keine Aussagekraft. Zum Beispiel ist&nbsp; $< \underline{0} \cdot \underline{y} >&nbsp;$ unabhängig von&nbsp; $\underline{y}$&nbsp; stets Null.
+
*The inner product&nbsp; $ < \underline{x} \cdot \underline{y} > \hspace{0.15cm} = \hspace{0.15cm}0$&nbsp; has no significance here. For example, $< \underline{0} \cdot \underline{y} >&nbsp;$ is always zero regardless of&nbsp; $\underline{y}$&nbsp;.
  
  
Die Hamming&ndash;Distanz&nbsp; $d_{\rm H} = 6$&nbsp; erkennt man auch aus der bipolaren (antipodalen) Darstellung der rechten Grafik.  
+
The Hamming distance&nbsp; $d_{\rm H} = 6$&nbsp; can also be seen from the bipolar (antipodal) plot of the right graph.  
*Die "Korrelationswert" hat nun den richtigen Wert:  
+
*The "correlation value" now has the correct value:  
 
:$$4 \cdot (+1) + 6 \cdot (-1) = \, -2.$$  
 
:$$4 \cdot (+1) + 6 \cdot (-1) = \, -2.$$  
*Es gilt der deterministische Zusammenhang zwischen den beiden Größen mit der Folgenlänge&nbsp; $L$:
+
*The deterministic relation between the two quantities with the sequence length&nbsp; $L$ holds:
  
 
:$$ < \underline{ \tilde{x} } \cdot \underline{\tilde{y} } > \hspace{0.15cm} = \hspace{0.15cm} L - 2 \cdot d_{\rm H} (\underline{\tilde{x} }, \hspace{0.05cm}\underline{\tilde{y} })\hspace{0.05cm}. $$}}
 
:$$ < \underline{ \tilde{x} } \cdot \underline{\tilde{y} } > \hspace{0.15cm} = \hspace{0.15cm} L - 2 \cdot d_{\rm H} (\underline{\tilde{x} }, \hspace{0.05cm}\underline{\tilde{y} })\hspace{0.05cm}. $$}}
Line 207: Line 208:
  
 
{{BlaueBox|TEXT=   
 
{{BlaueBox|TEXT=   
$\text{Fazit:}$&nbsp;  Interpretieren wir nun diese Gleichung für einige Sonderfälle:
+
$\text{Conclusion:}$&nbsp;  Let us now interpret this equation for some special cases:
*Identische Folgen: &nbsp; Die Hamming&ndash;Distanz ist gleich&nbsp; $0$&nbsp; und der "Korrelationswert" gleich&nbsp; $L$.<br>
+
*Identical sequences: &nbsp; The Hamming distance is equal&nbsp; $0$&nbsp; and the "correlation value" is equal&nbsp; $L$.<br>
  
*Invertierte: Folgen: &nbsp; Die Hamming&ndash;Distanz ist gleich&nbsp; $L$&nbsp; und der "Korrelationswert" gleich&nbsp; $-L$.<br>
+
*Inverted: Consequences: &nbsp; The Hamming distance is equal to&nbsp; $L$&nbsp; and the "correlation value" is equal to&nbsp; $-L$.<br>
  
*Unkorrelierte Folgen: &nbsp; Die Hamming&ndash;Distanz ist gleich&nbsp; $L/2$, der "Korrelationswert" gleich&nbsp; $0$.}}
+
*Uncorrelated sequences: &nbsp; The Hamming distance is equal to&nbsp; $L/2$, the "correlation value" is equal to&nbsp; $0$.}}
  
 
== Viterbi algorithm based on correlation and metrics ==
 
== Viterbi algorithm based on correlation and metrics ==
 
<br>
 
<br>
Mit den Erkenntnissen der letzten Seite lässt sich der Viterbi&ndash;Algorithmus auch wie folgt charakterisieren.  
+
Using the insights of the last page, the Viterbi algorithm can also be characterized as follows.
  
 
{{BlaueBox|TEXT=   
 
{{BlaueBox|TEXT=   
$\text{Alternative Beschreibung:}$&nbsp;   
+
$\text{Alternative description:}$&nbsp;   
Der Viterbi&ndash;Algorithmus sucht von allen möglichen Codesequenzen&nbsp; $\underline{x}' &#8712; \mathcal{C}$&nbsp; die Sequenz&nbsp; $\underline{z}$&nbsp; mit dem maximalen " Korrelationswert" zur Empfangssequenz&nbsp; $\underline{y}$:
+
The Viterbi algorithm searches from all possible code sequences&nbsp; $\underline{x}' &#8712; \mathcal{C}$&nbsp; the sequence&nbsp; $\underline{z}$&nbsp; with the maximum " correlation value" to the receiving sequence&nbsp; $\underline{y}$:
  
 
::<math>\underline{z} = {\rm arg} \max_{\underline{x}' \in \hspace{0.05cm} \mathcal{C} } \hspace{0.1cm} \left\langle \tilde{\underline{x} }'\hspace{0.05cm} ,\hspace{0.05cm}  \tilde{\underline{y} } \right\rangle
 
::<math>\underline{z} = {\rm arg} \max_{\underline{x}' \in \hspace{0.05cm} \mathcal{C} } \hspace{0.1cm} \left\langle \tilde{\underline{x} }'\hspace{0.05cm} ,\hspace{0.05cm}  \tilde{\underline{y} } \right\rangle
Line 227: Line 228:
 
\hspace{0.05cm}.</math>
 
\hspace{0.05cm}.</math>
  
$&#9001;\ \text{ ...} \  &#9002;$&nbsp; bezeichnet einen "Korrelationswert" entsprechend den Aussagen auf der letzten Seite. Die Tilden weisen wieder auf die bipolare (antipodale) Darstellung hin.}}<br>
+
$&#9001;\ \text{ ...} \  &#9002;$&nbsp; denotes a "correlation value" according to the statements on the last page. The tildes again indicate the bipolar (antipodal) representation.}}<br>
  
 
Die Grafik zeigt die diesbezügliche Trellisauswertung. Zugrunde liegt wie für die&nbsp; [[Channel_Coding/Decodierung_von_Faltungscodes#Decodierbeispiele_f.C3.BCr_den_fehlerbehafteten_Fall| Trellisauswertung gemäß Beispiel 1]]&nbsp; &ndash; basierend auf der minimalen Hamming&ndash;Distanz und den Fehlergrößen ${\it \Gamma}_i(S_{\mu})$ &ndash; wieder die Eingangsfolge&nbsp;
 
Die Grafik zeigt die diesbezügliche Trellisauswertung. Zugrunde liegt wie für die&nbsp; [[Channel_Coding/Decodierung_von_Faltungscodes#Decodierbeispiele_f.C3.BCr_den_fehlerbehafteten_Fall| Trellisauswertung gemäß Beispiel 1]]&nbsp; &ndash; basierend auf der minimalen Hamming&ndash;Distanz und den Fehlergrößen ${\it \Gamma}_i(S_{\mu})$ &ndash; wieder die Eingangsfolge&nbsp;

Revision as of 21:32, 9 October 2022

Block diagram and requirements


A significant advantage of convolutional coding is that there is a very efficient decoding method for this in the form of the Viterbi algorithm. This algorithm, developed by  "Andrew James Viterbi"  has already been described in the chapter  "Viterbi receiver"  of the book "Digital Signal Transmission" with regard to its use for equalization.

System model for the description of the decoding of convolutional codes

For its use as a convolutional decoder we assume the above block diagram and the following prerequisites:

  • The information sequence  $\underline{u} = (u_1, \ u_2, \ \text{... } \ )$  is here in contrast to the description of linear block codes   ⇒   "first main chapter"  or of Reed– Solomon–Codes   ⇒   "second main chapter"  generally infinitely long  ("semi–infinite" ). For the information symbols always applies  $u_i ∈ \{0, 1\}$.
  • The code sequence  $\underline{x} = (x_1, \ x_2, \ \text{... })$  with  $x_i ∈ \{0, 1\}$  depends not only on  $\underline{u}$  but also on the code rate  $R = 1/n$, the memory  $m$  and the transfer function matrix  $\mathbf{G}(D)$  . For finite number  $L$  of information bits, the convolutional code should be terminated by appending  $m$  zeros:
\[\underline{u}= (u_1,\hspace{0.05cm} u_2,\hspace{0.05cm} \text{...} \hspace{0.1cm}, u_L, \hspace{0.05cm} 0 \hspace{0.05cm},\hspace{0.05cm} \text{...} \hspace{0.1cm}, 0 ) \hspace{0.3cm}\Rightarrow \hspace{0.3cm} \underline{x}= (x_1,\hspace{0.05cm} x_2,\hspace{0.05cm} \text{...} \hspace{0.1cm}, x_{2L}, \hspace{0.05cm} x_{2L+1} ,\hspace{0.05cm} \text{...} \hspace{0.1cm}, \hspace{0.05cm} x_{2L+2m} ) \hspace{0.05cm}.\]
  • The Viterbi algorithm provides an estimate  $\underline{z}$  for the code sequence  $\underline{x}$  and another estimate  $\underline{v}$  for the information sequence  $\underline{u}$. Thereby holds:
\[{\rm Pr}(\underline{z} \ne \underline{x})\stackrel{!}{=}{\rm Minimum} \hspace{0.25cm}\Rightarrow \hspace{0.25cm} {\rm Pr}(\underline{\upsilon} \ne \underline{u})\stackrel{!}{=}{\rm Minimum} \hspace{0.05cm}.\]

$\text{Conclusion:}$  Given a digital channel model (for example, the BSC model), the Viterbi algorithm searches from all possible code sequences  $\underline{x}\hspace{0.05cm}'$  the sequence  $\underline{z}$  with the minimum Hamming distance  $d_{\rm H}(\underline{x}\hspace{0.05cm}', \underline{y})$  to the receiving sequence  $\underline{y}$:

\[\underline{z} = {\rm arg} \min_{\underline{x}\hspace{0.05cm}' \in \hspace{0.05cm} \mathcal{C} } \hspace{0.1cm} d_{\rm H}( \underline{x}\hspace{0.05cm}'\hspace{0.02cm},\hspace{0.02cm} \underline{y} ) = {\rm arg} \max_{\underline{x}' \in \hspace{0.05cm} \mathcal{C} } \hspace{0.1cm} {\rm Pr}( \underline{y} \hspace{0.05cm} \vert \hspace{0.05cm} \underline{x}')\hspace{0.05cm}.\]

This also means:   The Viterbi algorithm satisfies the  "maximum likelihood criterion".


Preliminary remarks on the following decoding examples


Trellis for decoding the received sequence  $\underline{y}$

The following  prerequisites apply to all examples in this chapter:

  • Standard convolutional encoder:   Rate $R = 1/2$,  Memory  $m = 2$;
  • transfer function matrix:   $\mathbf{G}(D) = (1 + D + D^2, 1 + D^2)$;
  • Length of information sequence:   $L = 5$;
  • Consideration of termination:   $L\hspace{0.05cm}' = 7$;
  • Length of sequences  $\underline{x}$  and  $\underline{y}$ :   $14$ bits each;
  • Distribution according to  $\underline{y} = (\underline{y}_1, \ \underline{y}_2, \ \text{...} \ , \ \underline{y}_7)$
    ⇒   bit pairs  $\underline{y}_i ∈ \{00, 01, 10, 11\}$;
  • Viterbi decoding using trellis diagram:
red arrow   ⇒   hypothesis  $u_i = 0$,
blue arrow   ⇒   hypothesis  $u_i = 1$;
  • hypothetical code sequence  $\underline{x}_i\hspace{0.01cm}' ∈ \{00, 01, 10, 11\}$;
  • all hypothetical quantities with apostrophe.


We always assume that the Viterbi decoding is done at the  Hamming distance  $d_{\rm H}(\underline{x}_i\hspace{0. 01cm}', \ \underline{y}_i)$  between the received word  $\underline{y}_i$  and the four possible codewords  $x_i\hspace{0.01cm}' ∈ \{00, 01, 10, 11\}$  is based. We then proceed as follows:

  • In the still empty circles the error value  ${\it \Gamma}_i(S_{\mu})$  of the states  $S_{\mu} (0 ≤ \mu ≤ 3)$  at the time points  $i$  are entered. The initial value is always  ${\it \Gamma}_0(S_0) = 0$.
  • The error values for  $i = 1$  and  $i = 2$  are given by
\[{\it \Gamma}_1(S_0) =d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_1 \big ) \hspace{0.05cm}, \hspace{2.38cm}{\it \Gamma}_1(S_1) = d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_1 \big ) \hspace{0.05cm},\]
\[{\it \Gamma}_2(S_0) ={\it \Gamma}_1(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )\hspace{0.05cm}, \hspace{0.6cm}{\it \Gamma}_2(S_1) = {\it \Gamma}_1(S_0)+ d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big ) \hspace{0.05cm},\hspace{0.6cm}{\it \Gamma}_2(S_2) ={\it \Gamma}_1(S_1) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big )\hspace{0.05cm}, \hspace{0.6cm}{\it \Gamma}_2(S_3) = {\it \Gamma}_1(S_1)+ d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_2 \big ) \hspace{0.05cm}.\]
  • From  $i = 3$  the trellis has reached its basic form, and to compute all  ${\it \Gamma}_i(S_{\mu})$  the minimum between two sums must be determined in each case:
\[{\it \Gamma}_i(S_0) ={\rm Min} \left [{\it \Gamma}_{i-1}(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_2) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm},\]
\[{\it \Gamma}_i(S_1)={\rm Min} \left [{\it \Gamma}_{i-1}(S_0) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_2) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm},\]
\[{\it \Gamma}_i(S_2) ={\rm Min} \left [{\it \Gamma}_{i-1}(S_1) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_3) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm},\]
\[{\it \Gamma}_i(S_3) ={\rm Min} \left [{\it \Gamma}_{i-1}(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{i-1}(S_3) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} \underline{y}_i \big ) \right ] \hspace{0.05cm}.\]
  • Of the two branches arriving at a node  ${\it \Gamma}_i(S_{\mu})$  the worse one (which would have led to a larger  ${\it \Gamma}_i(S_{\mu})$ ) is eliminated. Only one branch then leads to each node.
  • Once all error values up to and including  $i = 7$  have been determined, the viterbi algotithm can be completed by searching the connected path from the end of the trellis   ⇒   ${\it \Gamma}_7(S_0)$  to the beginning   ⇒   ${\it \Gamma}_0(S_0)$ .


  • Through this path, the most likely code sequence  $\underline{z}$  and the most likely information sequence  $\underline{v}$  are then fixed.
  • Not all receive sequences  $\underline{y}$  are true, however  $\underline{z} = \underline{x}$  and  $\underline{v} = \underline{u}$. That is,   If there are too many transmission errors, the Viterbi algorithm also fails.

Creating the trellis in the error-free case  –  error value calculation.


First, we assume the receive sequence  $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$  which here – is already divided into bit pairs  $\underline{y}_1, \hspace{0.05cm} \text{...} \hspace{0.05cm} , \ \underline{y}_7$  is subdivided. The numerical values entered in the trellis and the different types of strokes are explained in the following text.

Viterbi scheme for the received vector  $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$
  • Starting from the initial value  ${\it \Gamma}_0(S_0) = 0$  we get  $\underline{y}_1 = (11)$  by adding the Hamming distances
$$d_{\rm H}((00), \ \underline{y}_1) = 2\text{ or }d_{\rm H}((11), \ \underline{y}_1) = 0$$
to the error values  ${\it \Gamma}_1(S_0) = 2, \ {\it \Gamma}_1(S_1) = 0$.
  • In the second decoding step there are error values for all four states:   With  $\underline{y}_2 = (01)$  one obtains:
\[{\it \Gamma}_2(S_0) = {\it \Gamma}_1(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) = 2+1 = 3 \hspace{0.05cm},\]
\[{\it \Gamma}_2(S_1) ={\it \Gamma}_1(S_0) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) = 2+1 = 3 \hspace{0.05cm},\]
\[{\it \Gamma}_2(S_2) ={\it \Gamma}_1(S_1) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) = 0+2=2 \hspace{0.05cm},\]
\[{\it \Gamma}_2(S_3) = {\it \Gamma}_1(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) = 0+0=0 \hspace{0.05cm}.\]
  • In all further decoding steps, two values must be compared in each case, whereby the node  ${\it \Gamma}_i(S_{\mu})$  is always assigned the smaller value. For example, for  $i = 3$  with  $\underline{y}_3 = (01)$:
\[{\it \Gamma}_3(S_0) ={\rm min} \left [{\it \Gamma}_{2}(S_0) + d_{\rm H} \big ((00)\hspace{0.05cm},\hspace{0.05cm} (01) \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{2}(S_2) + d_{\rm H} \big ((11)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) \right ] ={\rm min} \big [ 3+1\hspace{0.05cm},\hspace{0.05cm} 2+1 \big ] = 3\hspace{0.05cm},\]
\[{\it \Gamma}_3(S_3) ={\rm min} \left [{\it \Gamma}_{2}(S_1) + d_{\rm H} \big ((01)\hspace{0.05cm},\hspace{0.05cm} (01) \big )\hspace{0.05cm}, \hspace{0.2cm}{\it \Gamma}_{2}(S_3) + d_{\rm H} \big ((10)\hspace{0.05cm},\hspace{0.05cm} (01) \big ) \right ] ={\rm min} \big [ 3+0\hspace{0.05cm},\hspace{0.05cm} 0+2 \big ] = 2\hspace{0.05cm}.\]
  • From  $i = 6$  the termination of the convolutional code becomes effective in the considered example. Here only two comparisons are left to determine  ${\it \Gamma}_6(S_0) = 3$  and  ${\it \Gamma}_6(S_2)= 0$  and for  $i = 7$  only one comparison with the final result  ${\it \Gamma}_7(S_0) = 0$.


The description of the Viterbi decoding process continues on the next page.

Evaluating the trellis in the error-free case  –  Path search.


After all error values  ${\it \Gamma}_i(S_{\mu})$  –  have been determined for  $1 ≤ i ≤ 7$  and  $0 ≤ \mu ≤ 3$  –  in the present example, the Viterbi decoder can start the path search:

Viterbi path search for for the received vector  $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$
  • The graphic shows the trellis after the error value calculation. All circles are assigned numerical values.
  • However, the most probable path already drawn in the graphic is not yet known.
  • Of the two branches arriving at a node, only the one that led to the minimum error value  ${\it \Gamma}_i(S_{\mu})$  is used for the final path search.
  • The "bad" branches are discarded. They are each shown dotted in the above graph.


The path search runs as follows:

  • Starting from the end value  ${\it \Gamma}_7(S_0)$  a continuous path is searched in backward direction to the start value  ${\it \Gamma}_0(S_0)$ . Only the solid branches are allowed. Dotted lines cannot be part of the selected path.
  • The selected path traverses from right to left the states  $S_0 ← S_2 ← S_1 ← S_0 ← S_2 ← S_3 ← S_1 ← S_0$  and is grayed out in the graph. There is no second continuous path from  ${\it \Gamma}_7(S_0)$ to ${\it \Gamma}_0(S_0)$. This means:   The decoding result is unique.
  • The result  $\underline{v} = (1, 1, 0, 0, 1, 0, 0)$  of the Viterbi decoder with respect to the information sequence is obtained if for the continuous path  –  but now in forward direction from left to right  –  the colors of the individual branches are evaluated $($red corresponds to a  $0$ and blue to a  $1)$.

From the final value  ${\it \Gamma}_7(S_0) = 0$  it can be seen that there were no transmission errors in this first example:

  • The decoding result  $\underline{z}$  thus matches the received vector  $\underline{y} = (11, 01, 01, 11, 11, 10, 11)$  and the actual code sequence  $\underline{x}$ .
  • With error-free transmission,  $\underline{v}$  is not only the most probable information sequence according to the ML criterion  $\underline{u}$, but both are even identical:   $\underline{v} \equiv \underline{u}$.


Note:   In the decoding described, of course, no use was made of the "error-free case" information already contained in the heading.

Now follow three examples of Viterbi decoding for the errorneous case.

Decoding examples for the erroneous case


$\text{Example 1:}$  We assume here the received vector  $\underline{y} = \big (11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 00\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) $  which does not represent a valid code sequence  $\underline{x}$ . The calculation of error sizes  ${\it \Gamma}_i(S_{\mu})$  and the path search is done as described on page  "Preliminaries"  and demonstrated on the last two pages for the error-free case.

Decoding example with two bit errors

As  summary  of this first example, it should be noted:

  • Also with the above trellis, a unique path (with a dark gray background) can be traced, leading to the following results.
    (recognizable by the labels or the colors of this path):
\[\underline{z} = \big (00\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 00\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11 \hspace{0.05cm} \big ) \hspace{0.05cm},\]
\[ \underline{\upsilon} =\big (0\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0 \hspace{0.05cm} \big ) \hspace{0.05cm}.\]
  • Comparing the most likely transmitted code sequence  $\underline{z}$  with the received vector  $\underline{y}$  shows that there were two bit errors here (right at the beginning). But since the used convolutional code has the "free distance" $d_{\rm F} = 5$, two errors do not yet lead to a wrong decoding result.
  • There are other paths such as the lighter highlighted path $(S_0 → S_1 → S_3 → S_3 → S_2 → S_0 → S_0)$ that initially appear to be promising. Only in the last decoding step $(i = 7)$ can this light gray path finally be discarded.
  • The example shows that a too early decision is often not purposeful. One can also see the expediency of termination:   With final decision at $i = 5$ (end of information sequence), the sequences  $(0, 1, 0, 1, 1)$  and  $(1, 1, 1, 1, 0)$  would still have been considered equally likely.

Notes:   In the calculation of  ${\it \Gamma}_5(S_0) = 3$  and  ${\it \Gamma}_5(S_1) = 3$  here in each case the two comparison branches lead to exactly the same minimum error value. In the graph these two special cases are marked by dash dots.

  • In this example, this special case has no effect on the path search.
  • Nevertheless, the algorithm always expects a decision between two competing branches.
  • In practice, one helps oneself by randomly selecting one of the two paths if they are equal.


$\text{Example 2:}$  In this example, we assume the following assumptions regarding source and encoder:

\[\underline{u} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0 \big )\hspace{0.3cm}\Rightarrow \hspace{0.3cm} \underline{x} = \big (11\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) \hspace{0.05cm}.\]
Decoding example with three bit errors

From the graphic you can see that here the decoder decides for the correct path (dark background) despite three bit errors.

  • So there is not always a wrong decision, if more than  $d_{\rm F}/2$  bit errors occurred.
  • But with statistical distribution of the three transmission errors, wrong decision would be more frequent than right.


$\text{Example 3:}$  Here also applies  \(\underline{u} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0 \big )\hspace{0.3cm}\Rightarrow \hspace{0.3cm} \underline{x} = \big (11\hspace{0.05cm}, 01\hspace{0.05cm}, 01\hspace{0.05cm}, 11\hspace{0.05cm}, 11\hspace{0.05cm}, 10\hspace{0.05cm}, 11 \hspace{0.05cm} \hspace{0.05cm} \big ) \hspace{0.05cm}.\) Unlike  $\text{example 2}$  however, a fourth bit error is added in the form of  $\underline{y}_7 = (01)$.

Decoding example with four bit errors
  • Now both branches in step  $i = 7$  lead to the minimum error value  ${\it \Gamma}_7(S_0) = 4$, recognizable by the dash-dotted transitions. If one decides in the then required lottery procedure for the path with dark background, the correct decision is still made even with four bit errors:   $\underline{v} = \big (1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0\hspace{0.05cm}, 1 \hspace{0.05cm}, 0\hspace{0.05cm}, 0 \big )$.
  • Otherwise, a wrong decision is made. Depending on the outcome of the dice roll in step  $i =6$  between the two dash-dotted competitors, you choose either the purple or the light gray path. Both have little in common with the correct path.


Relationship between Hamming distance and correlation


Especially for the  "BSC Model"  – but also for any other binary channel  ⇒   input  $x_i ∈ \{0,1\}$,  output $y_i ∈ \{0,1\}$  such as the  "Gilbert–Elliott model"  – provides the Hamming distance  $d_{\rm H}(\underline{x}, \ \underline{y})$  exactly the same information about the similarity of the input sequence  $\underline{x}$  and the output sequence  $\underline{y}$  as the  "inner product". Assuming that the two sequences are in bipolar representation (denoted by tildes) and that the sequence length is  $L$  in each case, the inner product is:

\[<\hspace{-0.1cm}\underline{\tilde{x}}, \hspace{0.05cm}\underline{\tilde{y}} \hspace{-0.1cm}> \hspace{0.15cm} = \sum_{i = 1}^{L} \tilde{x}_i \cdot \tilde{y}_i \hspace{0.3cm}{\rm mit } \hspace{0.2cm} \tilde{x}_i = 1 - 2 \cdot x_i \hspace{0.05cm},\hspace{0.2cm} \tilde{y}_i = 1 - 2 \cdot y_i \hspace{0.05cm},\hspace{0.2cm} \tilde{x}_i, \hspace{0.05cm}\tilde{y}_i \in \hspace{0.1cm}\{ -1, +1\} \hspace{0.05cm}.\]

We sometimes refer to this inner product as the "correlation value". The quotation marks are to indicate that the range of values of a  "correlation coefficient"  is actually $±1$.

Relationship between Haming distance and "correlation value"

$\text{Beispiel 4:}$  Wir betrachten hier zwei Binärfolgen der Länge  $L = 10$.

  • Shown on the left are the unipolar sequences  $\underline{x}$  and  $\underline{y}$  and the product  $\underline{x} \cdot \underline{y}$.
  • You can see the Hamming distance  $d_{\rm H}(\underline{x}, \ \underline{y}) = 6$   ⇒   six bit errors at the arrow positions.
  • The inner product  $ < \underline{x} \cdot \underline{y} > \hspace{0.15cm} = \hspace{0.15cm}0$  has no significance here. For example, $< \underline{0} \cdot \underline{y} > $ is always zero regardless of  $\underline{y}$ .


The Hamming distance  $d_{\rm H} = 6$  can also be seen from the bipolar (antipodal) plot of the right graph.

  • The "correlation value" now has the correct value:
$$4 \cdot (+1) + 6 \cdot (-1) = \, -2.$$
  • The deterministic relation between the two quantities with the sequence length  $L$ holds:
$$ < \underline{ \tilde{x} } \cdot \underline{\tilde{y} } > \hspace{0.15cm} = \hspace{0.15cm} L - 2 \cdot d_{\rm H} (\underline{\tilde{x} }, \hspace{0.05cm}\underline{\tilde{y} })\hspace{0.05cm}. $$


$\text{Conclusion:}$  Let us now interpret this equation for some special cases:

  • Identical sequences:   The Hamming distance is equal  $0$  and the "correlation value" is equal  $L$.
  • Inverted: Consequences:   The Hamming distance is equal to  $L$  and the "correlation value" is equal to  $-L$.
  • Uncorrelated sequences:   The Hamming distance is equal to  $L/2$, the "correlation value" is equal to  $0$.

Viterbi algorithm based on correlation and metrics


Using the insights of the last page, the Viterbi algorithm can also be characterized as follows.

$\text{Alternative description:}$  The Viterbi algorithm searches from all possible code sequences  $\underline{x}' ∈ \mathcal{C}$  the sequence  $\underline{z}$  with the maximum " correlation value" to the receiving sequence  $\underline{y}$:

\[\underline{z} = {\rm arg} \max_{\underline{x}' \in \hspace{0.05cm} \mathcal{C} } \hspace{0.1cm} \left\langle \tilde{\underline{x} }'\hspace{0.05cm} ,\hspace{0.05cm} \tilde{\underline{y} } \right\rangle \hspace{0.4cm}{\rm mit }\hspace{0.4cm}\tilde{\underline{x} }\hspace{0.05cm}'= 1 - 2 \cdot \underline{x}'\hspace{0.05cm}, \hspace{0.2cm} \tilde{\underline{y} }= 1 - 2 \cdot \underline{y} \hspace{0.05cm}.\]

$〈\ \text{ ...} \ 〉$  denotes a "correlation value" according to the statements on the last page. The tildes again indicate the bipolar (antipodal) representation.


Die Grafik zeigt die diesbezügliche Trellisauswertung. Zugrunde liegt wie für die  Trellisauswertung gemäß Beispiel 1  – basierend auf der minimalen Hamming–Distanz und den Fehlergrößen ${\it \Gamma}_i(S_{\mu})$ – wieder die Eingangsfolge  $\underline{u} = \big (0\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 1\hspace{0.05cm}, 1\hspace{0.05cm}, 0\hspace{0.05cm}, 0 \hspace{0.05cm} \big )$   ⇒   Codefolge $\underline{x} = \big (00, 11, 10, 00, 01, 01, 11 \big ) \hspace{0.05cm}.$

Viterbi–Decodierung, basierend auf Korrelation und Metrik

Weiter werden vorausgesetzt:

  • der Standard–Faltungscodierer:   Rate  $R = 1/2$,  Gedächtnis  $m = 2$;
  • die Übertragungsfunktionsmatrix:   $\mathbf{G}(D) = (1 + D + D^2, 1 + D^2)$;
  • Länge der Informationssequenz:   $L = 5$;
  • Berücksichtigung der Terminierung:  $L' = 7$;
  • der Empfangsvektor   $\underline{y} = (11, 11, 10, 00, 01, 01, 11)$
    ⇒   zwei Bitfehler zu Beginn;
  • Viterbi–Decodierung mittels Trellisdiagramms:
    • roter Pfeil ⇒   Hypothese $u_i = 0$,
    • blauer Pfeil ⇒   Hypothese $u_i = 1$.


Nebenstehendes Trellis und die  Trellisauswertung gemäß Beispiel 1  ähneln sich sehr. Ebenso wie die Suche nach der Sequenz mit der minimalen Hamming–Distanz geschieht auch die  Suche nach dem maximalen Korrelationswert  schrittweise:

  • Die Knoten bezeichnet man hier als die Metriken  ${\it \Lambda}_i(S_{\mu})$.
  • Die englische Bezeichnung hierfür ist  Cumulative Metric, während  Branch Metric  den Metrikzuwachs angibt.
  • Der Endwert  ${\it \Lambda}_7(S_0) = 10$  gibt den "Korrelationswert" zwischen der ausgewählten Folge  $\underline{z}$  und dem Empfangsvektor  $\underline{y}$  an.
  • Im fehlerfreien Fall ergäbe sich  ${\it \Lambda}_7(S_0) = 14$.

$\text{Beispiel 5:}$  Die folgende Detailbeschreibung der Trellisauswertung beziehen sich auf das obige Trellis:

  • Die Metriken zum Zeitpunkt  $i = 1$  ergeben sich mit  $\underline{y}_1 = (11)$  zu
\[{\it \Lambda}_1(S_0) \hspace{0.15cm} = \hspace{0.15cm} <\hspace{-0.05cm}(00)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.2cm}<(+1,\hspace{0.05cm} +1)\hspace{0.05cm}, \hspace{0.05cm}(-1,\hspace{0.05cm} -1) >\hspace{0.1cm} = \hspace{0.1cm} -2 \hspace{0.05cm},\]
\[{\it \Lambda}_1(S_1) \hspace{0.15cm} = \hspace{0.15cm} <\hspace{-0.05cm}(11)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.2cm}<(-1,\hspace{0.05cm} -1)\hspace{0.05cm}, \hspace{0.05cm}(-1,\hspace{0.05cm} -1) >\hspace{0.1cm} = \hspace{0.1cm} +2 \hspace{0.05cm}.\]
  • Entsprechend gilt zum Zeitpunkt  $i = 2$  mit  $\underline{y}_2 = (11)$:
\[{\it \Lambda}_2(S_0) = {\it \Lambda}_1(S_0) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(00)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.1cm} -2-2 = -4 \hspace{0.05cm},\]
\[{\it \Lambda}_2(S_1) = {\it \Lambda}_1(S_0) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(11)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.1cm} -2+2 = 0 \hspace{0.05cm},\]
\[{\it \Lambda}_2(S_2)= {\it \Lambda}_1(S_1) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(10)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.1cm} +2+0 = +2 \hspace{0.05cm},\]
\[{\it \Lambda}_2(S_3)= {\it \Lambda}_1(S_1) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(01)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} = \hspace{0.1cm} +2+0 = +2 \hspace{0.05cm}.\]
  • Ab dem Zeitpunkt  $i =3$  muss eine Entscheidung zwischen zwei Metriken getroffen werden. Beispielsweise erhält man mit  $\underline{y}_3 = (10)$  für die oberste und die unterste Metrik im Trellis:
\[{\it \Lambda}_3(S_0)={\rm max} \left [{\it \Lambda}_{2}(S_0) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(00)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}>\hspace{0.2cm} \hspace{0.05cm}, \hspace{0.2cm}{\it \Lambda}_{2}(S_1) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(00)\hspace{0.05cm}, \hspace{0.05cm}(11) \hspace{-0.05cm}> \right ] = {\rm max} \left [ -4+0\hspace{0.05cm},\hspace{0.05cm} +2+0 \right ] = +2\hspace{0.05cm},\]
\[{\it \Lambda}_3(S_3) ={\rm max} \left [{\it \Lambda}_{2}(S_1) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(01)\hspace{0.05cm}, \hspace{0.05cm}(10) \hspace{-0.05cm}>\hspace{0.2cm} \hspace{0.05cm}, \hspace{0.2cm}{\it \Lambda}_{2}(S_3) \hspace{0.2cm}+ \hspace{0.1cm}<\hspace{-0.05cm}(10)\hspace{0.05cm}, \hspace{0.05cm}(10) \hspace{-0.05cm}> \right ] = {\rm max} \left [ 0+0\hspace{0.05cm},\hspace{0.05cm} +2+2 \right ] = +4\hspace{0.05cm}.\]

Vergleicht man die zu zu maximierenden Metriken  ${\it \Lambda}_i(S_{\mu})$  mit den zu minimierenden Fehlergrößen  ${\it \Gamma}_i(S_{\mu})$  gemäß dem  $\text{Beispiel 1}$, so erkennt man den folgenden deterministischen Zusammenhang:

\[{\it \Lambda}_i(S_{\mu}) = 2 \cdot \big [ i - {\it \Gamma}_i(S_{\mu}) \big ] \hspace{0.05cm}.\]

Die Auswahl der zu den einzelnen Decodierschritten überlebenden Zweige ist bei beiden Verfahren identisch, und auch die Pfadsuche liefert das gleiche Ergebnis.


$\text{Fazit:}$ 

  • Beim Binärkanal – zum Beispiel nach dem BSC–Modell – führen die beiden beschriebenen Viterbi–Varianten "Fehlergrößenminimierung" und "Metrikmaximierung" zum gleichen Ergebnis.
  • Beim AWGN–Kanal ist dagegen die Fehlergrößenminimierung nicht anwendbar, da keine Hamming–Distanz zwischen dem binären Eingang  $\underline{x}$  und dem analogen Ausgang  $\underline{y}$  angegeben werden kann.
  • Ein weiterer Vorteil der Metrikmaximierung ist, dass eine Zuverlässigkeitsinformation über die Empfangswerte  $\underline{y}$  in einfacher Weise berücksichtigt werden kann.


Viterbi–Entscheidung bei nicht–terminierten Faltungscodes


Bisher wurde stets ein terminierter Faltungscode der Länge  $L\hspace{0.05cm}' = L + m$  betrachtet, und das Ergebnis des Viterbi–Decoders war der durchgehende Trellispfad vom Startzeitpunkt  $(i = 0)$  bis zum Ende  $(i = L\hspace{0.05cm}')$.

  • Bei nicht–terminierten Faltungscodes  $(L\hspace{0.05cm}' → ∞)$  ist diese Entscheidungsstrategie nicht anwendbar.
  • Hier muss der Algorithmus abgewandelt werden, um in endlicher Zeit eine bestmögliche Schätzung (gemäß Maximum–Likelihood) der einlaufenden Bits der Codesequenz liefern zu können.


Die Grafik zeigt im oberen Teil ein beispielhaftes Trellis für

  • "unseren" Standard–Codierer   ⇒   $R = 1/2, \ m = 2, \ {\rm G}(D) = (1 + D + D^2, \ 1 + D^2)$,
  • die Nullfolge   ⇒   $\underline{u} = \underline{0} = (0, 0, 0, \ \text{...})$   ⇒   $\underline{x} = \underline{0} = (00, 00, 00, \ \text{...})$,
  • jeweils einen Übertragungsfehler bei  $i = 4$  und  $i = 5$.

Anhand der Stricharten erkennt man erlaubte (durchgezogene) und verbotene (punktierte) Pfeile in rot $(u_i = 0)$ und blau $(u_i = 1)$. Punktierte Linien haben einen Vergleich gegen einen Konkurrenten verloren und können nicht Teil des ausgewählten Pfades sein.

Beispielhaftes Trellis und überlebende Pfade

Der untere Teil der Grafik zeigt die  $2^m = 4$  überlebenden Pfade  ${\it \Phi}_9(S_{\mu})$  zum Zeitpunkt  $i = 9$.

  • Man findet diese Pfade am einfachsten von rechts nach links (Rückwärtsrichtung).
  • Die folgende Angabe zeigt die durchlaufenen Zustände  $S_{\mu}$  allerdings in Vorwärtsrichtung:
$${\it \Phi}_9(S_0) \text{:} \hspace{0.4cm} S_0 → S_0 → S_0 → S_0 → S_0 → S_0 → S_0 → S_0 → S_0 → S_0,$$
$${\it \Phi}_9(S_1) \text{:} \hspace{0.4cm} S_0 → S_0 → S_0 → S_0 → S_1 → S_2 → S_1 → S_3 → S_2 → S_1,$$
$${\it \Phi}_9(S_2) \text{:} \hspace{0.4cm} S_0 → S_0 → S_0 → S_0 → S_1 → S_2 → S_1 → S_2 → S_1 → S_2,$$
$${\it \Phi}_9(S_3) \text{:} \hspace{0.4cm} S_0 → S_0 → S_0 → S_0 → S_1 → S_2 → S_1 → S_2 → S_1 → S_3.$$

Zu früheren Zeitpunkten  $(i<9)$  würden sich andere überlebende Pfade  ${\it \Phi}_i(S_{\mu})$  ergeben. Deshalb definieren wir:

$\text{Definition:}$  Der  überlebende Pfad  (englisch:  Survivor)  ${\it \Phi}_i(S_{\mu})$  ist der durchgehende Pfad vom Start  $S_0$  $($bei  $i = 0)$  zum Knoten  $S_{\mu}$ zum Zeitpunkt  $i$. Empfehlenswert ist die Pfadsuche in Rückwärtsrichtung.


Die folgende Grafik zeigt die überlebenden Pfade für die Zeitpunkte  $i = 6$  bis  $i = 9$. Zusätzlich sind die jeweiligen Metriken  ${\it \Lambda}_i(S_{\mu})$  für alle vier Zustände angegeben.

Die überlebenden Pfade  ${\it \Phi}_6, \ \text{...} \ , \ {\it \Phi}_9$

Diese Grafik ist wie folgt zu interpretieren:

  • Zum Zeitpunkt  $i = 9$  kann noch keine endgültige ML–Entscheidung über die ersten neun Bit der Informationssequenz getroffen werden. Allerdings ist bereits sicher, dass die wahrscheinlichste Bitfolge durch einen der Pfade  ${\it \Phi}_9(S_0), \ \text{...} \ , \ {\it \Phi}_9(S_3)$  richtig wiedergegeben wird.
  • Da alle vier Pfade bis  $i = 3$  identisch sind, ist die Entscheidung "$v_1 = 0, v_2 = 0, \ v_3 = 0$" die bestmögliche (hellgraue Hinterlegung). Auch zu einem späteren Zeitpunkt würde keine andere Entscheidung getroffen werden. Hinsichtlich der Bits  $v_4, \ v_5, \ \text{...}$  sollte man sich zu diesem frühen Zeitpunkt noch nicht festlegen.
  • Müsste man zum Zeitpunkt  $i = 9$  eine Zwangsentscheidung treffen, so würde man sich für  ${\it \Phi}_9(S_0)$   ⇒   $\underline{v} = (0, 0, \ \text{...} \ , 0)$ entscheiden, da die Metrik  ${\it \Lambda}_9(S_0) = 14$  größer ist als die Vergleichsmetriken.
  • Die Zwangsentscheidung zum Zeitpunkt  $i = 9$  führt in diesem Beispiel zum richtigen Ergebnis. Zum Zeitpunkt  $i = 6$  wäre ein solcher Zwangsentscheid falsch gewesen   ⇒   $\underline{v} = (0, 0, 0, 1, 0, 1)$, und zu den Zeitpunten  $i = 7$  bzw.  $i = 8$  nicht eindeutig.


Weitere Decodierverfahren für Faltungscodes


Wir haben uns bisher nur mit dem Viterbi–Algorithmus in der Form beschäftigt, der 1967 von Andrew J. Viterbi in  [Vit67][1] veröffentlicht wurde. Erst 1974 hat  George David Forney  nachgewiesen, dass dieser Algorithmus eine Maximum–Likelihood–Decodierung von Faltungscodes durchführt.

Aber schon in den Jahren zuvor waren viele Wissenschaftler sehr bemüht, effiziente Decodierverfahren für die 1955 erstmals von  Peter Elias  beschriebenen Faltungscodes bereitzustellen. Zu nennen sind hier unter Anderem – genauere Beschreibungen findet man beispielsweise in  [Bos98][2] oder der englischen Ausgabe  [Bos99][3].

  • der Vorschlag von  Robert Mario Fano  (1963), der als Fano–Algorithmus  bekannt wurde,
  • die Arbeiten von Kamil Zigangirov (1966) und  Frederick Jelinek  (1969), deren Decodierverfahren auch als Stack–Algorithmus  bezeichnet wird.

Alle diese Decodierverfahren und auch der Viterbi–Algorithmus in seiner bisher beschriebenen Form liefern "hart" entschiedene Ausgangswerte   ⇒   $v_i ∈ \{0, 1\}$. Oftmals wären jedoch Informationen über die Zuverlässigkeit der getroffenen Entscheidungen wünschenswert, insbesondere dann, wenn ein verkettetes Codierschema mit einem äußeren und einem inneren Code vorliegt.

Kennt man die Zuverlässigkeit der vom inneren Decoder entschiedenen Bits zumindest grob, so kann durch diese Information die Bitfehlerwahrscheinlichkeit des äußeren Decoders (signifikant) herabgesetzt werden. Der von  Joachim Hagenauer  in  [Hag90][4] vorgeschlagene  Soft–Output–Viterbi–Algorithmus  (SOVA) erlaubt es, zusätzlich zu den entschiedenen Symbolen auch jeweils ein Zuverlässigkeitsmaß anzugeben.

Abschließend gehen wir noch etwas genauer auf den  BCJR–Algorithmus  ein, benannt nach dessen Erfindern L. R. Bahl, J. Cocke, F. Jelinek und J. Raviv  [BCJR74][5].

  • Während der Viterbi–Algorithmus nur eine Schätzung der Gesamtsequenz vornimmt   ⇒   block–wise ML, schätzt der BCJR–Algorithmus ein einzelnes Symbol (Bit) unter Berücksichtigung der gesamten empfangenen Codesequenz.
  • Es handelt sich hierbei also um eine  symbolweise Maximum–Aposteriori–Decodierung   ⇒   bit–wise MAP.


$\text{Fazit:}$  Der Unterschied zwischen Viterbi–Algorithmus und BCJR–Algorithmus soll – stark vereinfacht – am Beispiel eines terminierten Faltungscodes dargestellt werden:

  • Der  Viterbi–Algorithmus  arbeitet das Trellis nur in einer Richtung – der Vorwärtsrichtung  – ab und berechnet für jeden Knoten die Metriken  ${\it \Lambda}_i(S_{\mu})$. Nach Erreichen des Endknotens wird der überlebende Pfad gesucht, der die wahrscheinlichste Codesequenz kennzeichnet.
  • Beim  BCJR–Algorithmus  wird das Trellis zweimal abgearbeitet, einmal in Vorwärtsrichtung und anschließend in Rückwärtsrichtung. Für jeden Knoten sind dann zwei Metriken angebbar, aus denen für jedes Bit die Aposterori–Wahrscheinlichkeit bestimmt werden kann.


Hinweise:


Aufgaben zum Kapitel


Aufgabe 3.9: Grundlegendes zum Viterbi–Algorithmus

Aufgabe 3.9Z: Nochmals Viterbi–Algorithmus

Aufgabe 3.10: Fehlergrößenberechnung

Aufgabe 3.10Z: ML–Decodierung von Faltungscodes

Aufgabe 3.11: Viterbi–Pfadsuche

Quellenverzeichnis

  1. Viterbi, A.J.: Error Bounds for Convolutional Codes and an Asymptotically Optimum Decoding Algorithm. In: IEEE Transactions on Information Theory, vol. IT-13, pp. 260-269, April 1967.
  2. 2.0 2.1 Bossert, M.: Kanalcodierung. Stuttgart: B. G. Teubner, 1998.
  3. 3.0 3.1 Bossert, M.: Channel Coding for Telecommunications. Wiley & Sons, 1999.
  4. Hagenauer, J.: Soft Output Viterbi Decoder. In: Technischer Report, Deutsche Forschungsanstalt für Luft- und Raumfahrt (DLR), 1990.
  5. Bahl, L.R.; Cocke, J.; Jelinek, F.; Raviv, J.: Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate. In: IEEE Transactions on Information Theory, Vol. IT-20, S. 284-287, 1974.