Video

Du möchtest wissen, was es mit der Shannon-Fano-Codierung auf sich hat? Im folgenden Beitrag erklären wir dir, wie du mithilfe dieser Codierung optimale Codes finden kannst.

Inhaltsübersicht

Shannon-Fano-Kodierung: Entropie

Aber was sind optimale Codes überhaupt? Diese versuchen die mittlere Codewortlänge \overline{m} zu minimieren. Der minimal erreichbare Idealwert entspricht der Entropie der Quelle, die sich mit

H=\sum_{i=1}^{N}{(p(i)*ld(\frac{1}{p(i)})})

beschreiben lässt. P von i ist dabei die Auftretenswahrscheinlichkeit des Zeichens i, ld der logarithmus dualis und N die Anzahl der Zeichen.

Die Entropie ist in der Informationstheorie ein Maß für den mittleren Informationsgehalt einer Nachricht. Sie beschreibt den durchschnittlichen Informationsgehalt pro Zeichen einer Quelle. Ihre Einheit ist Bit pro Zeichen. Zudem gilt: Je seltener ein Zeichen auftritt, desto höher ist dessen Informationsgehalt.

Shannon-Fano-Kodierung
direkt ins Video springen
Formel Entropie

Durch die Minimierung der mittleren Codewortlänge kommt es zu kürzeren Übertragungszeiten, was wiederum zu höheren Datenraten führt. Das ist super, denn das bedeutet, dass das ein Video jetzt deutlich schneller lädt.

Je länger das Codewort ist, desto länger dauert der Sendevorgang. Wenn nun viele verschiedene Codewörter übertragen werden sollen, dann sollten Ereignisse, die häufiger auftreten, kürzere Codewörter und Ereignisse, die hingegen nur sehr selten vorkommen, längere Codewörter haben. Dadurch kann die mittlere Codewortlänge minimiert werden. Diese lässt sich so berechnen:

\overline{m}=\sum_{i=1}^{n}{p(x_i)*m(x_i)}

Dabei ist p(x_i) die Auftretenswahrscheinlichkeit und m(x_i) die Länge des i-ten Codewortes. n ist die Anzahl der Codewörter. Die mittlere Codewortlänge \overline{m} kann nie kleiner als die Entropie der Quelle H sein. Bei optimalen Codes ist die mittlere Codewortlänge aber auch nicht sehr viel größer als die Entropie der Sendequelle. Im Idealfall gilt:

\overline{m}=H

Beispiel: Shannon-Fano-Code

Mit der Shannon-Fano-Codierung, die eine Form der Entropiecodierung darstellt, kannst du einen optimalen Code finden. Wie das geht, zeigen wir dir in nur vier Schritten an einem Beispiel. Du willst mit deiner Freundin mal wieder eine gute Bar besuchen. Du hast die Anzahl der bisherigen Besuche in euren Lieblingsbars in einer Strichliste notiert.

Shannon-Fano-Kodierung
direkt ins Video springen
Strichliste

Höchstwahrscheinlich geht ihr heute Abend wieder in die Soju Bar, denn an 8 von 34 Abenden wart ihr dort. Daher sollte das Codewort für Soju Bar kurz sein. Dein Ziel ist es also, den Bars möglichst effiziente Codewörter zuzuordnen.

Beginnen wir mit Schritt 1, den Zeichenvorrat linear nach aufsteigender Wahrscheinlichkeit zu sortieren. Zunächst einmal bestimmen wir die relative Häufigkeit der Besuche, damit wir die Bars nach aufsteigender Wahrscheinlichkeit ordnen können. Bei zwei gleich häufigen Ereignissen ist es egal, welches zuerst kommt.

Shannon-Fano-Kodierung
direkt ins Video springen
Relative Häufigkeiten

Da die Namen etwas zu lang sind, kürzen wir diese im Folgenden einfach ab, sodass z.B. Barbie Deinhoff’s zu BD und die Weinerei zu DW wird. Nun schreibst du die Abkürzungen nach aufsteigender Wahrscheinlichkeit sortiert auf und versiehst Sie mit der entsprechenden Häufigkeit.

Studyflix vernetzt: Hier ein Video aus einem anderen Bereich

Bildung der Teilmengen

Der erste Schritt ist damit abgehakt. Kommen wir zum zweiten Schritt: Hier gilt es zwei Teilmengen so zu konstruieren, dass die Summenwahrscheinlichkeit der beiden Teilmengen möglichst gleich groß ist.

Da wir jedoch bei den gegebenen Wahrscheinlichkeiten nicht genau die Hälfte 17 von 34 treffen können, halbieren wir zwischen Die Weinerei DW und Luzia L.

Shannon-Fano-Kodierung
direkt ins Video springen
Bildung der Teilmengen

Daraufhin folgt auch schon Schritt drei: Hier erhält die erste Teilmenge das Codierungszeichen „0“ und die zweite Teilmenge eine „1“. Jetzt fährst du mit den jeweils gefundenen Teilmengen rekursiv in gleicher Weise fort, bis nur noch ein Zeichen in den resultierenden Teilmengen enthalten ist. Beginnen wir mit der linken Seite, also Teilmenge eins mit 15 von 34. Diese muss jetzt erneut in zwei gleich große Teilmengen separiert werden. Die Hälfte liegt bei 7,5 durch 15, was wir aber auch hier mit den gegebenen Wahrscheinlichkeiten nicht treffen werden. Wir teilen daher zwischen B3 und KAM. Die entstandenen Teilmengen codieren wir wie gehabt mit 0 für die Teilmenge 1 und 1 für die Teilmenge 2.

Shannon-Fano-Kodierung
direkt ins Video springen
Ergebnis Beispiel

Nun nehmen wir uns mehrere Farben und teilen die beiden entstandenen Teilmengen erneut. Dabei teilen wir immer näherungsweise in zwei Hälften und kodieren die erste Hälfte mit 0 und die zweite mit 1. Dies führen wir solange fort, bis jede Teilmenge nur noch aus einem Element besteht. Dabei ist es wichtig, die Nullen und Einsen immer sofort aufzuschreiben, damit du den Überblick behältst.

Wie du vielleicht bemerkt hast, ist der Shannon-Fano-Code nicht eindeutig, da es manchmal mehrere Möglichkeiten gibt, zwei annähernd gleich große Teilmengen zu bilden. Dies führt dann zu unterschiedlichen Codewörtern. Beide sind aber richtig, haben also die gleiche mittlere Codewortlänge.

Shannon-Fano-Kodierung
direkt ins Video springen
Codewörter

Überprüfung

Nun willst du deinen Code noch überprüfen, ob er wirklich so optimal ist. Dir fällt bestimmt sofort auf, dass seltener besuchte Bars die längeren Codewörter haben. Wir berechnen nun nach unserer Formel die Entropie der Quelle, und die mittlere Codewortlänge des gefundenen Codes.

Zuerst die Entropie: Dazu nehmen wir unsere Formel und formen sie um, sodass der logarithmus dualis aufgelöst wird. Denn so können wir unsere Werte leichter einsetzen.

\sum_{i=1}^{N}{\left(p\left(i\right)\ast l\ d\left(\frac{1}{p\left(i\right)}\right)\right)=\sum_{i=1}^{10}\left(p\left(i\right)*\left(\frac{\log_{10}{\left(\frac{1}{p\left(i\right)}\right)}}{\log_{10}{\left(2\right)}}\right)\right)}

Und genau das machen wir jetzt: Wir setzen die jeweilige Wahrscheinlichkeit der Bar in die Formel ein und bilden daraus die Summe. Das ist eine ziemlich lange Rechnung. Sie folgt jedoch immer dem gleichen Prinzip.

\frac{1}{log(2)}\left(\frac{1}{34}*log\left(\frac{1}{\frac{1}{34}}\right)\right)+\frac{4}{34}\astlog\left(\frac{1}{\frac{4}{34}}\right)+\frac{6}{34}\astlog\left(\frac{1}{\frac{6}{34}}\right)+...=3,0101\ bit

Als Ergebnis erhalten wir: Die Entropie H der Quelle ist gleich 3,0101 bit. Jetzt nehmen wir die Berechnung der mittleren Codewort-Länge in Angriff. Diesmal passt die Formel so, wie sie ist und wir setzen gleich ein: Für p von i ist das die Wahrscheinlichkeit des Besuchs der einzelnen Bars und für m von x_i die Länge des Codes der Bar.

Wenn wir das Ganze dann ausrechnen, erhalten wir eine mittlere Codewortlänge von 3,0588 bit. Der gefundene Code kann also durchaus als optimal bezeichnet werden. Nun bist du also nicht nur perfekt gerüstet, um die Bar per Klopfzeichen zu klären, sondern weißt auch, wie man ganz allgemein Datenübertragung optimieren kann.

Shannon-Fano-Codierung — häufigste Fragen

(ausklappen)
  • Was ist der Informationsgehalt?
    Der Informationsgehalt eines einzelnen Zeichens/Ereignisses ist ein Maß dafür, wie „überraschend“ sein Auftreten ist, und hängt von seiner Wahrscheinlichkeit ab. In der Informationstheorie wird er meist als I(x)=\operatorname{ld}\!\left(\frac{1}{p(x)}\right) in Bit angegeben. Die Entropie ist der Mittelwert dieses Informationsgehalts.
  • Was sind Codewörter?
    Codewörter sind die konkreten Folgen von Symbolen (oft Bits „0“ und „1“), die man einzelnen Zeichen einer Quelle zuordnet, um sie zu übertragen oder zu speichern. Ein Codewort repräsentiert genau ein Zeichen. Die Codewortlänge ist die Anzahl der Bits im Codewort.
  • Was bedeutet Präfixfreiheit?
    Präfixfreiheit bedeutet, dass kein Codewort der Anfang (Präfix) eines anderen Codeworts ist. Dadurch ist die Decodierung eindeutig, weil man beim Lesen eines Bitstroms sofort entscheiden kann, wann ein Codewort endet, ohne nachträglich umzuinterpretieren.
  • Was ist der Unterschied zwischen Entropie und Shannon-Entropie?
    In der Informationstheorie ist „Shannon-Entropie“ die standardisierte Entropie einer diskreten Quelle und wird oft einfach „Entropie“ genannt. Gemeint ist dieselbe Größe H=\sum_i p(i)\operatorname{ld}\!\left(\frac{1}{p(i)}\right)=-\sum_i p(i)\operatorname{ld}(p(i)). Unterschiede entstehen nur, wenn „Entropie“ fachfremd verwendet wird.

Nach Beantwortung speichern wir deine Antwort, um Studyflix zu verbessern. Mehr dazu erfährst du in unserer Datenschutzerklärung.

Codierung verstehen

Die Shannon-Fano-Codierung ist ein Verfahren aus der Codierung in der Informationstheorie. Wer sich mit Codierung beschäftigt, arbeitet mit Symbolen, Wahrscheinlichkeiten und Bitfolgen, um Daten möglichst kurz und eindeutig darzustellen. So erkennst du, wie Entropie und mittlere Codewortlänge zusammenhängen und warum verschiedene Codes trotzdem gleich gut sein können. Weitere Videos dazu findest du in unserem Informatikbereich.

Lernen lohnt sich! Entdecke hier deine Chancen.