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

From LNTwww
Noah (talk | contribs)
No edit summary
Noah (talk | contribs)
No edit summary
Line 3: Line 3:
}}
}}


[[File:P_ID2465__Inf_A_2_10.png |right|frame|Baumdiagramm der <br>Shannon-Fano coding]]
[[File:P_ID2465__Inf_A_2_10.png |right|frame|Tree diagram of the <br>Shannon-Fano coding]]
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.
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.


Line 65: Line 65:


<quiz display=simple>
<quiz display=simple>
{Wie groß ist die mittlere Codewortlänge&nbsp; $L_{\rm M}$&nbsp; beim&nbsp; <u>Huffman&ndash;Code</u>?
{What is the mean codeword length&nbsp; $L_{\rm M}$&nbsp; for the&nbsp; <u>Huffman code</u>?
|type="{}"}
|type="{}"}
$L_{\rm M}\ = \ $ { 2.54 3% } $\ \rm bit/Quellensymbol$
$L_{\rm M}\ = \ $ { 2.54 3% } $\ \rm bit/source\:symbol$




{Was geschieht im ersten Schritt der&nbsp; <u>Shannon&ndash;Fano&ndash;Codierung</u>?&nbsp; ''Hinweis'':&nbsp; Alle anderen Symbole werden in der zweiten Gruppe zusammengefasst.
{What happens in the first step of&nbsp; <u>Shannon&ndash;Fano coding</u>?&nbsp; ''Hint'':&nbsp; All other symbols are grouped together in the second group.
|type="[]"}
|type="[]"}
- Man fasst&nbsp; $\rm A$&nbsp; und&nbsp; $\rm B$&nbsp; zur ersten Gruppe zusammen.
- &nbsp; $\rm A$&nbsp; and&nbsp; $\rm B$&nbsp; are combined into the first group.
+ Man fasst&nbsp; $\rm B$&nbsp; und&nbsp; $\rm E$&nbsp; zur ersten Gruppe zusammen.
+ &nbsp; $\rm B$&nbsp; and&nbsp; $\rm E$&nbsp; are combined into the first group.
- Die erste Gruppe besteht nur aus dem Symbol&nbsp; $\rm B$.
- The first group consists only of symbol&nbsp; $\rm B$.




{Welche Zuordnungen ergeben sich für den&nbsp; <u>Shannon&ndash;Fano&ndash;Algorithmus</u>?
{Which assignments result for the&nbsp; <u>Shannon&ndash;Fano algorithm</u>?
|type="[]"}
|type="[]"}
+ Das Zeichen&nbsp; $\rm A$&nbsp; wird binär mit&nbsp; <b>010</b>&nbsp; codiert.
+ The character&nbsp; $\rm A$&nbsp; is binary coded with&nbsp; <b>010</b>&nbsp;.
+ Das Zeichen&nbsp; $\rm B$&nbsp; wird binär mit&nbsp; <b>11</b>&nbsp; codiert.
+ The character&nbsp; $\rm B$&nbsp; is binary coded with&nbsp; <b>11</b>&nbsp;.
+ Das Zeichen&nbsp; $\rm C$&nbsp; wird binär mit&nbsp; <b>00110</b>&nbsp; codiert.
+ The character&nbsp; $\rm C$&nbsp; is binary coded with&nbsp; <b>00110</b>&nbsp;.




{Wie groß ist die mittlere Codewortlänge&nbsp; $L_{\rm M}$&nbsp; beim&nbsp; <u>Shannon&ndash;Fano&ndash;Code</u>?
{What is the average codeword length&nbsp; $L_{\rm M}$&nbsp; for&nbsp; <u>Shannon&ndash;Fano code</u>?
|type="{}"}
|type="{}"}
$L_{\rm M}\ = \ $ { 2.58 3% } $\ \rm bit/Quellensymbol$
$L_{\rm M}\ = \ $ { 2.58 3% } $\ \rm bit/source\:symbol$




{Welche Aussagen gelten für beliebige Wahrscheinlichkeiten?
{Which statements are true for arbitrary probabilities?
|type="[]"}
|type="[]"}
- $L_{\rm M}$&nbsp; könnte bei "Shannon&ndash;Fano" kleiner sein als bei "Huffman".
- $L_{\rm M}$&nbsp; could be smaller for "Shannon&ndash;Fano" than for "Huffman".
+ $L_{\rm M}$&nbsp; könnte bei "Shannon&ndash;Fano" größer sein als bei "Huffman".
+ $L_{\rm M}$&nbsp; could be larger at "Shannon&ndash;Fano" than at "Huffman".
+ $L_{\rm M}$&nbsp; könnte bei "Shannon&ndash;Fano" und "Huffman" gleich groß sein.
+ $L_{\rm M}$&nbsp; could be the same for "Shannon&ndash;Fano" and "Huffman".




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


===Musterlösung===
===Solution===
{{ML-Kopf}}
{{ML-Kopf}}
'''(1)'''&nbsp; Für den angegebenen Huffman&ndash;Code erhält man:
'''(1)'''&nbsp; For the given Huffman code one obtains:
:$$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}. $$
:$$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/source\:symbol}}\hspace{0.05cm}. $$






'''(2)'''&nbsp; Richtig ist die <u>Antwort 2</u>:
'''(2)'''&nbsp; The correct <u>answer is 2</u>:
*Vor Anwendung des Shannon&ndash;Fano&ndash;Algorithmus müssen die Zeichen erst nach ihren Auftrittswahrscheinlichkeiten sortiert werden.&nbsp; Damit ist die Antwort 1 falsch.
*Before applying the Shannon-Fano algorithm, the characters must first be sorted according to their occurrence probabilities.&nbsp; Thus, answer 1 is incorrect.
*Alle sortierten Zeichen müssen so in zwei Gruppen eingeteilt werden, dass die Gruppenwahrscheinlichkeiten möglichst gleich sind. Für den ersten Schritt:
*All sorted characters must be divided into two groups in such a way that the group probabilities are as equal as possible. For the first step:


:$${\rm Pr}(\boldsymbol{\rm BE})  = 0.57\hspace{0.05cm}, \hspace{0.2cm}{\rm Pr}(\boldsymbol{\rm DAHGFC})  = 0.43  \hspace{0.05cm}.$$
:$${\rm Pr}(\boldsymbol{\rm BE})  = 0.57\hspace{0.05cm}, \hspace{0.2cm}{\rm Pr}(\boldsymbol{\rm DAHGFC})  = 0.43  \hspace{0.05cm}.$$
[[File:P_ID2466__Inf_A_2_10c.png|right|frame|Baumdiagramm der Shannon–Fano–Codierung]]
[[File:P_ID2466__Inf_A_2_10c.png|right|frame|Tree diagram of Shannon-Fano coding]]
*Bei der Aufteilung gemäß Lösungsvorschlag 3 würde die Gleichverteilung noch weniger erreicht:
*With the distribution according to solution suggestion 3, the equal distribution would be achieved even less:
:$${\rm Pr}(\boldsymbol{\rm B})  = 0.40\hspace{0.05cm}, \hspace{0.2cm}{\rm Pr}(\boldsymbol{\rm EDAHGFC})  = 0.60  \hspace{0.05cm}.$$
:$${\rm Pr}(\boldsymbol{\rm B})  = 0.40\hspace{0.05cm}, \hspace{0.2cm}{\rm Pr}(\boldsymbol{\rm EDAHGFC})  = 0.60  \hspace{0.05cm}.$$


Line 118: Line 118:




'''(3)'''&nbsp; <u>Alle Lösungsvorschläge</u> sind richtig:
'''(3)'''&nbsp; <u>All suggeted solutionss</u> are correct:
*Die Grafik zeigt das Baumdiagramm der Shannon&ndash;Fano&ndash;Codierung.  
*The graph shows the tree diagram of the Shannon-Fano coding.
*Daraus ergibt sich folgende Zuordnung (eine rote Verbindung weist auf eine&nbsp; <b>1</b>&nbsp; hin, eine blaue auf eine&nbsp; <b>0</b>):
*This results in the following assignment (a red connection indicates a&nbsp; <b>1</b>&nbsp;, a blue one indicates a&nbsp; <b>0</b>):
: $\underline{\rm A}$ &nbsp; &#8594; &nbsp; <u><b>010</b></u>, &nbsp; &nbsp;  $\underline{\rm B}$ &nbsp; &#8594; &nbsp; <u><b>11</b></u>, &nbsp; &nbsp;  $\underline{\rm C}$ &nbsp; &#8594; &nbsp; <u><b>00110</b></u>,  
: $\underline{\rm A}$ &nbsp; &#8594; &nbsp; <u><b>010</b></u>, &nbsp; &nbsp;  $\underline{\rm B}$ &nbsp; &#8594; &nbsp; <u><b>11</b></u>, &nbsp; &nbsp;  $\underline{\rm C}$ &nbsp; &#8594; &nbsp; <u><b>00110</b></u>,  
: ${\rm D}$ &nbsp; &#8594; &nbsp; <b>011</b>, &nbsp; &nbsp; ${\rm E}$ &nbsp; &#8594; &nbsp; <b>10</b>, &nbsp; &nbsp; ${\rm F}$ &nbsp; &#8594; &nbsp; <b>00111</b>, &nbsp; &nbsp; ${\rm G}$ &nbsp; &#8594; &nbsp; <b>0010</b>, &nbsp; &nbsp; ${\rm H}$ &nbsp; &#8594; &nbsp; <b>000</b>.
: ${\rm D}$ &nbsp; &#8594; &nbsp; <b>011</b>, &nbsp; &nbsp; ${\rm E}$ &nbsp; &#8594; &nbsp; <b>10</b>, &nbsp; &nbsp; ${\rm F}$ &nbsp; &#8594; &nbsp; <b>00111</b>, &nbsp; &nbsp; ${\rm G}$ &nbsp; &#8594; &nbsp; <b>0010</b>, &nbsp; &nbsp; ${\rm H}$ &nbsp; &#8594; &nbsp; <b>000</b>.
Line 126: Line 126:




'''(4)'''&nbsp; Mit dem Ergebnis der Teilaufgabe&nbsp; '''(3)'''&nbsp; erhält man:
'''(4)'''&nbsp; Using the result of sub-task&nbsp; '''(3)'''&nbsp;, we get:
:$$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}. $$
:$$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/source\:symbol}}\hspace{0.05cm}. $$






'''(5)'''&nbsp; Richtig sind die <u>Aussagen 2 und 3</u>:
'''(5)'''&nbsp; <u>Statements 2 and 3</u> are correct:
*Im vorliegenden Beispiel ergibt sich bei Shannon&ndash;Fano ein ungünstigerer Wert als bei Huffman.  
*In the present example, Shannon-Fano results in a less favourable value than Huffman.
*In den meisten Fällen &ndash; so auch im Beispiel auf der Angabenseite &ndash; ergibt sich für Huffman und Shannon&ndash;Fano ein gleichwertiger Code und damit auch die gleiche mittlere Codewortlänge.  
*In most cases &ndash; including the example on the information page &ndash; Huffman and Shannon-Fano result in an equivalent code and thus also the same average code word length.
*Einen effektiveren Code als Huffman liefert Shannon&ndash;Fano dagegen nie.
*Shannon-Fano, on the other hand, never delivers a more effective code than Huffman.
{{ML-Fuß}}
{{ML-Fuß}}



Revision as of 15:44, 6 August 2021

Tree diagram of the
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 What is the mean codeword length  $L_{\rm M}$  for the  Huffman code?

$L_{\rm M}\ = \ $ $\ \rm bit/source\:symbol$

2 What happens in the first step of  Shannon–Fano codingHint:  All other symbols are grouped together in the second group.

  $\rm A$  and  $\rm B$  are combined into the first group.
  $\rm B$  and  $\rm E$  are combined into the first group.
The first group consists only of symbol  $\rm B$.

3 Which assignments result for the  Shannon–Fano algorithm?

The character  $\rm A$  is binary coded with  010 .
The character  $\rm B$  is binary coded with  11 .
The character  $\rm C$  is binary coded with  00110 .

4 What is the average codeword length  $L_{\rm M}$  for  Shannon–Fano code?

$L_{\rm M}\ = \ $ $\ \rm bit/source\:symbol$

5 Which statements are true for arbitrary probabilities?

$L_{\rm M}$  could be smaller for "Shannon–Fano" than for "Huffman".
$L_{\rm M}$  could be larger at "Shannon–Fano" than at "Huffman".
$L_{\rm M}$  could be the same for "Shannon–Fano" and "Huffman".


Solution

(1)  For the given Huffman code one obtains:

$$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/source\:symbol}}\hspace{0.05cm}. $$


(2)  The correct answer is 2:

  • Before applying the Shannon-Fano algorithm, the characters must first be sorted according to their occurrence probabilities.  Thus, answer 1 is incorrect.
  • All sorted characters must be divided into two groups in such a way that the group probabilities are as equal as possible. For the first step:
$${\rm Pr}(\boldsymbol{\rm BE}) = 0.57\hspace{0.05cm}, \hspace{0.2cm}{\rm Pr}(\boldsymbol{\rm DAHGFC}) = 0.43 \hspace{0.05cm}.$$
Tree diagram of Shannon-Fano coding
  • With the distribution according to solution suggestion 3, the equal distribution would be achieved even less:
$${\rm Pr}(\boldsymbol{\rm B}) = 0.40\hspace{0.05cm}, \hspace{0.2cm}{\rm Pr}(\boldsymbol{\rm EDAHGFC}) = 0.60 \hspace{0.05cm}.$$



(3)  All suggeted solutionss are correct:

  • The graph shows the tree diagram of the Shannon-Fano coding.
  • This results in the following assignment (a red connection indicates a  1 , a blue one indicates a  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)  Using the result of sub-task  (3) , we get:

$$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/source\:symbol}}\hspace{0.05cm}. $$


(5)  Statements 2 and 3 are correct:

  • In the present example, Shannon-Fano results in a less favourable value than Huffman.
  • In most cases – including the example on the information page – Huffman and Shannon-Fano result in an equivalent code and thus also the same average code word length.
  • Shannon-Fano, on the other hand, never delivers a more effective code than Huffman.