Aufgaben:Aufgabe 2.7Z: Huffman-Codierung für Zweiertupel einer Ternärquelle: Unterschied zwischen den Versionen

Aus LNTwww
Wechseln zu:Navigation, Suche
Zeile 47: Zeile 47:
 
|type="[]"}
 
|type="[]"}
 
+ $L_{\rm M}$ fällt monoton mit steigendem $k$ ab.
 
+ $L_{\rm M}$ fällt monoton mit steigendem $k$ ab.
- $L_{\rm M}$ändert sich nicht, wenn man $k$ erhöht.
+
- $L_{\rm M} $ändert sich nicht, wenn man $k$ erhöht.
 
- Für $k= 3$ erhält man $L_{\rm M} = 1.05 \ \rm bit/Quellensymbol$.
 
- Für $k= 3$ erhält man $L_{\rm M} = 1.05 \ \rm bit/Quellensymbol$.
  
Zeile 56: Zeile 56:
 
===Musterlösung===
 
===Musterlösung===
 
{{ML-Kopf}}
 
{{ML-Kopf}}
<b>1.</b>&nbsp;&nbsp;Die mittlere Codewortlänge ergibt sich mit <i>p</i><sub>X</sub> = 0.7, <i>L</i><sub>X</sub> = 1, <i>p</i><sub>Y</sub> = 0.2, <i>L</i><sub>Y</sub> = 2, <i>p</i><sub>Z</sub> = 0.1, <i>L</i><sub>Z</sub> = 2 zu
+
'''(1)'''&nbsp; Die mittlere Codewortlänge ergibt sich mit <i>p</i><sub>X</sub> = 0.7, <i>L</i><sub>X</sub> = 1, <i>p</i><sub>Y</sub> = 0.2, <i>L</i><sub>Y</sub> = 2, <i>p</i><sub>Z</sub> = 0.1, <i>L</i><sub>Z</sub> = 2 zu
 
:$$L_{\rm M} = p_{\rm X} \cdot 1 + (p_{\rm Y} + p_{\rm Z}) \cdot 2 \hspace{0.15cm}\underline{= 1.3\,\,{\rm bit/Quellensymbol}}\hspace{0.05cm}. $$
 
:$$L_{\rm M} = p_{\rm X} \cdot 1 + (p_{\rm Y} + p_{\rm Z}) \cdot 2 \hspace{0.15cm}\underline{= 1.3\,\,{\rm bit/Quellensymbol}}\hspace{0.05cm}. $$
 
Dieser Wert liegt noch deutlich über der Quellenentropie <i>H</i> = 1.157 bit/Quellensymbol.
 
Dieser Wert liegt noch deutlich über der Quellenentropie <i>H</i> = 1.157 bit/Quellensymbol.
  
<b>2.</b>&nbsp;&nbsp;Es gibt <i>M</i><sup>&nbsp;</sup>&prime; = <i>M</i><sup>&nbsp;2</sup> = 3<sup>2</sup> = 9 Zweiertupel mit folgenden Wahrscheinlichkeiten:
+
'''(2)'''&nbsp; Es gibt <i>M</i><sup>&nbsp;</sup>&prime; = <i>M</i><sup>&nbsp;2</sup> = 3<sup>2</sup> = 9 Zweiertupel mit folgenden Wahrscheinlichkeiten:
  
: <i>p</i><sub>A</sub> = Pr(<b>XX</b>) <u>= 0.49</u>,&nbsp;&nbsp;&nbsp;<i>p</i><sub>B</sub> = Pr(<b>XY</b>) <u>= 0.14</u>,&nbsp;&nbsp;&nbsp; <i>p</i><sub>C</sub> = Pr(<b>XZ</b>) <u>= 0.07</u>,
+
: &nbsp; &nbsp;  <i>p</i><sub>A</sub> = Pr(<b>XX</b>) <u>= 0.49</u>,&nbsp;&nbsp;&nbsp;<i>p</i><sub>B</sub> = Pr(<b>XY</b>) <u>= 0.14</u>,&nbsp;&nbsp;&nbsp; <i>p</i><sub>C</sub> = Pr(<b>XZ</b>) <u>= 0.07</u>,
 +
: &nbsp; &nbsp;  <i>p</i><sub>D</sub> = Pr(<b>YX</b>) = 0.14,&nbsp;&nbsp;&nbsp; <i>p</i><sub>E</sub> = Pr(<b>YY</b>) = 0.04,&nbsp;&nbsp;&nbsp; <i>p</i><sub>F</sub> = Pr(<b>YZ</b>) = 0.02,
 +
: &nbsp; &nbsp;  <i>p</i><sub>G</sub> = Pr(<b>YX</b>) = 0.07,&nbsp;&nbsp;&nbsp; <i>p</i><sub>H</sub> = Pr(<b>YY</b>) = 0.02,&nbsp;&nbsp;&nbsp; <i>p</i><sub>I</sub> = Pr(<b>YZ</b>) = 0.01.
  
: <i>p</i><sub>D</sub> = Pr(<b>YX</b>) = 0.14,&nbsp;&nbsp;&nbsp; <i>p</i><sub>E</sub> = Pr(<b>YY</b>) = 0.04,&nbsp;&nbsp;&nbsp; <i>p</i><sub>F</sub> = Pr(<b>YZ</b>) = 0.02,
 
  
: <i>p</i><sub>G</sub> = Pr(<b>YX</b>) = 0.07,&nbsp;&nbsp;&nbsp; <i>p</i><sub>H</sub> = Pr(<b>YY</b>) = 0.02,&nbsp;&nbsp;&nbsp; <i>p</i><sub>I</sub> = Pr(<b>YZ</b>) = 0.01.
+
'''(3)'''&nbsp; Die Grafik zeigt den Huffman&ndash;Baum für die Anwendung mit <i>k</i> = 2.
  
<b>3.</b>&nbsp;&nbsp;Die Grafik zeigt den Huffman&ndash;Baum für die Anwendung mit <i>k</i> = 2.
 
 
[[Datei:P_ID2459__Inf_Z_2_7c.png|Huffman–Baum für Ternärquelle und Zweiertupel]]
 
[[Datei:P_ID2459__Inf_Z_2_7c.png|Huffman–Baum für Ternärquelle und Zweiertupel]]
 +
 
Damit erhält man
 
Damit erhält man
 +
* für die einzelnen Zweiertupels folgende Binärcodierungen: <br>
 +
:  &nbsp; &nbsp;  <b>XX</b> = <b>A</b> &#8594; <b>0</b>,&nbsp;&nbsp;&nbsp;<b>XY</b> = <b>B</b> &#8594; <b>111</b>,&nbsp;&nbsp;&nbsp;<b>XZ</b> = <b>C</b> &#8594; <b>1011</b>,&nbsp;&nbsp;&nbsp; <b>YX</b> = <b>D</b> &#8594; <b>110</b>,&nbsp;&nbsp;&nbsp;<b>YY</b> = <b>E</b> &#8594; <b>1000</b>, <br>
 +
:  &nbsp; &nbsp;  <b>YZ</b> = <b>F</b> &#8594; <b>10010</b>,&nbsp;&nbsp;&nbsp; <b>ZX</b> = <b>G</b> &#8594; <b>1010</b>,&nbsp;&nbsp;&nbsp;<b>ZY</b> = <b>H</b> &#8594; <b>100111</b>,&nbsp;&nbsp;&nbsp;<b>ZZ</b> = <b>I</b> &#8594; <b>100110</b> .
  
:* für die einzelnen Zweiertupels folgende Binärcodierungen: <br>
+
* für die mittlere Codewortlänge:
:  <b>XX</b> = <b>A</b> &#8594; <b>0</b>,&nbsp;&nbsp;&nbsp;<b>XY</b> = <b>B</b> &#8594; <b>111</b>,&nbsp;&nbsp;&nbsp;<b>XZ</b> = <b>C</b> &#8594; <b>1011</b>,&nbsp;&nbsp;&nbsp; <b>YX</b> = <b>D</b> &#8594; <b>110</b>,&nbsp;&nbsp;&nbsp;<b>YY</b> = <b>E</b> &#8594; <b>1000</b>, <br>
+
:$$L_{\rm M}' =0.49 \cdot 1 + (0.14 + 0.14) \cdot 3 + (0.07 + 0.04 + 0.07) \cdot 4 + 0.02 \cdot 5 + (0.02 + 0.01) \cdot 6 = 2.33\,\,{\rm bit/Zweiertupel}$$
:  <b>YZ</b> = <b>F</b> &#8594; <b>10010</b>,&nbsp;&nbsp;&nbsp; <b>ZX</b> = <b>G</b> &#8594; <b>1010</b>,&nbsp;&nbsp;&nbsp;<b>ZY</b> = <b>H</b> &#8594; <b>100111</b>,&nbsp;&nbsp;&nbsp;<b>ZZ</b> = <b>I</b> &#8594; <b>100110</b> .
 
 
 
:* für die mittlere Codewortlänge:
 
:$$L_{\rm M}' \hspace{0.2cm} = \hspace{0.2cm} 0.49 \cdot 1 + (0.14 + 0.14) \cdot 3 + (0.07 + 0.04 + 0.07) \cdot 4 + \\
 
\hspace{0.2cm} +  \hspace{0.2cm}0.02 \cdot 5 + (0.02 + 0.01) \cdot 6 = 2.33\,\,{\rm bit/Zweiertupel}$$
 
 
:$$\Rightarrow\hspace{0.3cm}L_{\rm M} = {L_{\rm M}'}/{2}\hspace{0.15cm}\underline{  = 1.165\,\,{\rm bit/Quellensymbol}}\hspace{0.05cm}.$$
 
:$$\Rightarrow\hspace{0.3cm}L_{\rm M} = {L_{\rm M}'}/{2}\hspace{0.15cm}\underline{  = 1.165\,\,{\rm bit/Quellensymbol}}\hspace{0.05cm}.$$
  
<b>4.</b>&nbsp;&nbsp;Richtig ist <u>Aussage 1</u>, auch wenn <i>L</i><sub>M</sub> mit wachsendem <i>k</i> nur sehr langsam abfällt.
+
'''(4)'''&nbsp; Richtig ist <u>Aussage 1</u>, auch wenn <i>L</i><sub>M</sub> mit wachsendem <i>k</i> nur sehr langsam abfällt.
 
+
* Die letzte Aussage ist falsch, da <i>L</i><sub>M</sub> auch für <i>k</i> &#8594; &#8734; nicht kleiner sein kann als <i>H</i> = 1.157 bit/Quellensymbol.
:* Die letzte Aussage ist falsch, da <i>L</i><sub>M</sub> auch für <i>k</i> &#8594; &#8734; nicht kleiner sein kann als <i>H</i> = 1.157 bit/Quellensymbol.
+
* Aber auch die zweite Aussage ist nicht unbedingt richtig: Da mit <i>k</i> = 2 weiterhin <i>L</i><sub>M</sub> > <i>H</i> gilt, kann <i>k</i> = 3 zu einer weiteren Verbesserung führen.
 
 
:* Aber auch die zweite Aussage ist falsch: Da mit <i>k</i> = 2 weiterhin <i>L</i><sub>M</sub> > <i>H</i> gilt, führt <i>k</i> = 3 zu einer Verbesserung.
 
 
{{ML-Fuß}}
 
{{ML-Fuß}}
  

Version vom 24. Mai 2017, 13:59 Uhr

Huffman–Baum für Ternärquelle

Wir betrachten den gleichen Sachverhalt wie in der Aufgabe A2.7: Der Huffman–Algorithmus führt zu einem besseren Ergebnis, das heißt zu einer kleineren mittleren Codewortlänge $L_{\rm M}$, wenn man ihn nicht auf einzelne Symbole anwendet, sondern vorher $k$–Tupel bildet. Dadurch erhöht man den Symbolumfang von $M$ auf $M' = M^k$.

Für die hier betrachtete Nachrichtenquelle gilt:

  • Symbolumfang: $M = 3$,
  • Symbolvorrat: $\{$X, Y, Z$\}$,
  • Wahrscheinlichkeiten: $p_{\rm X} = 0.7$, $p_{\rm Y} = 0.2$, $p_{\rm Z} = 0.1$,
  • Entropie: $H = 1.157 \ \rm bit/Ternärsymbol$.


Die Grafik zeigt den Huffman–Baum, wenn man den Huffman–Algorithmus auf Einzelsymbole anwendet, also den Fall $k= 1$. In der Teilaufgabe (2) sollen Sie den entsprechenden Huffman–Code angeben, wenn vorher Zweiertupel gebildet werden ($k=2$).


Hinweise:

  • Die Aufgabe gehört zum Kapitel Entropiecodierung nach Huffman.
  • Insbesondere wird auf die Seite Anwendung der Huffman-Codierung auf k-Tupel Bezug genommen.
  • Eine vergleichbare Aufgabenstellung mit binären Eingangssymbolen wird in der Aufgabe 2.7 behandelt.
  • Bezeichnen Sie die möglichen Zweiertupel mit     XX = A,  XY = B,  XZ = C,   YX = D,  YY = E,  YZ = F,  ZX = G,  ZY = H,  ZZ = I .
  • Sollte die Eingabe des Zahlenwertes „0” erforderlich sein, so geben Sie bitte „0.” ein.


Fragebogen

1

Wie groß ist die mittlere Codewortlänge, wenn der Huffman–Algorithmus direkt auf die ternären Quellensymbole X, Y und Z angewendet wird?

$k= 1\text{:} \hspace{0.25cm}L_{\rm M} \ = \ $

$\ \rm bit/Quellensymbol$

2

Wie groß sind die Tupel–Wahrscheinlichkeiten? Insbesondere:

$p_{\rm A} = {\rm Pr}($XX$)\ = \ $

$p_{\rm B} = {\rm Pr}($XY$)\ = \ $

$p_{\rm C} = {\rm Pr}($XZ$)\ = \ $

3

Wie groß ist die mittlere Codewortlänge, wenn man zuerst Zweiertupel bildet und darauf den Huffman–Algorithmus anwendet?

$k= 2\text{:} \hspace{0.25cm}L_{\rm M} \ = \ $

$\ \rm bit/Quellensymbol$

4

Welche der folgenden Aussagen sind zutreffend, wenn man mehr als zwei Ternärzeichen zusammenfasst ($k>2$)?

$L_{\rm M}$ fällt monoton mit steigendem $k$ ab.
$L_{\rm M} $ändert sich nicht, wenn man $k$ erhöht.
Für $k= 3$ erhält man $L_{\rm M} = 1.05 \ \rm bit/Quellensymbol$.


Musterlösung

(1)  Die mittlere Codewortlänge ergibt sich mit pX = 0.7, LX = 1, pY = 0.2, LY = 2, pZ = 0.1, LZ = 2 zu

$$L_{\rm M} = p_{\rm X} \cdot 1 + (p_{\rm Y} + p_{\rm Z}) \cdot 2 \hspace{0.15cm}\underline{= 1.3\,\,{\rm bit/Quellensymbol}}\hspace{0.05cm}. $$

Dieser Wert liegt noch deutlich über der Quellenentropie H = 1.157 bit/Quellensymbol.

(2)  Es gibt M ′ = M 2 = 32 = 9 Zweiertupel mit folgenden Wahrscheinlichkeiten:

    pA = Pr(XX) = 0.49,   pB = Pr(XY) = 0.14,    pC = Pr(XZ) = 0.07,
    pD = Pr(YX) = 0.14,    pE = Pr(YY) = 0.04,    pF = Pr(YZ) = 0.02,
    pG = Pr(YX) = 0.07,    pH = Pr(YY) = 0.02,    pI = Pr(YZ) = 0.01.


(3)  Die Grafik zeigt den Huffman–Baum für die Anwendung mit k = 2.

Huffman–Baum für Ternärquelle und Zweiertupel

Damit erhält man

  • für die einzelnen Zweiertupels folgende Binärcodierungen:
    XX = A0,   XY = B111,   XZ = C1011,    YX = D110,   YY = E1000,
    YZ = F10010,    ZX = G1010,   ZY = H100111,   ZZ = I100110 .
  • für die mittlere Codewortlänge:
$$L_{\rm M}' =0.49 \cdot 1 + (0.14 + 0.14) \cdot 3 + (0.07 + 0.04 + 0.07) \cdot 4 + 0.02 \cdot 5 + (0.02 + 0.01) \cdot 6 = 2.33\,\,{\rm bit/Zweiertupel}$$
$$\Rightarrow\hspace{0.3cm}L_{\rm M} = {L_{\rm M}'}/{2}\hspace{0.15cm}\underline{ = 1.165\,\,{\rm bit/Quellensymbol}}\hspace{0.05cm}.$$

(4)  Richtig ist Aussage 1, auch wenn LM mit wachsendem k nur sehr langsam abfällt.

  • Die letzte Aussage ist falsch, da LM auch für k → ∞ nicht kleiner sein kann als H = 1.157 bit/Quellensymbol.
  • Aber auch die zweite Aussage ist nicht unbedingt richtig: Da mit k = 2 weiterhin LM > H gilt, kann k = 3 zu einer weiteren Verbesserung führen.