Difference between revisions of "Aufgaben:Exercise 2.10: Shannon-Fano Coding"

From LNTwww
Line 3: Line 3:
 
}}
 
}}
  
[[File:P_ID2465__Inf_A_2_10.png |right|frame|Baumdiagramm der <br>Shannon–Fano–Codierung]]
+
[[File:P_ID2465__Inf_A_2_10.png |right|frame|Baumdiagramm der <br>Shannon-Fano coding]]
Ein weiterer Algorithmus zur Entropiecodierung wurde 1949 von&nbsp; [https://de.wikipedia.org/wiki/Claude_Shannon Claude Elwood Shannon]&nbsp; und&nbsp; [https://de.wikipedia.org/wiki/Robert_Fano Robert Fano]&nbsp; angegeben, der im Theorieteil beschrieben ist.
+
Another algorithm for entropy coding was given in 1949 by&nbsp; [https://en.wikipedia.org/wiki/Claude_Shannon Claude Elwood Shannon]&nbsp; and&nbsp; [https://en.wikipedia.org/wiki/Robert_Fano Robert Fano]&nbsp;, which is described in the theory section.
  
Diese spezielle Art von Quellencodierung soll hier an einem einfachen Beispiel für den Symbolumfang&nbsp; $M = 4$&nbsp; und die folgenden Symbolwahrscheinlichkeiten beschrieben werden:
+
This special type of source coding will be described here using a simple example for the symbol range&nbsp; $M = 4$&nbsp; and the following symbol probabilities:
  
 
:$$p_{\rm A} = 0.2 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm B}= 0.3 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm C}= 0.4 \hspace{0.05cm},\hspace{0.4cm}
 
:$$p_{\rm A} = 0.2 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm B}= 0.3 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm C}= 0.4 \hspace{0.05cm},\hspace{0.4cm}
 
p_{\rm D}= 0.1 \hspace{0.05cm}. $$
 
p_{\rm D}= 0.1 \hspace{0.05cm}. $$
  
Die Grafik zeigt das dazugehörige Baumdiagramm.&nbsp; Man geht folgendermaßen vor:
+
The graph shows the corresponding tree diagram.&nbsp; Proceed as follows:
  
:1. Man ordnet die Symbole nach fallender Auftrittswahrscheinlichkeit, hier&nbsp; $\rm C$ &ndash; $\rm B$ &ndash; $\rm A$ &ndash; $\rm D$.
+
:1. Order the symbols according to decreasing probability of occurrence, here&nbsp; $\rm C$ &ndash; $\rm B$ &ndash; $\rm A$ &ndash; $\rm D$.
  
:2. Man teilt die Symbole in zwei etwa gleichwahrscheinliche Gruppen ein, hier&nbsp; $\rm C$&nbsp; und&nbsp; $\rm BAD$.
+
:2. Divide the symbols into two groups of approximately equal probability, here&nbsp; $\rm C$&nbsp; and&nbsp; $\rm BAD$.
  
:3. Der unwahrscheinlicheren Gruppe wird das Binärsymbol&nbsp; <b>0</b>, der anderen Gruppe  die&nbsp; <b>1</b>&nbsp; zugeordnet.
+
:3. The binary symbol&nbsp; <b>0</b>is assigned to the less probable group,&nbsp; <b>1</b>&nbsp; to the other group.
  
:4. Sind in einer Gruppe mehr als ein Zeichen, so ist der Algorithmus rekursiv anzuwenden.
+
:4. If there is more than one symbol in a group, the algorithm is to be applied recursively.
  
Für dieses Beispiel ergibt sich die folgende Codezuordnung (im Baumdiagramm markiert eine rote Verbindung eine&nbsp; <b>1</b>&nbsp; und eine blaue eine&nbsp; <b>0</b>:
+
For this example, the following code assignment results (in the tree diagram, a red connection marks a&nbsp; <b>1</b>&nbsp; and a blue one a&nbsp; <b>0</b>:
  
 
: &nbsp; &nbsp; &nbsp; $\rm A$ &nbsp; &#8594; &nbsp; <b>111</b>, &nbsp; &nbsp; $\rm B$ &nbsp; &#8594; &nbsp; <b>10</b>, &nbsp; &nbsp; $\rm C$ &nbsp; &#8594; &nbsp; <b>0</b>, &nbsp; &nbsp; $\rm D$ &nbsp; &#8594; &nbsp; <b>110</b>.
 
: &nbsp; &nbsp; &nbsp; $\rm A$ &nbsp; &#8594; &nbsp; <b>111</b>, &nbsp; &nbsp; $\rm B$ &nbsp; &#8594; &nbsp; <b>10</b>, &nbsp; &nbsp; $\rm C$ &nbsp; &#8594; &nbsp; <b>0</b>, &nbsp; &nbsp; $\rm D$ &nbsp; &#8594; &nbsp; <b>110</b>.
  
Damit ergibt sich für die mittlere Codewortlänge:
+
This gives the following for the mean codeword length:
:$$L_{\rm M} = 0.4 \cdot 1 + 0.3 \cdot 2 + (0.2 + 0.1) \cdot 3 = 1.9\,\,{\rm bit/Quellensymbol}\hspace{0.05cm}.$$
+
:$$L_{\rm M} = 0.4 \cdot 1 + 0.3 \cdot 2 + (0.2 + 0.1) \cdot 3 = 1.9\,\,{\rm bit/source\:symbol}\hspace{0.05cm}.$$
  
Der Huffman-Algorithmus würde hier zwar einen geringfügig anderen Code erzeugen, aber auch bei diesem würde&nbsp;  
+
The Huffman algorithm would produce a slightly different code here, but even in this case&nbsp;  
*$\rm C$&nbsp; mit einem Bit,&nbsp;  
+
*$\rm C$&nbsp; is coded with one bit,&nbsp;  
*$\rm B$&nbsp; mit zwei Bit und&nbsp;  
+
*$\rm B$&nbsp; with two bits and &nbsp;  
*$\rm A$ und&nbsp; $\rm D$&nbsp; mit jeweils drei Bit&nbsp;  
+
*$\rm A$ and&nbsp; $\rm D$&nbsp; with three bits each.&nbsp;  
  
  
codiert.&nbsp; Damit ergäbe sich ebenfalls&nbsp; $L_{\rm M} = 1.9 \ \rm bit/Quellensymbol$.
+
&nbsp; This would also result in&nbsp; $L_{\rm M} = 1.9 \ \rm bit/source\:symbol$.
  
In dieser Aufgabe sollen Sie den Shannon&ndash;Fano&ndash;Code für&nbsp; $M = 8$&nbsp; und die Wahrscheinlichkeiten
+
In this task you are to calculate the Shannon-Fano code for&nbsp; $M = 8$&nbsp; and the probabilities
 
:$$p_{\rm A} = 0.10 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm B}= 0.40 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm C}= 0.02 \hspace{0.05cm},\hspace{0.4cm} p_{\rm D}= 0.14 \hspace{0.05cm},\hspace{0.4cm}  
 
:$$p_{\rm A} = 0.10 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm B}= 0.40 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm C}= 0.02 \hspace{0.05cm},\hspace{0.4cm} p_{\rm D}= 0.14 \hspace{0.05cm},\hspace{0.4cm}  
 
p_{\rm E} = 0.17 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm F}= 0.03 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm G}= 0.05 \hspace{0.05cm},\hspace{0.4cm}p_{\rm H}= 0.09$$
 
p_{\rm E} = 0.17 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm F}= 0.03 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm G}= 0.05 \hspace{0.05cm},\hspace{0.4cm}p_{\rm H}= 0.09$$
ermitteln.&nbsp; Sie werden erkennen, dass sich mit diesen Wahrscheinlichkeiten "Shannon&ndash;Fano" auch hinsichtlich der Effizienz von "Huffman" unterscheiden wird.&nbsp;  
+
determine.&nbsp; You will see that with these probabilities "Shannon-Fano" will also differ from "Huffman" in terms of efficiency.&nbsp;  
  
Beim Huffman&ndash;Code ergibt sich mit den vorliegenden Wahrscheinlichkeiten die folgende Zuordnung:
+
With the Huffman code, the following assignment results with the probabilities at hand:
  
 
: &nbsp; &nbsp; &nbsp; $\rm A$ &nbsp; &#8594; &nbsp; <b>100</b>, &nbsp; &nbsp;  $\rm B$ &nbsp; &#8594; &nbsp; <b>0</b>, &nbsp; &nbsp;  $\rm C$ &nbsp; &#8594; &nbsp; <b>111100</b>, &nbsp; &nbsp; $\rm D$ &nbsp; &#8594; &nbsp; <b>101</b>, &nbsp; &nbsp; $\rm E$ &nbsp; &#8594; &nbsp; <b>110</b>,  &nbsp; &nbsp; $\rm F$ &nbsp; &#8594; &nbsp; <b>111101</b>, &nbsp; &nbsp; $\rm G$ &nbsp; &#8594; &nbsp; <b>11111</b>, &nbsp; &nbsp; $\rm H$ &nbsp; &#8594; &nbsp; <b>1110</b>.
 
: &nbsp; &nbsp; &nbsp; $\rm A$ &nbsp; &#8594; &nbsp; <b>100</b>, &nbsp; &nbsp;  $\rm B$ &nbsp; &#8594; &nbsp; <b>0</b>, &nbsp; &nbsp;  $\rm C$ &nbsp; &#8594; &nbsp; <b>111100</b>, &nbsp; &nbsp; $\rm D$ &nbsp; &#8594; &nbsp; <b>101</b>, &nbsp; &nbsp; $\rm E$ &nbsp; &#8594; &nbsp; <b>110</b>,  &nbsp; &nbsp; $\rm F$ &nbsp; &#8594; &nbsp; <b>111101</b>, &nbsp; &nbsp; $\rm G$ &nbsp; &#8594; &nbsp; <b>11111</b>, &nbsp; &nbsp; $\rm H$ &nbsp; &#8594; &nbsp; <b>1110</b>.
Line 54: Line 54:
  
  
''Hinweise:''  
+
''Hints:''  
*Die Aufgabe gehört zum  Kapitel&nbsp; [[Information_Theory/Weitere_Quellencodierverfahren|Weitere Quellencodierverfahren]].
+
*The assignment belongs to the chapter&nbsp; [[Information_Theory/Weitere_Quellencodierverfahren|Other source coding methods]].
*Insbesondere wird  Bezug genommen auf die Seite&nbsp; [[Information_Theory/Weitere_Quellencodierverfahren#Der_Shannon.E2.80.93Fano.E2.80.93Algorithmus|Der Shannon-Fano-Algorithmus]].
+
*In particular, reference is made to the page&nbsp; [[Information_Theory/Weitere_Quellencodierverfahren#The_Shannon-Fano_algorithm|The Shannon-Fano algorithm]].
*Zur Kontrolle Ihrer Ergebnisse verweisen wir auf das interaktive Applet&nbsp; [[Applets:Huffman-_und_Shannon-Fano-Codierung|Huffman&ndash; und Shannon&ndash;Fano&ndash;Codierung]].
+
*To check your results, please refer to the interactive applet&nbsp; [[Applets:Huffman-_und_Shannon-Fano-Codierung|Huffman and Shannon-Fano coding]].
 
   
 
   
  
  
  
===Fragebogen===
+
===Questions===
  
 
<quiz display=simple>
 
<quiz display=simple>

Revision as of 11:40, 6 August 2021

Baumdiagramm der
Shannon-Fano coding

Another algorithm for entropy coding was given in 1949 by  Claude Elwood Shannon  and  Robert Fano , which is described in the theory section.

This special type of source coding will be described here using a simple example for the symbol range  $M = 4$  and the following symbol probabilities:

$$p_{\rm A} = 0.2 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm B}= 0.3 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm C}= 0.4 \hspace{0.05cm},\hspace{0.4cm} p_{\rm D}= 0.1 \hspace{0.05cm}. $$

The graph shows the corresponding tree diagram.  Proceed as follows:

1. Order the symbols according to decreasing probability of occurrence, here  $\rm C$ – $\rm B$ – $\rm A$ – $\rm D$.
2. Divide the symbols into two groups of approximately equal probability, here  $\rm C$  and  $\rm BAD$.
3. The binary symbol  0is assigned to the less probable group,  1  to the other group.
4. If there is more than one symbol in a group, the algorithm is to be applied recursively.

For this example, the following code assignment results (in the tree diagram, a red connection marks a  1  and a blue one a  0:

      $\rm A$   →   111,     $\rm B$   →   10,     $\rm C$   →   0,     $\rm D$   →   110.

This gives the following for the mean codeword length:

$$L_{\rm M} = 0.4 \cdot 1 + 0.3 \cdot 2 + (0.2 + 0.1) \cdot 3 = 1.9\,\,{\rm bit/source\:symbol}\hspace{0.05cm}.$$

The Huffman algorithm would produce a slightly different code here, but even in this case 

  • $\rm C$  is coded with one bit, 
  • $\rm B$  with two bits and  
  • $\rm A$ and  $\rm D$  with three bits each. 


  This would also result in  $L_{\rm M} = 1.9 \ \rm bit/source\:symbol$.

In this task you are to calculate the Shannon-Fano code for  $M = 8$  and the probabilities

$$p_{\rm A} = 0.10 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm B}= 0.40 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm C}= 0.02 \hspace{0.05cm},\hspace{0.4cm} p_{\rm D}= 0.14 \hspace{0.05cm},\hspace{0.4cm} p_{\rm E} = 0.17 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm F}= 0.03 \hspace{0.05cm}, \hspace{0.4cm}p_{\rm G}= 0.05 \hspace{0.05cm},\hspace{0.4cm}p_{\rm H}= 0.09$$

determine.  You will see that with these probabilities "Shannon-Fano" will also differ from "Huffman" in terms of efficiency. 

With the Huffman code, the following assignment results with the probabilities at hand:

      $\rm A$   →   100,     $\rm B$   →   0,     $\rm C$   →   111100,     $\rm D$   →   101,     $\rm E$   →   110,     $\rm F$   →   111101,     $\rm G$   →   11111,     $\rm H$   →   1110.






Hints:



Questions

1

Wie groß ist die mittlere Codewortlänge  $L_{\rm M}$  beim  Huffman–Code?

$L_{\rm M}\ = \ $

$\ \rm bit/Quellensymbol$

2

Was geschieht im ersten Schritt der  Shannon–Fano–CodierungHinweis:  Alle anderen Symbole werden in der zweiten Gruppe zusammengefasst.

Man fasst  $\rm A$  und  $\rm B$  zur ersten Gruppe zusammen.
Man fasst  $\rm B$  und  $\rm E$  zur ersten Gruppe zusammen.
Die erste Gruppe besteht nur aus dem Symbol  $\rm B$.

3

Welche Zuordnungen ergeben sich für den  Shannon–Fano–Algorithmus?

Das Zeichen  $\rm A$  wird binär mit  010  codiert.
Das Zeichen  $\rm B$  wird binär mit  11  codiert.
Das Zeichen  $\rm C$  wird binär mit  00110  codiert.

4

Wie groß ist die mittlere Codewortlänge  $L_{\rm M}$  beim  Shannon–Fano–Code?

$L_{\rm M}\ = \ $

$\ \rm bit/Quellensymbol$

5

Welche Aussagen gelten für beliebige Wahrscheinlichkeiten?

$L_{\rm M}$  könnte bei "Shannon–Fano" kleiner sein als bei "Huffman".
$L_{\rm M}$  könnte bei "Shannon–Fano" größer sein als bei "Huffman".
$L_{\rm M}$  könnte bei "Shannon–Fano" und "Huffman" gleich groß sein.


Musterlösung

(1)  Für den angegebenen Huffman–Code erhält man:

$$L_{\rm M} = 0.4 \cdot 1 + (0.17 + 0.14 + 0.10) \cdot 3 + 0.09 \cdot 4 + 0.05 \cdot 5 + (0.03 + 0.02) \cdot 6 =\underline{ 2.54 \,\,{\rm bit/Quellensymbol}}\hspace{0.05cm}. $$


(2)  Richtig ist die Antwort 2:

  • Vor Anwendung des Shannon–Fano–Algorithmus müssen die Zeichen erst nach ihren Auftrittswahrscheinlichkeiten sortiert werden.  Damit ist die Antwort 1 falsch.
  • Alle sortierten Zeichen müssen so in zwei Gruppen eingeteilt werden, dass die Gruppenwahrscheinlichkeiten möglichst gleich sind. Für den ersten Schritt:
$${\rm Pr}(\boldsymbol{\rm BE}) = 0.57\hspace{0.05cm}, \hspace{0.2cm}{\rm Pr}(\boldsymbol{\rm DAHGFC}) = 0.43 \hspace{0.05cm}.$$
Baumdiagramm der Shannon–Fano–Codierung
  • Bei der Aufteilung gemäß Lösungsvorschlag 3 würde die Gleichverteilung noch weniger erreicht:
$${\rm Pr}(\boldsymbol{\rm B}) = 0.40\hspace{0.05cm}, \hspace{0.2cm}{\rm Pr}(\boldsymbol{\rm EDAHGFC}) = 0.60 \hspace{0.05cm}.$$



(3)  Alle Lösungsvorschläge sind richtig:

  • Die Grafik zeigt das Baumdiagramm der Shannon–Fano–Codierung.
  • Daraus ergibt sich folgende Zuordnung (eine rote Verbindung weist auf eine  1  hin, eine blaue auf eine  0):
$\underline{\rm A}$   →   010,     $\underline{\rm B}$   →   11,     $\underline{\rm C}$   →   00110,
${\rm D}$   →   011,     ${\rm E}$   →   10,     ${\rm F}$   →   00111,     ${\rm G}$   →   0010,     ${\rm H}$   →   000.


(4)  Mit dem Ergebnis der Teilaufgabe  (3)  erhält man:

$$L_{\rm M}= (0.40 + 0.17) \cdot 2 + (0.14 + 0.10 + 0.09) \cdot 3 + 0.05 \cdot 4 + (0.03 + 0.02) \cdot 5 =\underline{ 2.58 \,\,{\rm bit/Quellensymbol}}\hspace{0.05cm}. $$


(5)  Richtig sind die Aussagen 2 und 3:

  • Im vorliegenden Beispiel ergibt sich bei Shannon–Fano ein ungünstigerer Wert als bei Huffman.
  • In den meisten Fällen – so auch im Beispiel auf der Angabenseite – ergibt sich für Huffman und Shannon–Fano ein gleichwertiger Code und damit auch die gleiche mittlere Codewortlänge.
  • Einen effektiveren Code als Huffman liefert Shannon–Fano dagegen nie.