Aufgaben:Exercise 2.8: Huffman Application for a Markov Source: Difference between revisions

From LNTwww
Noah (talk | contribs)
No edit summary
Fix interlanguage link: resolve redirect chain
 
(20 intermediate revisions by 4 users not shown)
Line 1: Line 1:


{{quiz-Header|Buchseite=Informationstheorie/Entropiecodierung nach Huffman
{{quiz-Header|Buchseite=Information_Theory/Entropy_Coding_According_to_Huffman
}}
}}


[[File:EN_Inf_A_2_8.png|right|frame|Binary symmetric Markov source]]
[[File:EN_Inf_A_2_8.png|right|frame|Binary symmetric Markov source]]
We consider the binary symmetric Markov source according to the graph, which is given by the single parameter
We consider the symmetric Markov source according to the graph, which is completely given by the single parameter
:$$q = {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) =  
:$$q = {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) ={\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm Y}).$$
{\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm Y})$$
 
completely.
*The given source symbol sequences apply to the conditional probabilities  $q = 0.2$  and  $q = 0.8$, respectively.  
*The given source symbol sequences apply to the conditional probabilities  $q = 0.2$  bzw.  $q = 0.8$, respectively.  
*In subtask  '''(1)'''  it has to be clarified which symbol sequence – the red or the blue one – was generated with  $q = 0.2$  and which with  $q = 0.8$ .
*In subtask  '''(1)'''  it has to be clarified which symbol sequence – the red or the blue one – was generated with  $q = 0.2$  and which with  $q = 0.8$ .




The properties of Markov sources are described in detail in the chapter  [[Information_Theory/Nachrichtenquellen_mit_Gedächtnis|Message Sources with Memory]] .  Due to the symmetry assumed here with regard to the binary symbols  $\rm X$  and  $\rm Y$ , some serious simplifications result, as is derived in  [[Aufgaben:1.5Z_Symmetrische_Markovquelle|exercise 1.5Z]] :
The properties of Markov sources are described in detail in the chapter  [[Information_Theory/Discrete_Sources_with_Memory|Discrete Sources with Memory]].  Due to the symmetry assumed here with regard to the binary symbols  $\rm X$  and  $\rm Y$,  some serious simplifications result, as is derived in  [[Aufgaben:1.5Z_Symmetrische_Markovquelle|Exercise 1.5Z]]:
* The symbols &nbsp;$\rm X$&nbsp; and &nbsp;$\rm Y$&nbsp; are equally probable, that is,&nbsp; $p_{\rm X} = p_{\rm Y}  = 0.5$ holds.&nbsp; <br>Thus the first entropy approximation is: &nbsp; $H_1 = 1\,\,{\rm bit/source&nbsp; symbol}\hspace{0.05cm}. $
* The symbols &nbsp;$\rm X$&nbsp; and &nbsp;$\rm Y$&nbsp; are equally probable, that is,&nbsp; $p_{\rm X} = p_{\rm Y}  = 0.5$ holds.&nbsp; <br>Thus the first entropy approximation is&nbsp; $H_1 = 1\,\,{\rm bit/source\hspace{0.15cm}symbol}\hspace{0.05cm}. $
* Die Entropie der Markovquelle ergibt sich sowohl für &nbsp;$q = 0.2$&nbsp; als auch für &nbsp;$q = 0.8$&nbsp; zu
* The entropy of the Markov source for &nbsp;$q = 0.2$&nbsp; as well as for &nbsp;$q = 0.8$&nbsp; results in
:$$H = q \cdot {\rm log_2}\hspace{0.15cm}\frac{1}{q} + (1-q) \cdot {\rm log_2}\hspace{0.15cm}\frac{1}{1-q}  
:$$H = q \cdot {\rm log_2}\hspace{0.15cm}\frac{1}{q} + (1-q) \cdot {\rm log_2}\hspace{0.15cm}\frac{1}{1-q}= 0.722\,\,{\rm bit/source\hspace{0.15cm}symbol}\hspace{0.05cm}.$$
= 0.722\,\,{\rm bit/Quellensymbol}\hspace{0.05cm}.$$
* For Markov sources, all entropy approximations&nbsp; $H_k$&nbsp; with order&nbsp; $k \ge 2$&nbsp; are determined by&nbsp; $H_1$&nbsp;  and&nbsp; $H = H_{k \to \infty}$:
* Bei Markovquellen sind alle Entropienäherungen&nbsp; $H_k$&nbsp; mit Ordnung&nbsp; $k \ge 2$&nbsp; durch&nbsp; $H_1$&nbsp;  und&nbsp; $H = H_{k \to \infty}$&nbsp; bestimmt:
:$$H_k = {1}/{k}\cdot \big [ H_1 + H \big ] \hspace{0.05cm}.$$  
:$$H_k = {1}/{k}\cdot \big [ H_1 + H \big ] \hspace{0.05cm}.$$  
*Die folgenden Zahlenwerte gelten wieder für &nbsp;$q = 0.2$&nbsp; und &nbsp;$q = 0.8$&nbsp; gleichermaßen:
*The following numerical values again apply equally to &nbsp;$q = 0.2$&nbsp; and &nbsp;$q = 0.8$&nbsp;:
:$$H_2 = {1}/{2}\cdot \big [ H_1 + H \big ] = 0.861\,\,{\rm bit/Quellensymbol}\hspace{0.05cm},$$
:$$H_2 = {1}/{2}\cdot \big [ H_1 + H \big ] = 0.861\,\,{\rm bit/source\hspace{0.15cm}symbol}\hspace{0.05cm},$$
:$$H_3 = {1}/{3} \cdot \big [ H_1 + 2H \big ] = 0.815\,\,{\rm bit/Quellensymbol}\hspace{0.05cm}.$$
:$$H_3 = {1}/{3} \cdot \big [ H_1 + 2H \big ] = 0.815\,\,{\rm bit/source\hspace{0.15cm}symbol}\hspace{0.05cm}.$$
 
In dieser Aufgabe soll der Huffman&ndash;Algorithmus auf&nbsp; $k$&ndash;Tupel angewandt werden, wobei wir uns auf&nbsp; $k = 2$&nbsp; und&nbsp; $k = 3$&nbsp; beschränken.
 
 


In this exercise, the Huffman algorithm is to be applied to&nbsp; $k$&ndash;tuples, where we restrict ourselves to&nbsp; $k = 2$&nbsp; and&nbsp; $k = 3$.




Line 32: Line 27:




''Hinweise:''
<u>Hints:</u>
*Die Aufgabe gehört zum  Kapitel &nbsp;[[Information_Theory/Entropiecodierung_nach_Huffman|Entropiecodierung nach Huffman]].
*The exercise belongs to the chapter&nbsp; [[Information_Theory/Entropiecodierung_nach_Huffman|Entropy Coding according to Huffman]].
*Insbesondere wird auf die Seite&nbsp; [[Information_Theory/Entropiecodierung_nach_Huffman#Anwendung_der_Huffman.E2.80.93Codierung_auf_.7F.27.22.60UNIQ-MathJax164-QINU.60.22.27.7F.E2.80.93Tupel|Anwendung der Huffman-Codierung auf k-Tupel]]&nbsp;  Bezug genommen.
*In particular, reference is made to the page&nbsp; [[Information_Theory/Entropy_Coding_According_to_Huffman#Application_of_Huffman_coding_to_.7F.27.22.60UNIQ-MathJax168-QINU.60.22.27.7F.E2.80.93tuples|Application of Huffman coding to&nbsp; $k$-tuples]].
*Nützliche Informationen finden Sie auch in den Angabenblättern zu   &nbsp;[[Aufgaben:2.7_Huffman-Anwendung_für_binäre_Zweiertupel|Aufgabe 2.7]]&nbsp; und &nbsp;[[Aufgaben:2.7Z_Huffman-Codierung_für_Zweiertupel_einer_Ternärquelle|Aufgabe 2.7Z]].
*Useful information can also be found in the specification sheets for   &nbsp;[[Aufgaben:Exercise_2.7:_Huffman_Application_for_Binary_Two-Tuples|Exercise 2.7]]&nbsp; and &nbsp;[[Aufgaben:Exercise_2.7Z:_Huffman_Coding_for_Two-Tuples_of_a_Ternary_Source|Exercise 2.7Z]].
*Zur Kontrolle Ihrer Ergebnisse verweisen wir auf das Interaktionsmodul &nbsp;[[Applets:Huffman-_und_Shannon-Fano-Codierung|Huffman und Shannon&ndash;Fano&ndash;&ndash;Codierung]].
*To check your results, please refer to the (German language) SWF module&nbsp; [[Applets:Huffman_Shannon_Fano|Coding according to Huffman and Shannon/Fano]].
   
   






===Fragebogen===
===Questions===


<quiz display=simple>
<quiz display=simple>
{Welche der vorne angegebenen Beispielfolgen gilt für&nbsp; $q = 0.8$?
{Which of the example sequences given at the front is true for&nbsp; $q = 0.8$?
|type="[]"}
|type="()"}
- die rote Quellensymbolfolge&nbsp; '''1''',
- The red source symbol sequence&nbsp; '''1''',
+ die blaue Quellensymbolfolge&nbsp; '''2'''.
+ the blue source symbol sequence&nbsp; '''2'''.




{Welche der folgenden Aussagen treffen zu?
{Which of the following statements are true?
|type="[]"}
|type="[]"}
- Auch die direkte Anwendung von Huffman ist hier sinnvoll.
- The direct application of Huffman is also useful here.
+ Huffman macht bei Bildung von Zweiertupeln&nbsp; $(k = 2)$&nbsp; Sinn.
+ Huffman makes sense when forming two-tuples&nbsp; $(k = 2)$.
+ Huffman macht bei Bildung von Dreiertupeln&nbsp; $(k = 3)$&nbsp; Sinn.
+ Huffman makes sense when forming tuples of three&nbsp; $(k = 3)$.




{Wie lauten die Wahrscheinlichkeiten der <u>Zweiertupel</u>&nbsp; $(k = 2)$&nbsp; für &nbsp;$\underline{q = 0.8}$?
{What are the probabilities of <u>two-tuples</u>&nbsp; $(k = 2)$&nbsp; for &nbsp;$\underline{q = 0.8}$?
|type="{}"}
|type="{}"}
$p_{\rm A} = \rm Pr(XX)\ = \ $ { 0.4 3% }
$p_{\rm A} = \rm Pr(XX)\ = \ $ { 0.4 3% }
Line 65: Line 60:




{Ermitteln Sie den Huffman&ndash;Code für&nbsp; $\underline{k = 2}$.&nbsp; Wie groß ist in diesem Fall die mittlere Codewortlänge?
{Find the Huffman code for&nbsp; $\underline{k = 2}$.&nbsp; What is the average code word length in this case?
|type="{}"}
|type="{}"}
$L_{\rm M} \ = \ $ { 0.9 3% } $\ \rm bit/Quellensymbol$
$L_{\rm M} \ = \ $ { 0.9 3% } $\ \rm bit/source\hspace{0.15cm}symbol$




{Welche Schranke ergibt sich für die mittlere Codewortlänge, wenn <u>Zweiertupel</u> gebildet werden&nbsp; $(k = 2)$? Interpretation.
{What is the bound on the average code word length when <u>two-tuples</u> are formed&nbsp; $(k = 2)$? Interpretation.
|type="()"}
|type="()"}
- $L_{\rm M} \ge H_1 =  1.000$&nbsp; bit/Quellensymbol,
- $L_{\rm M} \ge H_1 =  1.000$&nbsp; $\ \rm bit/source\hspace{0.15cm}symbol$
+ $L_{\rm M} \ge H_2 \approx  0.861$&nbsp; bit/Quellensymbol,
+ $L_{\rm M} \ge H_2 \approx  0.861$&nbsp; $\ \rm bit/source\hspace{0.15cm}symbol$
- $L_{\rm M} \ge H_3 \approx  0.815$&nbsp; bit/Quellensymbol,
- $L_{\rm M} \ge H_3 \approx  0.815$&nbsp; $\ \rm bit/source\hspace{0.15cm}symbol$
- $L_{\rm M} \ge H_{k \to \infty} \approx  0.722$&nbsp; bit/Quellensymbol,
- $L_{\rm M} \ge H_{k \to \infty} \approx  0.722$&nbsp; $\ \rm bit/source\hspace{0.15cm}symbol$
- $L_{\rm M} \ge 0.5$&nbsp; bit/Quellensymbol.
- $L_{\rm M} \ge 0.5$&nbsp; $\ \rm bit/source\hspace{0.15cm}symbol$




{Berechnen Sie die Wahrscheinlichkeiten der <u>Dreiertupel</u>&nbsp; $(k = 3)$&nbsp; für &nbsp;$\underline{q = 0.8}$?
{Calculate the probabilities of the <u>three-tuple</u>&nbsp; $(k = 3)$&nbsp; for &nbsp;$\underline{q = 0.8}$?
|type="{}"}
|type="{}"}
$p_{\rm A} = \rm Pr(XXX)\ = \ $ { 0.32 3% }
$p_{\rm A} = \rm Pr(XXX)\ = \ $ { 0.32 3% }
Line 91: Line 86:




{Ermitteln Sie den Huffman&ndash;Code für $\underline{k = 3}$.&nbsp; Wie groß ist in diesem Fall die mittlere Codewortlänge?
{Find the Huffman code for $\underline{k = 3}$.&nbsp; What is the average code word length in this case?
|type="{}"}
|type="{}"}
$L_{\rm M} \ = \ $ { 0.84 3% } $\ \rm bit/Quellensymbol$
$L_{\rm M} \ = \ $ { 0.84 3% } $\ \rm bit/source\hspace{0.15cm}symbol$




Line 99: Line 94:
</quiz>
</quiz>


===Musterlösung===
===Solution===
{{ML-Kopf}}
{{ML-Kopf}}
'''(1)'''&nbsp; Richtig ist der <u>Lösungsvorschlag 2</u>:
'''(1)'''&nbsp; Correct is the <u>solution suggestion 2</u>:
*Bei der blauen Quellensymbolfolge&nbsp; '''2'''&nbsp; erkennt man sehr viel weniger Symbolwechsel als in der roten Folge.  
*In the blue source symbol sequence&nbsp; '''2'''&nbsp; one recognizes much less symbol changes than in the red sequence.
*Die Symbolfolge&nbsp; '''2'''&nbsp; wurde mit dem Parameter&nbsp; $q = {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) =  
*The symbol sequence&nbsp; '''2'''&nbsp; was generated with the parameter&nbsp; $q = {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) =  
{\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm Y}) = 0.8$&nbsp; erzeugt und die rote Symbolfolge&nbsp; '''1'''&nbsp; mit&nbsp; $q = 0.2$.
{\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm Y}) = 0.8$&nbsp; and the red symbol sequence&nbsp; '''1'''&nbsp; with&nbsp; $q = 0.2$.
   
   




'''(2)'''&nbsp; Richtig sind die <u>Antworten 2 und 3</u>.:
'''(2)'''&nbsp;<u>Answers 2 and 3</u> are correct:
*Da hier die Quellensymbole&nbsp; $\rm X$&nbsp; und&nbsp; $\rm Y$&nbsp; als gleichwahrscheinlich angenommen wurden, macht die direkte Anwendung von Huffman keinen Sinn.  
*Since here the source symbols&nbsp; $\rm X$&nbsp; and&nbsp; $\rm Y$&nbsp; were assumed to be equally probable, the direct application of Huffman makes no sense.
*Dagegen kann man die inneren statistischen Bindungen  der Markovquelle zur Datenkomprimierung nutzen, wenn man&nbsp; $k$&ndash;Tupel bildet&nbsp; $(k &#8805; 2)$.  
*In contrast, one can use the inner statistical depenndecies of the Markov source for data compression if one forms&nbsp; $k$&ndash;tuples &nbsp; $(k &#8805; 2)$.  
*Je größer&nbsp; $k$&nbsp; ist, desto mehr nähert sich die mittlere Codewortlänge&nbsp; $L_{\rm M}$&nbsp; der Entropie&nbsp; $H$.
*The larger&nbsp; $k$&nbsp; is, the more the average code word length&nbsp; $L_{\rm M}$&nbsp; approaches the entropy&nbsp; $H$.






'''(3)'''&nbsp; Die Symbolwahrscheinlichkeiten sind&nbsp; $p_{\rm X} = p_{\rm Y}  = 0.5$.&nbsp; Damit erhält man für die Zweiertupel:
'''(3)'''&nbsp; The symbol probabilities are&nbsp; $p_{\rm X} = p_{\rm Y}  = 0.5$, which gives us for the two-tuples:&nbsp;  
:$$p_{\rm A} \hspace{0.2cm} =  \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XX}) = p_{\rm X} \cdot {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) = 0.5 \cdot q = 0.5 \cdot 0.8 \hspace{0.15cm}\underline{  = 0.4}  \hspace{0.05cm},$$
:$$p_{\rm A} \hspace{0.2cm} =  \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XX}) = p_{\rm X} \cdot {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) = 0.5 \cdot q = 0.5 \cdot 0.8 \hspace{0.15cm}\underline{  = 0.4}  \hspace{0.05cm},$$
:$$p_{\rm B} \hspace{0.2cm} =  \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XY}) = p_{\rm X} \cdot {\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) = 0.5 \cdot (1-q)= 0.5 \cdot 0.2 \hspace{0.15cm}\underline{  = 0.1}  \hspace{0.05cm},$$
:$$p_{\rm B} \hspace{0.2cm} =  \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XY}) = p_{\rm X} \cdot {\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) = 0.5 \cdot (1-q)= 0.5 \cdot 0.2 \hspace{0.15cm}\underline{  = 0.1}  \hspace{0.05cm},$$
Line 122: Line 117:




[[File:P_ID2462__Inf_A_2_8d.png|right|frame|Zur Huffman–Codierung für $k = 2$]]
[[File:P_ID2462__Inf_A_2_8d.png|right|frame|For Huffman coding for $k = 2$]]
'''(4)'''&nbsp; Nebenstehender Bildschirmabzug des (früheren) SWF&ndash;Programms&nbsp; [[Applets:Huffman_Shannon_Fano|Shannon&ndash;Fano&ndash; und Huffman&ndash;Codierung]]&nbsp; zeigt die Konstruktion des Huffman&ndash;Codes für&nbsp; $k = 2$&nbsp; mit den soeben berechneten Wahrscheinlichkeiten.  
'''(4)'''&nbsp; Opposite screen capture of the (earlier) SWF applet&nbsp; [[Applets:Huffman_Shannon_Fano|Coding according to Huffman and Shannon/Fano]]&nbsp; shows the construction of the Huffman code for&nbsp; $k = 2$&nbsp; with the probabilities just calculated.  
*Damit gilt für die mittlere Codewortlänge:
*Thus, the average code word length is:
:$$L_{\rm M}\hspace{0.01cm}' = 0.4 \cdot 1 + 0.4 \cdot 2 + (0.1 + 0.1) \cdot 3 =  1.8\,\,{\rm bit/Zweiertupel}$$
:$$L_{\rm M}\hspace{0.01cm}' = 0.4 \cdot 1 + 0.4 \cdot 2 + (0.1 + 0.1) \cdot 3 =  1.8\,\,\text { bit/two-tuple}$$
:$$\Rightarrow\hspace{0.3cm}L_{\rm M} = {L_{\rm M}\hspace{0.01cm}'}/{2}\hspace{0.15cm}\underline{  = 0.9\,{\rm bit/Quellensymbol}}\hspace{0.05cm}.$$
:$$\Rightarrow\hspace{0.3cm}L_{\rm M} = {L_{\rm M}\hspace{0.01cm}'}/{2}\hspace{0.15cm}\underline{  = 0.9\,\text{ bit/source symbol}}\hspace{0.05cm}.$$




'''(5)'''&nbsp; Richtig iist der <u>Lösungsvorschlag 2</u>:
'''(5)'''&nbsp; Correct is the <u>suggested solution 2</u>:
*Nach dem Quellencodierungstheorem gilt&nbsp; $L_{\rm M} &#8805; H$.  
*According to the source coding theorem&nbsp; $L_{\rm M} &#8805; H$ holds.  
*Wendet man aber Huffman&ndash;Codierung an und lässt dabei Bindungen zwischen nicht benachbarten Symbolen außer Betracht&nbsp; $(k = 2)$, so gilt als unterste Grenze der Codewortlänge nicht&nbsp; $H = 0.722$, sondern&nbsp; $H_2 = 0.861$&nbsp; (auf den Zusatz bit/Quellensymbol wird für den Rest der Aufgabe verzichtet).
*However, if we apply Huffman coding and disregard ties between non-adjacent symbols&nbsp; $(k = 2)$, the lower bound of the code word length is not&nbsp; $H = 0.722$, but&nbsp; $H_2 = 0.861$&nbsp; (the addition&nbsp; "bit/source symbol"&nbsp; is omitted for the rest of the task).
*Das Ergebnis der Teilaufgabe&nbsp; '''(4)'''&nbsp; war&nbsp; $L_{\rm M} = 0.9.$  
*The result of subtask&nbsp; '''(4)'''&nbsp; was&nbsp; $L_{\rm M} = 0.9.$  
*Würde eine unsymmetrische Markovkette vorliegen und zwar derart, dass sich für die Wahrscheinlichkeiten&nbsp; $p_{\rm A}$, ... , $p_{\rm D}$&nbsp; die Werte&nbsp; $50\%$,&nbsp; $25\%$&nbsp; und zweimal&nbsp; $12.5\%$&nbsp; ergeben würden, so käme man auf die mittlere Codewortlänge&nbsp; $L_{\rm M}  = 0.875$.
*If an asymmetrical Markov chain were present and in such a way that for the probabilities&nbsp; $p_{\rm A}$, ... , $p_{\rm D}$&nbsp; the values&nbsp; $50\%$,&nbsp; $25\%$&nbsp; and twice&nbsp; $12.5\%$&nbsp; would result, then one would come to the average code word length&nbsp; $L_{\rm M}  = 0.875$.
*Wie die genauen Parameter dieser unsymmetrischen Markovquelle aussehen, weiß aber auch der Aufgabensteller (G. Söder) nicht.  
*How the exact parameters of this asymmetrical Markov source look, however, is not known even to the task creator (G. Söder).  
*Auch nicht, wie sich der Wert&nbsp; $0.875$&nbsp; auf&nbsp; $0.861$&nbsp; senken ließe. Der Huffman&ndash;Algorithmus ist hierfür jedenfalls ungeeignet.
*Nor how the value&nbsp; $0.875$&nbsp; could be reduced to&nbsp; $0.861$.&nbsp; In any case, the Huffman algorithm is unsuitable for this.




'''(6)'''&nbsp; Mit&nbsp; $q = 0.8$&nbsp; und&nbsp; $1 - q = 0.2$&nbsp; erhält man:
'''(6)'''&nbsp; With&nbsp; $q = 0.8$&nbsp; and&nbsp; $1 - q = 0.2$&nbsp; we get:
:$$p_{\rm A} \hspace{0.2cm} =  \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XXX})  = 0.5 \cdot q^2 \hspace{0.15cm}\underline{  = 0.32} = p_{\rm H} = {\rm Pr}(\boldsymbol{\rm YYY})\hspace{0.05cm},$$
:$$p_{\rm A} \hspace{0.2cm} =  \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XXX})  = 0.5 \cdot q^2 \hspace{0.15cm}\underline{  = 0.32} = p_{\rm H} = {\rm Pr}(\boldsymbol{\rm YYY})\hspace{0.05cm},$$
:$$p_{\rm B} \hspace{0.2cm} =  \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XXY}) = 0.5 \cdot q \cdot (1-q) \hspace{0.15cm}\underline{  = 0.08}= p_{\rm G} = {\rm Pr}(\boldsymbol{\rm YYX}) \hspace{0.05cm},$$
:$$p_{\rm B} \hspace{0.2cm} =  \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XXY}) = 0.5 \cdot q \cdot (1-q) \hspace{0.15cm}\underline{  = 0.08}= p_{\rm G} = {\rm Pr}(\boldsymbol{\rm YYX}) \hspace{0.05cm},$$
Line 145: Line 140:




'''(7)'''&nbsp; Der Bildschirmabzug des des (früheren) SWF&ndash;Programms&nbsp; [[Applets:Huffman_Shannon_Fano|Shannon&ndash;Fano&ndash; und Huffman&ndash;Codierung]]&nbsp; verdeutlicht die Konstellation des Huffman&ndash;Codes für&nbsp; $k = 3$.&nbsp; Damit erhält man für die mittlere Codewortlänge:
[[File:P_ID2463__Inf_A_2_8g.png|right|frame|On the Huffman coding for&nbsp; $k = 3$]]
:$$L_{\rm M}\hspace{0.01cm}' =  0.64 \cdot 2 + 0.24 \cdot 3 + 0.04 \cdot 5 =  2.52\,\,{\rm bit/Dreiertupel}\hspace{0.3cm}
'''(7)'''&nbsp; The screen capture of the of the (earlier) SWF applet&nbsp; [[Applets:Huffman_Shannon_Fano|Coding according to Huffman and Shannon/Fano]]&nbsp; coding illustrates the constellation of the Huffman code for&nbsp; $k = 3$.&nbsp;  
\Rightarrow\hspace{0.3cm}L_{\rm M} = {L_{\rm M}\hspace{0.01cm}'}/{3}\hspace{0.15cm}\underline{  = 0.84\,{\rm bit/Quellensymbol}}\hspace{0.05cm}.$$


[[File:P_ID2463__Inf_A_2_8g.png|right|frame|Zur Huffman–Codierung für $k = 3$]]
This gives us for the average code word length:
:$$L_{\rm M}\hspace{0.01cm}' =  0.64 \cdot 2 + 0.24 \cdot 3 + 0.04 \cdot 5 =  2.52\,\,{\rm bit/three tupel}$$
:$$\Rightarrow\hspace{0.3cm}L_{\rm M} = {L_{\rm M}\hspace{0.01cm}'}/{3}\hspace{0.15cm}\underline{  = 0.84\,{\rm bit/source\:symbol}}\hspace{0.05cm}.$$


*Man erkennt die Verbesserung gegenüber der Teilaufgabe&nbsp; '''(4)'''.  
*One can see the improvement over subtask&nbsp; '''(4)'''.  
*Die für&nbsp; $k = 2$&nbsp; gültige Schranke&nbsp; $H_2 = 0.861$&nbsp; wird nun von der mittleren Codewortlänge&nbsp; $L_{\rm M}$&nbsp; unterschritten.  
*The bound&nbsp; $k = 2$&nbsp; valid for&nbsp; $H_2 = 0.861$&nbsp; is now undercut by the average code word length&nbsp; $L_{\rm M}$.
*Die neue Schranke für&nbsp; $k = 3$&nbsp; ist&nbsp;  $H_3 = 0.815$.  
*The new bound for&nbsp; $k = 3$&nbsp; is&nbsp;  $H_3 = 0.815$.  
*Um die Quellenentropie&nbsp; $H = 0.722$&nbsp; zu erreichen&nbsp; (besser gesagt:&nbsp; diesem Endwert bis auf ein&nbsp; $&epsilon;$&nbsp; nahe zu kommen), müsste man allerdings unendlich lange Tupel bilden&nbsp; $(k &#8594; &#8734;)$.
*However, to reach the source entropy&nbsp; $H = 0.722$&nbsp;&nbsp; (or better:&nbsp; to come close to this final value up to an&nbsp; $&epsilon;$&nbsp;), one would have to form infinitely long tuples&nbsp; $(k &#8594; &#8734;)$.


{{ML-Fuß}}
{{ML-Fuß}}
Line 161: Line 157:


[[Category:Information Theory: Exercises|^2.3 Entropy Coding according to Huffman^]]
[[Category:Information Theory: Exercises|^2.3 Entropy Coding according to Huffman^]]
[[de:Aufgaben:Aufgabe 2.8: Huffman-Anwendung bei einer Markovquelle]]

Latest revision as of 17:58, 16 March 2026

Binary symmetric Markov source

We consider the symmetric Markov source according to the graph, which is completely given by the single parameter

$$q = {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) ={\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm Y}).$$
  • The given source symbol sequences apply to the conditional probabilities  $q = 0.2$  and  $q = 0.8$, respectively.
  • In subtask  (1)  it has to be clarified which symbol sequence – the red or the blue one – was generated with  $q = 0.2$  and which with  $q = 0.8$ .


The properties of Markov sources are described in detail in the chapter  Discrete Sources with Memory.  Due to the symmetry assumed here with regard to the binary symbols  $\rm X$  and  $\rm Y$,  some serious simplifications result, as is derived in  Exercise 1.5Z:

  • The symbols  $\rm X$  and  $\rm Y$  are equally probable, that is,  $p_{\rm X} = p_{\rm Y} = 0.5$ holds. 
    Thus the first entropy approximation is  $H_1 = 1\,\,{\rm bit/source\hspace{0.15cm}symbol}\hspace{0.05cm}. $
  • The entropy of the Markov source for  $q = 0.2$  as well as for  $q = 0.8$  results in
$$H = q \cdot {\rm log_2}\hspace{0.15cm}\frac{1}{q} + (1-q) \cdot {\rm log_2}\hspace{0.15cm}\frac{1}{1-q}= 0.722\,\,{\rm bit/source\hspace{0.15cm}symbol}\hspace{0.05cm}.$$
  • For Markov sources, all entropy approximations  $H_k$  with order  $k \ge 2$  are determined by  $H_1$  and  $H = H_{k \to \infty}$:
$$H_k = {1}/{k}\cdot \big [ H_1 + H \big ] \hspace{0.05cm}.$$
  • The following numerical values again apply equally to  $q = 0.2$  and  $q = 0.8$ :
$$H_2 = {1}/{2}\cdot \big [ H_1 + H \big ] = 0.861\,\,{\rm bit/source\hspace{0.15cm}symbol}\hspace{0.05cm},$$
$$H_3 = {1}/{3} \cdot \big [ H_1 + 2H \big ] = 0.815\,\,{\rm bit/source\hspace{0.15cm}symbol}\hspace{0.05cm}.$$

In this exercise, the Huffman algorithm is to be applied to  $k$–tuples, where we restrict ourselves to  $k = 2$  and  $k = 3$.



Hints:



Questions

1 Which of the example sequences given at the front is true for  $q = 0.8$?

The red source symbol sequence  1,
the blue source symbol sequence  2.

2 Which of the following statements are true?

The direct application of Huffman is also useful here.
Huffman makes sense when forming two-tuples  $(k = 2)$.
Huffman makes sense when forming tuples of three  $(k = 3)$.

3 What are the probabilities of two-tuples  $(k = 2)$  for  $\underline{q = 0.8}$?

$p_{\rm A} = \rm Pr(XX)\ = \ $
$p_{\rm B} = \rm Pr(XY)\ = \ $
$p_{\rm C} = \rm Pr(YX)\ = \ $
$p_{\rm D} = \rm Pr(YY)\ = \ $

4 Find the Huffman code for  $\underline{k = 2}$.  What is the average code word length in this case?

$L_{\rm M} \ = \ $ $\ \rm bit/source\hspace{0.15cm}symbol$

5 What is the bound on the average code word length when two-tuples are formed  $(k = 2)$? Interpretation.

$L_{\rm M} \ge H_1 = 1.000$  $\ \rm bit/source\hspace{0.15cm}symbol$
$L_{\rm M} \ge H_2 \approx 0.861$  $\ \rm bit/source\hspace{0.15cm}symbol$
$L_{\rm M} \ge H_3 \approx 0.815$  $\ \rm bit/source\hspace{0.15cm}symbol$
$L_{\rm M} \ge H_{k \to \infty} \approx 0.722$  $\ \rm bit/source\hspace{0.15cm}symbol$
$L_{\rm M} \ge 0.5$  $\ \rm bit/source\hspace{0.15cm}symbol$

6 Calculate the probabilities of the three-tuple  $(k = 3)$  for  $\underline{q = 0.8}$?

$p_{\rm A} = \rm Pr(XXX)\ = \ $
$p_{\rm B} = \rm Pr(XXY)\ = \ $
$p_{\rm C} = \rm Pr(XYX)\ = \ $
$p_{\rm D} = \rm Pr(XYY)\ = \ $
$p_{\rm E} = \rm Pr(YXX)\ = \ $
$p_{\rm F} = \rm Pr(YXY)\ = \ $
$p_{\rm G} = \rm Pr(YYX)\ = \ $
$p_{\rm H} = \rm Pr(YYY)\ = \ $

7 Find the Huffman code for $\underline{k = 3}$.  What is the average code word length in this case?

$L_{\rm M} \ = \ $ $\ \rm bit/source\hspace{0.15cm}symbol$


Solution

(1)  Correct is the solution suggestion 2:

  • In the blue source symbol sequence  2  one recognizes much less symbol changes than in the red sequence.
  • The symbol sequence  2  was generated with the parameter  $q = {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) =

{\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm Y}) = 0.8$  and the red symbol sequence  1  with  $q = 0.2$.


(2) Answers 2 and 3 are correct:

  • Since here the source symbols  $\rm X$  and  $\rm Y$  were assumed to be equally probable, the direct application of Huffman makes no sense.
  • In contrast, one can use the inner statistical depenndecies of the Markov source for data compression if one forms  $k$–tuples   $(k ≥ 2)$.
  • The larger  $k$  is, the more the average code word length  $L_{\rm M}$  approaches the entropy  $H$.


(3)  The symbol probabilities are  $p_{\rm X} = p_{\rm Y} = 0.5$, which gives us for the two-tuples: 

$$p_{\rm A} \hspace{0.2cm} = \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XX}) = p_{\rm X} \cdot {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) = 0.5 \cdot q = 0.5 \cdot 0.8 \hspace{0.15cm}\underline{ = 0.4} \hspace{0.05cm},$$
$$p_{\rm B} \hspace{0.2cm} = \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XY}) = p_{\rm X} \cdot {\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm X}) = 0.5 \cdot (1-q)= 0.5 \cdot 0.2 \hspace{0.15cm}\underline{ = 0.1} \hspace{0.05cm},$$
$$p_{\rm C} \hspace{0.2cm} = \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm YX}) = p_{\rm Y} \cdot {\rm Pr}(\boldsymbol{\rm X}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm Y}) = 0.5 \cdot (1-q)= 0.5 \cdot 0.2 \hspace{0.15cm}\underline{ = 0.1} \hspace{0.05cm},$$
$$p_{\rm D} \hspace{0.2cm} = \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm YY}) = p_{\rm Y} \cdot {\rm Pr}(\boldsymbol{\rm Y}\hspace{0.05cm}|\hspace{0.05cm}\boldsymbol{\rm Y}) = 0.5 \cdot q = 0.5 \cdot 0.8\hspace{0.15cm}\underline{ = 0.4} \hspace{0.05cm}.$$


For Huffman coding for $k = 2$

(4)  Opposite screen capture of the (earlier) SWF applet  Coding according to Huffman and Shannon/Fano  shows the construction of the Huffman code for  $k = 2$  with the probabilities just calculated.

  • Thus, the average code word length is:
$$L_{\rm M}\hspace{0.01cm}' = 0.4 \cdot 1 + 0.4 \cdot 2 + (0.1 + 0.1) \cdot 3 = 1.8\,\,\text { bit/two-tuple}$$
$$\Rightarrow\hspace{0.3cm}L_{\rm M} = {L_{\rm M}\hspace{0.01cm}'}/{2}\hspace{0.15cm}\underline{ = 0.9\,\text{ bit/source symbol}}\hspace{0.05cm}.$$


(5)  Correct is the suggested solution 2:

  • According to the source coding theorem  $L_{\rm M} ≥ H$ holds.
  • However, if we apply Huffman coding and disregard ties between non-adjacent symbols  $(k = 2)$, the lower bound of the code word length is not  $H = 0.722$, but  $H_2 = 0.861$  (the addition  "bit/source symbol"  is omitted for the rest of the task).
  • The result of subtask  (4)  was  $L_{\rm M} = 0.9.$
  • If an asymmetrical Markov chain were present and in such a way that for the probabilities  $p_{\rm A}$, ... , $p_{\rm D}$  the values  $50\%$,  $25\%$  and twice  $12.5\%$  would result, then one would come to the average code word length  $L_{\rm M} = 0.875$.
  • How the exact parameters of this asymmetrical Markov source look, however, is not known even to the task creator (G. Söder).
  • Nor how the value  $0.875$  could be reduced to  $0.861$.  In any case, the Huffman algorithm is unsuitable for this.


(6)  With  $q = 0.8$  and  $1 - q = 0.2$  we get:

$$p_{\rm A} \hspace{0.2cm} = \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XXX}) = 0.5 \cdot q^2 \hspace{0.15cm}\underline{ = 0.32} = p_{\rm H} = {\rm Pr}(\boldsymbol{\rm YYY})\hspace{0.05cm},$$
$$p_{\rm B} \hspace{0.2cm} = \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XXY}) = 0.5 \cdot q \cdot (1-q) \hspace{0.15cm}\underline{ = 0.08}= p_{\rm G} = {\rm Pr}(\boldsymbol{\rm YYX}) \hspace{0.05cm},$$
$$p_{\rm C} \hspace{0.2cm} = \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XYX}) = 0.5 \cdot (1-q)^2\hspace{0.15cm}\underline{ = 0.02} = p_{\rm F}= {\rm Pr}(\boldsymbol{\rm YXY}) \hspace{0.05cm},$$
$$p_{\rm D} \hspace{0.2cm} = \hspace{0.2cm} {\rm Pr}(\boldsymbol{\rm XYY}) = 0.5 \cdot (1-q) \cdot q \hspace{0.15cm}\underline{ = 0.08} = p_{\rm E} = {\rm Pr}(\boldsymbol{\rm YXX})\hspace{0.05cm}.$$


On the Huffman coding for  $k = 3$

(7)  The screen capture of the of the (earlier) SWF applet  Coding according to Huffman and Shannon/Fano  coding illustrates the constellation of the Huffman code for  $k = 3$. 

This gives us for the average code word length:

$$L_{\rm M}\hspace{0.01cm}' = 0.64 \cdot 2 + 0.24 \cdot 3 + 0.04 \cdot 5 = 2.52\,\,{\rm bit/three tupel}$$
$$\Rightarrow\hspace{0.3cm}L_{\rm M} = {L_{\rm M}\hspace{0.01cm}'}/{3}\hspace{0.15cm}\underline{ = 0.84\,{\rm bit/source\:symbol}}\hspace{0.05cm}.$$
  • One can see the improvement over subtask  (4).
  • The bound  $k = 2$  valid for  $H_2 = 0.861$  is now undercut by the average code word length  $L_{\rm M}$.
  • The new bound for  $k = 3$  is  $H_3 = 0.815$.
  • However, to reach the source entropy  $H = 0.722$   (or better:  to come close to this final value up to an  $ε$ ), one would have to form infinitely long tuples  $(k → ∞)$.