Kodowanie Shannona
Z Wikipedii
Kodowanie Shannona, to metoda kodowania, którą Claude E. Shannon przedstawił jako jeden z dowodów swojego podstawowego twierdzenia o kodowaniu.
Kodowanie Shannona nie tworzy optymalnych kodów; nieco lepsze wyniki daje modyfikacja znana jako kodowanie Shannona-Fano. Kodowanie Shannona-Fano jest używane w kompresorze ZIP, przy wybranej kompresji metodzie implode[1].
Znacznie lepszą efektywnością charakteryzują się kodowanie Huffmana oraz kodowanie arytmetyczne.
Spis treści |
[edytuj] Kodowanie Shannona
Dane jest źródło
i stowarzyszone z nimi prawdopodobieństwa
.
- Prawdopodobieństwa (a wraz z nimi symbole) są sortowane w porządku nierosnącym, tj.
. - Następnie dla tak uporządkowanych danych oblicza się niepełne prawdopodobieństwo komulatywne:
- jest to suma wszystkich prawdopodobieństw od 1. do i-1 elementu. - Kodowanie Shannona polega na wzięciu
(długość Shannona) pierwszych bitów binarnego rozwinięcia liczby Pi (brane są bity po przecinku).
Średnia długość kodów mieści się w przedziale [H(S),H(S) + 1), gdzie H(S) to entropia źródła (średnia liczba bitów na symbol).
[edytuj] Przykład
Niech S = {a,b,c,d}, p = {0.45,0.3,0.2,0.05} (entropia H(S) = 1.72); prawdopodobieństwa są już podane nierosnąco.
Prawdopodobieństwa kumulatywne:
- P1(a) = 0
- P2(b) = p1 = 0.45
- P3(c) = p1 + p2 = 0.45 + 0.3 = 0.75
- P4(d) = p1 + p2 + p3 = 0.45 + 0.3 + 0.2 = 0.95
I ich rozwinięcia binarne (wzięte 5 pierwszych bitów po przecinku):
- P1(a) = 0.000002
- P2(b) = 0.011102
- P3(c) = 0.110002
- P4(d) = 0.111102
Długości Shannona (długości kodów w bitach):
Ostatecznie kody mają postać:
- kod(a) = 002
- kod(b) = 012
- kod(c) = 1102
- kod(d) = 111102
Średnia długość kodu
(k = 1). Po podstawieniu do nierówności podanej w twierdzeniu:
stwierdzamy, że otrzymany kod rzeczywiście ją spełnia.
Jednak, jak wspomniano, efektywność kodowania Shannona nie jest duża - dla danych z tego przykładu wynosi
.
[edytuj] Kodowanie Shannona-Fano
Robert Fano zaproponował algorytm, który daje trochę lepsze wyniki kodowania - kody mogą być krótsze o 1 bit od kodów tworzonych metodą Shannona, także rozkład bitów może się różnić.
Kodowanie Shannona-Fano przedstawia się następująco:
- s - ciąg symboli ze zbioru S posortowanych wg prawdopodobieństw pi
- Shanon-Fano(s):
- Jeśli s zawiera dwa symbole do słowa kodu pierwszej litery dodaj 1, do słowa kodu drugiej litery - 0.
- W przeciwnym razie jeśli s zawiera więcej niż dwa symbole, podziel go na dwa podciągi s1 i s2 tak, żeby różnica między sumą prawdopodobieństw liter z s1 i s2 była najmniejsza. Do słów kodu symboli z s1 dodaj 1, do kodów symboli z s2 - 0. Wywołaj rekurencyjnie funkcje: Shannon-Fano(s1) oraz Shannon-Fano(s2).
[edytuj] Przykład
Niech S = {a,b,c,d}, p = {0.45,0.3,0.2,0.05}.
Początkowo ciąg s = abcd (porządek według malejącego prawdopodobieństwa).
Składa się z więcej niż 2 liter, zatem trzeba go podzielić. Możliwe są następujące sytuacje:
- s1 = a, s2 = bcd; różnica prawdopodobieństw 0.1;
- s1 = ab, s2 = cd; różnica prawdopodobieństw 0.5;
- s1 = abc, s2 = d; różnica prawdopodobieństw 0.9.
Wybierana jest pierwsza para, ponieważ różnica prawdopodobieństw jest najmniejsza. Do słów kodu liter z s1 = a dopisywane są 0, do słów kodu liter z s2 = bcd - 1:
a = 0 b = 1 c = 1 d = 1
Teraz wywoływana jest funkcja Shannon-Fano(s1) - ten ciąg ma długość 1 i nie jest już dalej przetwarzany. Następnie wykonywane jest Shannon-Fano(s2) - s2 jest dłuższy niż 2 i musi zostać podzielony.
Sytuacja jest podobna jak w poprzednim kroku, bo s12 = b i s22 = cd. Do słów kodu liter z s12 = b dopisywane są 0, do słów kodu liter z s22 = cd - 1:
a = 0 b = 10 c = 11 d = 11
Wywoływana jest funkcja Shannon-Fano(s12) - ten ciąg ma długość 1, nie jest już dalej przetwarzany. Następnie wykonywane jest Shannon-Fano(s22) - s22 ma długość 2, więc tutaj kodowanie kończy się - do słowa kodu pierwszego symbolu (c) dopisywane jest 0, a do słowa kodu drugiego kodu (d) - 1:
a = 0 b = 10 c = 110 d = 111
Średnia długość kodu
. W tym przypadku efektywność kodowania wynosi
, jest więc znacznie lepsza niż kodowania Shannona.
[edytuj] Bibliografia
- Claude. E. Shannon, "A Mathematical Theory of Communication", Bell System Technical Journal, vol. 27, str. 379-423, 623-656, lipiec, październik, 1948
- Adam Drozdek, Wprowadzenie do kompresji danych, WNT 1999
[edytuj] Zobacz też
Przypisy
- ↑ http://www.pkware.com/documents/casestudies/APPNOTE.TXT (dostęp 20.09.2008)
| Pompy insulinowe potrzebne przy planowaniu ciąży |
|
Kobiety z cukrzycą powinny mieć możliwość korzystania z pomp insulinowych już w okresie planowania ciąży. Zmniejsza to bowiem znacznie ryzyko wad wrodzonych i zgonów ich dzieci, mówili lekarze na konferencji w Warszawie.
|
| Alternatywa dla aukcji uprawnień do emisji CO2 |
|
Polska proponuje, aby także po 2013 roku unijne elektrownie otrzymywały za darmo część uprawnień do emisji CO2. Dopiero powyżej pewnego poziomu emisji będą musiały kupować je na aukcji - poinformowało Ministerstwo Gospodarki (MG).
|
| Co czwarty człowiek ma zaburzenia psychiczne |
|
Co czwarty mieszkaniec Ziemi może cierpieć na zaburzenia psychiczne. Takie alarmujące statystyki przedstawiła w najnowszym raporcie Światowa Organizacja Zdrowia.
|
| Po "melaminowej" aferze zwiększą się kontrole |
|
W związku ze skandalem z melaminą w chińskim sproszkowanym mleku Chiny zaostrzyły kontrolę procesu produkcji wyrobów mleczarskich i zagroziły umieszczeniem nieuczciwych producentów na czarnej liście - podały tamtejsze media.
|
| Szklarnie są odpowiedzialne za ochłodzenie klimatu? |
|
Białe dachy szklarni w hiszpańskiej prowincji Almeria odbijają tyle światła słonecznego, że w okolicy obniżyła się temperatura. - informuje "New Scientist".
|



