Informationstheorie/Entropiecodierung nach Huffman: Unterschied zwischen den Versionen

Aus LNTwww
Wechseln zu:Navigation, Suche
(Die Seite wurde neu angelegt: „ {{Header |Untermenü=Quellencodierung – Datenkomprimierung |Vorherige Seite=Komprimierung nach Lempel, Ziv und Welch |Nächste Seite=Weitere Quellencodierv…“)
 
Zeile 6: Zeile 6:
 
}}
 
}}
  
==Der Huffman–Algorithmus==
+
==Der Huffman–Algorithmus==
 +
 
 +
Wir setzen nun voraus, dass die Quellensymbole qν einem Alphabet $\{q_μ\}$ = {'''A''', '''B''', '''C''', ...} mit dem Symbolumfang M entstammen und statistisch voneinander unabhängig seien.
 +
Beispielsweise gelte für den Symbolumfang $M$ = 8:
 +
 +
David A. Huffman hat 1952 – also kurz nach Shannons bahnbrechenden Veröffentlichungen – einen Algorithmus zur Konstruktion von optimalen präfixfreien Codes angegeben.
 +
Dieser ''Huffman–Algorithmus'' soll hier ohne Herleitung und Beweis angegeben werden, wobei wir uns hier auf Binärcodes beschränken. Das heißt: Für die Codesymbole gelte stets $c_ν$ ∈ {'''0''', '''1'''}. Hier ist das Rezept:
 +
*Man ordne die Symbole nach fallenden Auftrittswahrscheinlichkeiten.
 +
*Man fasse die zwei unwahrscheinlichsten Symbole zu einem neuen Symbol zusammen.
 +
*Man wiederhole (1) und (2), bis nur mehr zwei (zusammengefasste) Symbole übrig bleiben.
 +
*Man codiert die wahrscheinlichere Symbolmenge mit '''1''' und die andere Menge mit '''0'''.
 +
*Man ergänzt in Gegenrichtung (also von unten nach oben) die jeweiligen Binärcodes der aufgespaltenen Teilmengen entsprechend den Wahrscheinlichkeiten mit '''1''' bzw. '''0'''.
 +
 
 +
 
 +
{{Beispiel}}
 +
Ohne Einschränkung der Allgemeingültigkeit setzen wir voraus, dass die $M$ = 6 Symbole '''A''', ... , '''F'''  bereits entsprechend ihren Wahrscheinlichkeiten geordnet sind:
 +
 +
Durch paarweises Zusammenfassen und anschießendem Sortieren erhält man in fünf Schritten die folgenden Symbolkombinationen (resultierende Wahrscheinlichkeiten in Klammern):
 +
:1. '''A''' (0.30), '''B''' (0.24), '''C''' (0.20), '''EF''' (0.14), '''D''' (0.12),
 +
:2. '''A''' (0.30), '''EFD''' (0.26), '''B''' (0.24), '''C''' (0.20),
 +
:3. '''BC''' (0.44), '''A''' (0.30), '''EFD''' (0.26),
 +
:4. '''AEFD''' (0.56), '''BC''' (0.44),
 +
:5. Root '''AEFDBC''' (1.00).
 +
Rückwärts (gemäß den Schritten 5 bis 1) erfolgt dann die Zuordnung zu Binärsymbolen. Ein „x” weist darauf hin, dass in den nächsten Schritten noch Bits hinzugefügt werden müssen:
 +
:5. '''AEFD → 1'''x,  '''BC → 0'''x,
 +
:4. '''<u>A → 11</u>''',  '''EFD → 10'''x,
 +
:3. '''<u>B →  01</u>''', '''<u>C → 00</u>''',
 +
:2. '''EF → 101'''x,  '''<u>D → 100</u>''',
 +
:1. '''<u>E → 1011</u>''',  '''<u>F → 1010</u>'''.
 +
Die Unterstreichungen markieren die endgültige Binärcodierung.
 +
 
 +
{{end}}
 +
 
 +
 
 +
 
==Zum Begriff „Entropiecodierung”==   
 
==Zum Begriff „Entropiecodierung”==   
 
==Darstellung des Huffman–Codes als Baumdiagramm==   
 
==Darstellung des Huffman–Codes als Baumdiagramm==   

Version vom 14. Mai 2016, 23:02 Uhr

Der Huffman–Algorithmus

Wir setzen nun voraus, dass die Quellensymbole qν einem Alphabet $\{q_μ\}$ = {A, B, C, ...} mit dem Symbolumfang M entstammen und statistisch voneinander unabhängig seien. Beispielsweise gelte für den Symbolumfang $M$ = 8:

David A. Huffman hat 1952 – also kurz nach Shannons bahnbrechenden Veröffentlichungen – einen Algorithmus zur Konstruktion von optimalen präfixfreien Codes angegeben. Dieser Huffman–Algorithmus soll hier ohne Herleitung und Beweis angegeben werden, wobei wir uns hier auf Binärcodes beschränken. Das heißt: Für die Codesymbole gelte stets $c_ν$ ∈ {0, 1}. Hier ist das Rezept:

  • Man ordne die Symbole nach fallenden Auftrittswahrscheinlichkeiten.
  • Man fasse die zwei unwahrscheinlichsten Symbole zu einem neuen Symbol zusammen.
  • Man wiederhole (1) und (2), bis nur mehr zwei (zusammengefasste) Symbole übrig bleiben.
  • Man codiert die wahrscheinlichere Symbolmenge mit 1 und die andere Menge mit 0.
  • Man ergänzt in Gegenrichtung (also von unten nach oben) die jeweiligen Binärcodes der aufgespaltenen Teilmengen entsprechend den Wahrscheinlichkeiten mit 1 bzw. 0.


Ohne Einschränkung der Allgemeingültigkeit setzen wir voraus, dass die $M$ = 6 Symbole A, ... , F bereits entsprechend ihren Wahrscheinlichkeiten geordnet sind:

Durch paarweises Zusammenfassen und anschießendem Sortieren erhält man in fünf Schritten die folgenden Symbolkombinationen (resultierende Wahrscheinlichkeiten in Klammern):

1. A (0.30), B (0.24), C (0.20), EF (0.14), D (0.12),
2. A (0.30), EFD (0.26), B (0.24), C (0.20),
3. BC (0.44), A (0.30), EFD (0.26),
4. AEFD (0.56), BC (0.44),
5. Root AEFDBC (1.00).

Rückwärts (gemäß den Schritten 5 bis 1) erfolgt dann die Zuordnung zu Binärsymbolen. Ein „x” weist darauf hin, dass in den nächsten Schritten noch Bits hinzugefügt werden müssen:

5. AEFD → 1x, BC → 0x,
4. A → 11, EFD → 10x,
3. B → 01, C → 00,
2. EF → 101x, D → 100,
1. E → 1011, F → 1010.

Die Unterstreichungen markieren die endgültige Binärcodierung.


Zum Begriff „Entropiecodierung”

Darstellung des Huffman–Codes als Baumdiagramm

Einfluss von Übertragungsfehlern auf die Decodierung

Anwendung der Huffman–Codierung auf k–Tupel

Aufgaben zu Kapitel 2.3