Wykład 2

Transkrypt

Wykład 2
Kodowania
Nierówność Krafta
Entropia
Kodowanie i entropia
Marek Śmieja
Teoria informacji
1 / 34
Kodowania
Nierówność Krafta
Entropia
Kod
S - alfabet źródłowy mocy m (np. litery, cyfry, znaki interpunkcyjne),
A = {a1 , . . . , an } - alfabet kodowy (symbole),
Chcemy “przesłać” tekst napisany w alfabecie źródłowym, ale nasz
“kanał informacyjny” pozwala tylko na przesłanie symboli z A,
Chcemy każdy element z S wyrazić za pomocą słów z A∗ (niepuste
słowa skończonej długości)
Funkcja kodująca
Funkcją kodującą (kodowaniem) nazywamy dowolną funkcję φ : S → A∗ .
2 / 34
Kodowania
Nierówność Krafta
Entropia
Kod
S - alfabet źródłowy mocy m (np. litery, cyfry, znaki interpunkcyjne),
A = {a1 , . . . , an } - alfabet kodowy (symbole),
Chcemy “przesłać” tekst napisany w alfabecie źródłowym, ale nasz
“kanał informacyjny” pozwala tylko na przesłanie symboli z A,
Chcemy każdy element z S wyrazić za pomocą słów z A∗ (niepuste
słowa skończonej długości)
Funkcja kodująca
Funkcją kodującą (kodowaniem) nazywamy dowolną funkcję φ : S → A∗ .
2 / 34
Kodowania
Nierówność Krafta
Entropia
Kod
S - alfabet źródłowy mocy m (np. litery, cyfry, znaki interpunkcyjne),
A = {a1 , . . . , an } - alfabet kodowy (symbole),
Chcemy “przesłać” tekst napisany w alfabecie źródłowym, ale nasz
“kanał informacyjny” pozwala tylko na przesłanie symboli z A,
Chcemy każdy element z S wyrazić za pomocą słów z A∗ (niepuste
słowa skończonej długości)
Funkcja kodująca
Funkcją kodującą (kodowaniem) nazywamy dowolną funkcję φ : S → A∗ .
2 / 34
Kodowania
Nierówność Krafta
Entropia
Kod
S - alfabet źródłowy mocy m (np. litery, cyfry, znaki interpunkcyjne),
A = {a1 , . . . , an } - alfabet kodowy (symbole),
Chcemy “przesłać” tekst napisany w alfabecie źródłowym, ale nasz
“kanał informacyjny” pozwala tylko na przesłanie symboli z A,
Chcemy każdy element z S wyrazić za pomocą słów z A∗ (niepuste
słowa skończonej długości)
Funkcja kodująca
Funkcją kodującą (kodowaniem) nazywamy dowolną funkcję φ : S → A∗ .
2 / 34
Kodowania
Nierówność Krafta
Entropia
Kod
S - alfabet źródłowy mocy m (np. litery, cyfry, znaki interpunkcyjne),
A = {a1 , . . . , an } - alfabet kodowy (symbole),
Chcemy “przesłać” tekst napisany w alfabecie źródłowym, ale nasz
“kanał informacyjny” pozwala tylko na przesłanie symboli z A,
Chcemy każdy element z S wyrazić za pomocą słów z A∗ (niepuste
słowa skończonej długości)
Funkcja kodująca
Funkcją kodującą (kodowaniem) nazywamy dowolną funkcję φ : S → A∗ .
2 / 34
Kodowania
Nierówność Krafta
Entropia
Cele
Kodowanie może mieć różne cele:
Zmniejszenie objętości danych – kompresja
Zapewnienie odporności na błędy – kody korekcyjne
Zapewnienie poufności danych –kryptografia
3 / 34
Kodowania
Nierówność Krafta
Entropia
Cele
Kodowanie może mieć różne cele:
Zmniejszenie objętości danych – kompresja
Zapewnienie odporności na błędy – kody korekcyjne
Zapewnienie poufności danych –kryptografia
3 / 34
Kodowania
Nierówność Krafta
Entropia
Cele
Kodowanie może mieć różne cele:
Zmniejszenie objętości danych – kompresja
Zapewnienie odporności na błędy – kody korekcyjne
Zapewnienie poufności danych –kryptografia
3 / 34
Kodowania
Nierówność Krafta
Entropia
Cele
Kodowanie może mieć różne cele:
Zmniejszenie objętości danych – kompresja
Zapewnienie odporności na błędy – kody korekcyjne
Zapewnienie poufności danych –kryptografia
3 / 34
Kodowania
Nierówność Krafta
Entropia
Kompresja
Kompresja bezstratna – z postaci skompresowanej można (zawsze!)
odtworzyć postać danych identyczną z oryginałem.
Kompresja stratna – z postaci skompresowanej nie zawsze można
otrzymać oryginalną postać
lepszy współczynnik kompresji
drobne różnice niezauważalne dla niektórych zmysłów (wysokie
częstotliwości – próbkowanie, sąsiednie piksele obrazka)
może być niebezpieczne dla pewnych zastosowań np. medycznych
4 / 34
Kodowania
Nierówność Krafta
Entropia
Kompresja
Kompresja bezstratna – z postaci skompresowanej można (zawsze!)
odtworzyć postać danych identyczną z oryginałem.
Kompresja stratna – z postaci skompresowanej nie zawsze można
otrzymać oryginalną postać
lepszy współczynnik kompresji
drobne różnice niezauważalne dla niektórych zmysłów (wysokie
częstotliwości – próbkowanie, sąsiednie piksele obrazka)
może być niebezpieczne dla pewnych zastosowań np. medycznych
4 / 34
Kodowania
Nierówność Krafta
Entropia
Kodowanie nieosobliwe
Przykład:
S = {a, b, c, d}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 10,
φ(c) = 01,
φ(d) = 1.
Funkcja - każdy symbol z S musi mieć zdefiniowany kod,
Nie jest iniekcją - kody różnych symboli nie muszą być różnie (jak
dekodować?),
Kodowanie nieosobliwe
Kodowanie jest nieosobliwe jeśli funkcja kodująca jest iniekcją:
φ(s1 ) 6= φ(s2 ), jeśli s1 6= s2 .
5 / 34
Kodowania
Nierówność Krafta
Entropia
Kodowanie nieosobliwe
Przykład:
S = {a, b, c, d}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 10,
φ(c) = 01,
φ(d) = 1.
Funkcja - każdy symbol z S musi mieć zdefiniowany kod,
Nie jest iniekcją - kody różnych symboli nie muszą być różnie (jak
dekodować?),
Kodowanie nieosobliwe
Kodowanie jest nieosobliwe jeśli funkcja kodująca jest iniekcją:
φ(s1 ) 6= φ(s2 ), jeśli s1 6= s2 .
5 / 34
Kodowania
Nierówność Krafta
Entropia
Kodowanie nieosobliwe
Przykład:
S = {a, b, c, d}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 10,
φ(c) = 01,
φ(d) = 1.
Funkcja - każdy symbol z S musi mieć zdefiniowany kod,
Nie jest iniekcją - kody różnych symboli nie muszą być różnie (jak
dekodować?),
Kodowanie nieosobliwe
Kodowanie jest nieosobliwe jeśli funkcja kodująca jest iniekcją:
φ(s1 ) 6= φ(s2 ), jeśli s1 6= s2 .
5 / 34
Kodowania
Nierówność Krafta
Entropia
Kodowanie nieosobliwe
Przykład:
S = {a, b, c, d}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 10,
φ(c) = 01,
φ(d) = 1.
Funkcja - każdy symbol z S musi mieć zdefiniowany kod,
Nie jest iniekcją - kody różnych symboli nie muszą być różnie (jak
dekodować?),
Kodowanie nieosobliwe
Kodowanie jest nieosobliwe jeśli funkcja kodująca jest iniekcją:
φ(s1 ) 6= φ(s2 ), jeśli s1 6= s2 .
5 / 34
Kodowania
Nierówność Krafta
Entropia
Kodowanie nieosobliwe 6= jednoznacznie dekodowalne
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 0,
φ(c) = 10,
Jest nieosobliwe
Jak odkodować: 1101?
“aaba” czy może “aca”?
Iniektywna funkcja jest odwracalna, ale nie zapewnia to
jednoznaczności dekodowania!
6 / 34
Kodowania
Nierówność Krafta
Entropia
Kodowanie nieosobliwe 6= jednoznacznie dekodowalne
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 0,
φ(c) = 10,
Jest nieosobliwe
Jak odkodować: 1101?
“aaba” czy może “aca”?
Iniektywna funkcja jest odwracalna, ale nie zapewnia to
jednoznaczności dekodowania!
6 / 34
Kodowania
Nierówność Krafta
Entropia
Kodowanie nieosobliwe 6= jednoznacznie dekodowalne
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 0,
φ(c) = 10,
Jest nieosobliwe
Jak odkodować: 1101?
“aaba” czy może “aca”?
Iniektywna funkcja jest odwracalna, ale nie zapewnia to
jednoznaczności dekodowania!
6 / 34
Kodowania
Nierówność Krafta
Entropia
Kodowanie nieosobliwe 6= jednoznacznie dekodowalne
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 0,
φ(c) = 10,
Jest nieosobliwe
Jak odkodować: 1101?
“aaba” czy może “aca”?
Iniektywna funkcja jest odwracalna, ale nie zapewnia to
jednoznaczności dekodowania!
6 / 34
Kodowania
Nierówność Krafta
Entropia
Kodowanie nieosobliwe 6= jednoznacznie dekodowalne
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 0,
φ(c) = 10,
Jest nieosobliwe
Jak odkodować: 1101?
“aaba” czy może “aca”?
Iniektywna funkcja jest odwracalna, ale nie zapewnia to
jednoznaczności dekodowania!
6 / 34
Kodowania
Nierówność Krafta
Entropia
Kod Morse’a
Kod jednoznacznie dekodowalny - był powszechnie używany w
telekomunikacji radiowej, obecnie używany przez radioamatorów
S - litery alfabetu angielskiego
A = {·, −}, gdzie “·” - krótki sygnał, “-” - długi sygnał
Kody to ciągi złożone z długich i krótkich sygnałów
Dekodowanie: krótki odstęp czasowy pomiędzy literami, a dłuższy
między wyrazami
Jest to symbol specjalny rozdzielający kody.
Czyli tak naprawdę A jest 4-elementowy a nie dwu.
Nieefektywne, zobaczymy jak sprytniej zapewnić jednoznaczną
dekodowalność:)
7 / 34
Kodowania
Nierówność Krafta
Entropia
Kod Morse’a
Kod jednoznacznie dekodowalny - był powszechnie używany w
telekomunikacji radiowej, obecnie używany przez radioamatorów
S - litery alfabetu angielskiego
A = {·, −}, gdzie “·” - krótki sygnał, “-” - długi sygnał
Kody to ciągi złożone z długich i krótkich sygnałów
Dekodowanie: krótki odstęp czasowy pomiędzy literami, a dłuższy
między wyrazami
Jest to symbol specjalny rozdzielający kody.
Czyli tak naprawdę A jest 4-elementowy a nie dwu.
Nieefektywne, zobaczymy jak sprytniej zapewnić jednoznaczną
dekodowalność:)
7 / 34
Kodowania
Nierówność Krafta
Entropia
Kod Morse’a
Kod jednoznacznie dekodowalny - był powszechnie używany w
telekomunikacji radiowej, obecnie używany przez radioamatorów
S - litery alfabetu angielskiego
A = {·, −}, gdzie “·” - krótki sygnał, “-” - długi sygnał
Kody to ciągi złożone z długich i krótkich sygnałów
Dekodowanie: krótki odstęp czasowy pomiędzy literami, a dłuższy
między wyrazami
Jest to symbol specjalny rozdzielający kody.
Czyli tak naprawdę A jest 4-elementowy a nie dwu.
Nieefektywne, zobaczymy jak sprytniej zapewnić jednoznaczną
dekodowalność:)
7 / 34
Kodowania
Nierówność Krafta
Entropia
Kod Morse’a
Kod jednoznacznie dekodowalny - był powszechnie używany w
telekomunikacji radiowej, obecnie używany przez radioamatorów
S - litery alfabetu angielskiego
A = {·, −}, gdzie “·” - krótki sygnał, “-” - długi sygnał
Kody to ciągi złożone z długich i krótkich sygnałów
Dekodowanie: krótki odstęp czasowy pomiędzy literami, a dłuższy
między wyrazami
Jest to symbol specjalny rozdzielający kody.
Czyli tak naprawdę A jest 4-elementowy a nie dwu.
Nieefektywne, zobaczymy jak sprytniej zapewnić jednoznaczną
dekodowalność:)
7 / 34
Kodowania
Nierówność Krafta
Entropia
Kod Morse’a
Kod jednoznacznie dekodowalny - był powszechnie używany w
telekomunikacji radiowej, obecnie używany przez radioamatorów
S - litery alfabetu angielskiego
A = {·, −}, gdzie “·” - krótki sygnał, “-” - długi sygnał
Kody to ciągi złożone z długich i krótkich sygnałów
Dekodowanie: krótki odstęp czasowy pomiędzy literami, a dłuższy
między wyrazami
Jest to symbol specjalny rozdzielający kody.
Czyli tak naprawdę A jest 4-elementowy a nie dwu.
Nieefektywne, zobaczymy jak sprytniej zapewnić jednoznaczną
dekodowalność:)
7 / 34
Kodowania
Nierówność Krafta
Entropia
Kody stałej długości
Każdy symbol ma kod tej samej długości l
Przykład: ASCII
Dekodowanie: czytamy porcję l symboli, patrzymy w słownik i
odkodowujemy
8 / 34
Kodowania
Nierówność Krafta
Entropia
Kody stałej długości
Każdy symbol ma kod tej samej długości l
Przykład: ASCII
Dekodowanie: czytamy porcję l symboli, patrzymy w słownik i
odkodowujemy
8 / 34
Kodowania
Nierówność Krafta
Entropia
Kody stałej długości
Każdy symbol ma kod tej samej długości l
Przykład: ASCII
Dekodowanie: czytamy porcję l symboli, patrzymy w słownik i
odkodowujemy
8 / 34
Kodowania
Nierówność Krafta
Entropia
Jednoznaczna dekodowalność
Rozszerzenie kodu
Rozszerzeniem kodu nazywamy odwzorowanie φ : S ∗ → A∗ dane wzorem:
φ(s1 s2 . . . sk ) := φ(s1 )φ(s2 ) . . . φ(sk )
Jednoznaczna dekodowalność
Kod jest jednoznacznie dekodowalny jeśli jego rozszerzenie jest
nieosobliwe
Innymi słowy, kod jest jednoznacznie dekodowalny jeśli istnieje tylko
jeden możliwy ciąg liter produkujący go.
Ćwiecznie: Jak przeprowadzić test na jednoznaczną dekodowalność?
9 / 34
Kodowania
Nierówność Krafta
Entropia
Jednoznaczna dekodowalność
Rozszerzenie kodu
Rozszerzeniem kodu nazywamy odwzorowanie φ : S ∗ → A∗ dane wzorem:
φ(s1 s2 . . . sk ) := φ(s1 )φ(s2 ) . . . φ(sk )
Jednoznaczna dekodowalność
Kod jest jednoznacznie dekodowalny jeśli jego rozszerzenie jest
nieosobliwe
Innymi słowy, kod jest jednoznacznie dekodowalny jeśli istnieje tylko
jeden możliwy ciąg liter produkujący go.
Ćwiecznie: Jak przeprowadzić test na jednoznaczną dekodowalność?
9 / 34
Kodowania
Nierówność Krafta
Entropia
Jednoznaczna dekodowalność
Rozszerzenie kodu
Rozszerzeniem kodu nazywamy odwzorowanie φ : S ∗ → A∗ dane wzorem:
φ(s1 s2 . . . sk ) := φ(s1 )φ(s2 ) . . . φ(sk )
Jednoznaczna dekodowalność
Kod jest jednoznacznie dekodowalny jeśli jego rozszerzenie jest
nieosobliwe
Innymi słowy, kod jest jednoznacznie dekodowalny jeśli istnieje tylko
jeden możliwy ciąg liter produkujący go.
Ćwiecznie: Jak przeprowadzić test na jednoznaczną dekodowalność?
9 / 34
Kodowania
Nierówność Krafta
Entropia
Jednoznaczna dekodowalność
Rozszerzenie kodu
Rozszerzeniem kodu nazywamy odwzorowanie φ : S ∗ → A∗ dane wzorem:
φ(s1 s2 . . . sk ) := φ(s1 )φ(s2 ) . . . φ(sk )
Jednoznaczna dekodowalność
Kod jest jednoznacznie dekodowalny jeśli jego rozszerzenie jest
nieosobliwe
Innymi słowy, kod jest jednoznacznie dekodowalny jeśli istnieje tylko
jeden możliwy ciąg liter produkujący go.
Ćwiecznie: Jak przeprowadzić test na jednoznaczną dekodowalność?
9 / 34
Kodowania
Nierówność Krafta
Entropia
Kod prefiksowy
Kod Morse’a jest jednoznacznie dekodowalny dzięki wykorzystaniu
symboli specjalnych rozdzielających kody.
Inny sposób polega na takiej konstrukcji kodu, aby jednoznaczność
byłą zapewniona bez użycia separatorów.
Kod przedrostkowy
Kod nazywamy przedrostkowym (prefiksowym) jeśli żadne ze słów
kodujących nie jest przedrostkiem innego.
Jest jednoznacznie dekodowalny.
10 / 34
Kodowania
Nierówność Krafta
Entropia
Kod prefiksowy
Kod Morse’a jest jednoznacznie dekodowalny dzięki wykorzystaniu
symboli specjalnych rozdzielających kody.
Inny sposób polega na takiej konstrukcji kodu, aby jednoznaczność
byłą zapewniona bez użycia separatorów.
Kod przedrostkowy
Kod nazywamy przedrostkowym (prefiksowym) jeśli żadne ze słów
kodujących nie jest przedrostkiem innego.
Jest jednoznacznie dekodowalny.
10 / 34
Kodowania
Nierówność Krafta
Entropia
Kod prefiksowy
Kod Morse’a jest jednoznacznie dekodowalny dzięki wykorzystaniu
symboli specjalnych rozdzielających kody.
Inny sposób polega na takiej konstrukcji kodu, aby jednoznaczność
byłą zapewniona bez użycia separatorów.
Kod przedrostkowy
Kod nazywamy przedrostkowym (prefiksowym) jeśli żadne ze słów
kodujących nie jest przedrostkiem innego.
Jest jednoznacznie dekodowalny.
10 / 34
Kodowania
Nierówność Krafta
Entropia
Kod prefiksowy
Kod Morse’a jest jednoznacznie dekodowalny dzięki wykorzystaniu
symboli specjalnych rozdzielających kody.
Inny sposób polega na takiej konstrukcji kodu, aby jednoznaczność
byłą zapewniona bez użycia separatorów.
Kod przedrostkowy
Kod nazywamy przedrostkowym (prefiksowym) jeśli żadne ze słów
kodujących nie jest przedrostkiem innego.
Jest jednoznacznie dekodowalny.
10 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 01,
φ(c) = 00,
Jak odkodować: 001011
0 - nie jest kodem
00 - c (ponadto żaden inny symbol nie ma kodu rozpoczynającego
się od “00”)
1-a
0 - nie jest kodem
01 - b
1-a
11 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 01,
φ(c) = 00,
Jak odkodować: 001011
0 - nie jest kodem
00 - c (ponadto żaden inny symbol nie ma kodu rozpoczynającego
się od “00”)
1-a
0 - nie jest kodem
01 - b
1-a
11 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 01,
φ(c) = 00,
Jak odkodować: 001011
0 - nie jest kodem
00 - c (ponadto żaden inny symbol nie ma kodu rozpoczynającego
się od “00”)
1-a
0 - nie jest kodem
01 - b
1-a
11 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 01,
φ(c) = 00,
Jak odkodować: 001011
0 - nie jest kodem
00 - c (ponadto żaden inny symbol nie ma kodu rozpoczynającego
się od “00”)
1-a
0 - nie jest kodem
01 - b
1-a
11 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 01,
φ(c) = 00,
Jak odkodować: 001011
0 - nie jest kodem
00 - c (ponadto żaden inny symbol nie ma kodu rozpoczynającego
się od “00”)
1-a
0 - nie jest kodem
01 - b
1-a
11 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 01,
φ(c) = 00,
Jak odkodować: 001011
0 - nie jest kodem
00 - c (ponadto żaden inny symbol nie ma kodu rozpoczynającego
się od “00”)
1-a
0 - nie jest kodem
01 - b
1-a
11 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 01,
φ(c) = 00,
Jak odkodować: 001011
0 - nie jest kodem
00 - c (ponadto żaden inny symbol nie ma kodu rozpoczynającego
się od “00”)
1-a
0 - nie jest kodem
01 - b
1-a
11 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, φ : S → A∗
φ(a) = 1,
φ(b) = 01,
φ(c) = 00,
Jak odkodować: 001011
0 - nie jest kodem
00 - c (ponadto żaden inny symbol nie ma kodu rozpoczynającego
się od “00”)
1-a
0 - nie jest kodem
01 - b
1-a
11 / 34
Kodowania
Nierówność Krafta
Entropia
Podsumowanie
Rysunek: Zależność pomiędzy kodowaniami (źródło: Cover and Thomas)
Ćwiczenie: podać kodowania każdego z tych rodzajów
12 / 34
Kodowania
Nierówność Krafta
Entropia
Transformacje danych
Weźmy ciąg:
9, 11, 11, 11, 14, 13, 15, 17, 16, 17, 20, 21
Do zapamiętania go potrzebujemy 5 bitów na każdą liczbę
Użyjmy następującej transformacji:
x̂n = n + 8, en = xn − x̂n
Wówczas x̂n ma postać:
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
My kodujmy błędy en , czyli ciąg:
0, 1, 0, 1, 1, −1, 0, 1, −1 − 1, 1, 1
Potrzebujemy teraz tylko 2 bitów na liczbę:) Dlaczego?
Dane spełniają w przybliżeniu pewną regułę
13 / 34
Kodowania
Nierówność Krafta
Entropia
Transformacje danych
Weźmy ciąg:
9, 11, 11, 11, 14, 13, 15, 17, 16, 17, 20, 21
Do zapamiętania go potrzebujemy 5 bitów na każdą liczbę
Użyjmy następującej transformacji:
x̂n = n + 8, en = xn − x̂n
Wówczas x̂n ma postać:
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
My kodujmy błędy en , czyli ciąg:
0, 1, 0, 1, 1, −1, 0, 1, −1 − 1, 1, 1
Potrzebujemy teraz tylko 2 bitów na liczbę:) Dlaczego?
Dane spełniają w przybliżeniu pewną regułę
13 / 34
Kodowania
Nierówność Krafta
Entropia
Transformacje danych
Weźmy ciąg:
9, 11, 11, 11, 14, 13, 15, 17, 16, 17, 20, 21
Do zapamiętania go potrzebujemy 5 bitów na każdą liczbę
Użyjmy następującej transformacji:
x̂n = n + 8, en = xn − x̂n
Wówczas x̂n ma postać:
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
My kodujmy błędy en , czyli ciąg:
0, 1, 0, 1, 1, −1, 0, 1, −1 − 1, 1, 1
Potrzebujemy teraz tylko 2 bitów na liczbę:) Dlaczego?
Dane spełniają w przybliżeniu pewną regułę
13 / 34
Kodowania
Nierówność Krafta
Entropia
Transformacje danych
Weźmy ciąg:
9, 11, 11, 11, 14, 13, 15, 17, 16, 17, 20, 21
Do zapamiętania go potrzebujemy 5 bitów na każdą liczbę
Użyjmy następującej transformacji:
x̂n = n + 8, en = xn − x̂n
Wówczas x̂n ma postać:
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
My kodujmy błędy en , czyli ciąg:
0, 1, 0, 1, 1, −1, 0, 1, −1 − 1, 1, 1
Potrzebujemy teraz tylko 2 bitów na liczbę:) Dlaczego?
Dane spełniają w przybliżeniu pewną regułę
13 / 34
Kodowania
Nierówność Krafta
Entropia
Transformacje danych
Weźmy ciąg:
27, 28, 29, 28, 26, 27, 29, 28, 30, 32, 34, 36, 38
Do zapamiętania go potrzebujemy 6 bitów na każdą liczbę
Każda wartość w ciągu jest bliska poprzedniej.
Użyjmy następującej transformacji:
en = xn − xn−1 , e1 = x1
Wówczas en ma postać:
27, 1, 1, −1, −2, 1, 2, −1, 2, 2, 2, 2, 2
Teraz ciąg jest prostszy do zakodowania
14 / 34
Kodowania
Nierówność Krafta
Entropia
Transformacje danych
Weźmy ciąg:
27, 28, 29, 28, 26, 27, 29, 28, 30, 32, 34, 36, 38
Do zapamiętania go potrzebujemy 6 bitów na każdą liczbę
Każda wartość w ciągu jest bliska poprzedniej.
Użyjmy następującej transformacji:
en = xn − xn−1 , e1 = x1
Wówczas en ma postać:
27, 1, 1, −1, −2, 1, 2, −1, 2, 2, 2, 2, 2
Teraz ciąg jest prostszy do zakodowania
14 / 34
Kodowania
Nierówność Krafta
Entropia
Transformacje danych
Weźmy ciąg:
27, 28, 29, 28, 26, 27, 29, 28, 30, 32, 34, 36, 38
Do zapamiętania go potrzebujemy 6 bitów na każdą liczbę
Każda wartość w ciągu jest bliska poprzedniej.
Użyjmy następującej transformacji:
en = xn − xn−1 , e1 = x1
Wówczas en ma postać:
27, 1, 1, −1, −2, 1, 2, −1, 2, 2, 2, 2, 2
Teraz ciąg jest prostszy do zakodowania
14 / 34
Kodowania
Nierówność Krafta
Entropia
Kod o zadanej długości
Pytanie: Mamy dany alfabet i chcemy zrealizować kod jednoznacznie
dekodowalny o zadanych długościach. Kiedy nam się to uda?
Nierówność Krafta
Alfabet źródłowy S o m elementach da się zakodować słowami
prefiksowymi z alfabetu kodowego A o n elementach o długościach
l1 , . . . , lm wtw., gdy
m
X
n−li ¬ 1.
i=1
My będziemy prawie zawsze przyjmować n = 2 dla prostoty, chociaż da
się robić ogólniej.
15 / 34
Kodowania
Nierówność Krafta
Entropia
Kod o zadanej długości
Pytanie: Mamy dany alfabet i chcemy zrealizować kod jednoznacznie
dekodowalny o zadanych długościach. Kiedy nam się to uda?
Nierówność Krafta
Alfabet źródłowy S o m elementach da się zakodować słowami
prefiksowymi z alfabetu kodowego A o n elementach o długościach
l1 , . . . , lm wtw., gdy
m
X
n−li ¬ 1.
i=1
My będziemy prawie zawsze przyjmować n = 2 dla prostoty, chociaż da
się robić ogólniej.
15 / 34
Kodowania
Nierówność Krafta
Entropia
Kod o zadanej długości
Pytanie: Mamy dany alfabet i chcemy zrealizować kod jednoznacznie
dekodowalny o zadanych długościach. Kiedy nam się to uda?
Nierówność Krafta
Alfabet źródłowy S o m elementach da się zakodować słowami
prefiksowymi z alfabetu kodowego A o n elementach o długościach
l1 , . . . , lm wtw., gdy
m
X
n−li ¬ 1.
i=1
My będziemy prawie zawsze przyjmować n = 2 dla prostoty, chociaż da
się robić ogólniej.
15 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- ok
- Dekodowalność - ok
- Prefiksowy - ok
16 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- ok
- Dekodowalność - ok
- Prefiksowy - ok
16 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- nie
- Dekodowalność - nie
- Prefiksowy - nie
17 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- nie
- Dekodowalność - nie
- Prefiksowy - nie
17 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
-
Nierówność Krafta- tak
Dekodowalność - tak
Prefiksowy - tak
kod stałej długości
18 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
-
Nierówność Krafta- tak
Dekodowalność - tak
Prefiksowy - tak
kod stałej długości
18 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- ok
- Dekodowalność - ok
- Prefiksowy - ok
19 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- ok
- Dekodowalność - ok
- Prefiksowy - ok
19 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- ok
- Dekodowalność - ok
- Prefiksowy - nie
20 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- ok
- Dekodowalność - ok
- Prefiksowy - nie
20 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- ok
- Dekodowalność - nie
- Prefiksowy - nie
21 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
- Nierówność Krafta- ok
- Dekodowalność - nie
- Prefiksowy - nie
21 / 34
Kodowania
Nierówność Krafta
Entropia
Dowód 1
Zakładamy, że mamy kody prefiksowe o długościach l1 , . . . , lm .
Pokażemy, że zachodzi nierówność Krafta.
Kod prefiksowy można reprezentować jako ścieżki do liści w drzewie
(0-w lewo, 1 w prawo dla sytuacji binarnej). Węzły wewnętrzne nie
są kodami (rysunek)
Najdłuższy kod ma długość lmax i leży na poziomie lmax w drzewie.
Kod leżący na poziomie li ma nlmax −li potomków na poziomie lmax .
Jako, że mamy drzewo to zbiory potomków dla węzłów na tym
samym poziomie są rozłączne.
Łączna ilość potomków na poziomie lmax nie może być większa niż
maksymalna ilość węzłów na tym poziomie czyli nlmax . Stąd:
X
nlmax −li ¬ nlmax
co daje
X
n−li ¬ 1
22 / 34
Kodowania
Nierówność Krafta
Entropia
Dowód 2
Odwrotnie zakładamy, że mamy dane długości kodów spełniających
nierówność Krafta. Mamy pokazać, że istnieje kod prefiksowy o tych
długościach.
Konstruujemy pełne drzewo binarne.
Zakładamy, że l1 ¬ l2 ¬ . . . ¬ ln = lmax
Dla kolejnych długości tworzymy kody biorąc kolejne ścieżki w
drzewie (od lewej - rysunek) - daję to kod prefiksowy.
Dla każdego kodu usuwamy potomków odpowiadającego węzła, tak
aby kod był w liściu.
Ilość usuniętych potomków to: nlmax −l1 , . . . , nlmax −ln .
P
Zliczamy usunięte liście w drzewie: i nlmax −li ¬ nlmax
Zatem liści nam nie zabraknie o ile spełniona będzie nierówność
Krafta
Jako że założyliśmy jej prawdziwość, to procedura jest wykonalna
23 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład konstrukcji
Mamy dane długości 1, 2, 3, 3.
Można sprawdzić, że spełniają nierówność Krafta.
Chodzimy po drzewie od lewej i tworzymy kody (od najkrótszego do
najdłuższego)
24 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład konstrukcji
Mamy dane długości 1, 2, 3, 3.
Można sprawdzić, że spełniają nierówność Krafta.
Chodzimy po drzewie od lewej i tworzymy kody (od najkrótszego do
najdłuższego)
24 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład konstrukcji
Mamy dane długości 1, 2, 3, 3.
Można sprawdzić, że spełniają nierówność Krafta.
Chodzimy po drzewie od lewej i tworzymy kody (od najkrótszego do
najdłuższego)
24 / 34
Kodowania
Nierówność Krafta
Entropia
Rozszerzenie
Ćwiczenie: Nierówność Krafta można pokazać w przypadku kodów
jednoznacznie dekodowalnych (McMillan).
Dlatego zawężamy się w naszych rozważaniach do kodów
prefiksowych.
25 / 34
Kodowania
Nierówność Krafta
Entropia
Pytanie: a co jeśli nierówność Krafta jest spełniona silnie, tzn.
X
n−li < 1
Wówczas można zmienić kodowanie na krótsze i dalej mieć własność
prefiksowości (minimum funkcji wklęsłej jest osiągane na brzegu!)
26 / 34
Kodowania
Nierówność Krafta
Entropia
Pytanie: a co jeśli nierówność Krafta jest spełniona silnie, tzn.
X
n−li < 1
Wówczas można zmienić kodowanie na krótsze i dalej mieć własność
prefiksowości (minimum funkcji wklęsłej jest osiągane na brzegu!)
26 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Można stworzyć bardziej optymalny
kod
27 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Można stworzyć bardziej optymalny
kod
27 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Teraz mamy brzeg:)
28 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
000
00
001
0
010
01
011
100
10
101
1
110
11
111
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Teraz mamy brzeg:)
28 / 34
Kodowania
Nierówność Krafta
Entropia
Długość kodu
Załóżmy, że symbole z S generowane są z określonymi
prawdopodobieństwami pi = p(si )
Ponadto, zakładamy brak pamięci, czyli że generowany symbol nie
zależy od żadnego z poprzednich
Chcielibyśmy stworzyć kod, który jest możliwie krótki (efektywny)
Interesująca nas długość to statystyczna długość słowa:
X
L(l1 , . . . , ln ) = E (length(φ)) :=
pi li ,
i
gdzie li = length(si )
29 / 34
Kodowania
Nierówność Krafta
Entropia
Długość kodu
Załóżmy, że symbole z S generowane są z określonymi
prawdopodobieństwami pi = p(si )
Ponadto, zakładamy brak pamięci, czyli że generowany symbol nie
zależy od żadnego z poprzednich
Chcielibyśmy stworzyć kod, który jest możliwie krótki (efektywny)
Interesująca nas długość to statystyczna długość słowa:
X
L(l1 , . . . , ln ) = E (length(φ)) :=
pi li ,
i
gdzie li = length(si )
29 / 34
Kodowania
Nierówność Krafta
Entropia
Długość kodu
Załóżmy, że symbole z S generowane są z określonymi
prawdopodobieństwami pi = p(si )
Ponadto, zakładamy brak pamięci, czyli że generowany symbol nie
zależy od żadnego z poprzednich
Chcielibyśmy stworzyć kod, który jest możliwie krótki (efektywny)
Interesująca nas długość to statystyczna długość słowa:
X
L(l1 , . . . , ln ) = E (length(φ)) :=
pi li ,
i
gdzie li = length(si )
29 / 34
Kodowania
Nierówność Krafta
Entropia
Długość kodu
Załóżmy, że symbole z S generowane są z określonymi
prawdopodobieństwami pi = p(si )
Ponadto, zakładamy brak pamięci, czyli że generowany symbol nie
zależy od żadnego z poprzednich
Chcielibyśmy stworzyć kod, który jest możliwie krótki (efektywny)
Interesująca nas długość to statystyczna długość słowa:
X
L(l1 , . . . , ln ) = E (length(φ)) :=
pi li ,
i
gdzie li = length(si )
29 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, P = {1/2, 1/4, 1/4}
φ1 (a) = 0, φ1 (b) = 10, φ1 (c) = 11
L(φ1 ) = 12 1 + 14 2 + 14 2 = 1 21 (optymalne)
φ2 (a) = 10, φ2 (b) = 0, φ2 (c) = 11
L(φ2 ) = 12 2 + 14 1 + 14 2 = 1 43
Wniosek: częste symbole powinny być kodowane krótkimi kodami.
30 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, P = {1/2, 1/4, 1/4}
φ1 (a) = 0, φ1 (b) = 10, φ1 (c) = 11
L(φ1 ) = 12 1 + 14 2 + 14 2 = 1 12 (optymalne)
φ2 (a) = 10, φ2 (b) = 0, φ2 (c) = 11
L(φ2 ) = 12 2 + 14 1 + 14 2 = 1 34
Wniosek: częste symbole powinny być kodowane krótkimi kodami.
30 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, P = {1/2, 1/4, 1/4}
φ1 (a) = 0, φ1 (b) = 10, φ1 (c) = 11
L(φ1 ) = 12 1 + 14 2 + 14 2 = 1 12 (optymalne)
φ2 (a) = 10, φ2 (b) = 0, φ2 (c) = 11
L(φ2 ) = 12 2 + 14 1 + 14 2 = 1 34
Wniosek: częste symbole powinny być kodowane krótkimi kodami.
30 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, P = {1/2, 1/4, 1/4}
φ1 (a) = 0, φ1 (b) = 10, φ1 (c) = 11
L(φ1 ) = 12 1 + 14 2 + 14 2 = 1 12 (optymalne)
φ2 (a) = 10, φ2 (b) = 0, φ2 (c) = 11
L(φ2 ) = 12 2 + 14 1 + 14 2 = 1 34
Wniosek: częste symbole powinny być kodowane krótkimi kodami.
30 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, P = {1/2, 1/4, 1/4}
φ1 (a) = 0, φ1 (b) = 10, φ1 (c) = 11
L(φ1 ) = 12 1 + 14 2 + 14 2 = 1 12 (optymalne)
φ2 (a) = 10, φ2 (b) = 0, φ2 (c) = 11
L(φ2 ) = 12 2 + 14 1 + 14 2 = 1 34
Wniosek: częste symbole powinny być kodowane krótkimi kodami.
30 / 34
Kodowania
Nierówność Krafta
Entropia
Przykład
S = {a, b, c}, A = {0, 1}, P = {1/2, 1/4, 1/4}
φ1 (a) = 0, φ1 (b) = 10, φ1 (c) = 11
L(φ1 ) = 12 1 + 14 2 + 14 2 = 1 12 (optymalne)
φ2 (a) = 10, φ2 (b) = 0, φ2 (c) = 11
L(φ2 ) = 12 2 + 14 1 + 14 2 = 1 34
Wniosek: częste symbole powinny być kodowane krótkimi kodami.
30 / 34
Kodowania
Nierówność Krafta
Entropia
Cel
Jak dobrać li , aby zminimalizować wartość oczekiwaną długości
słowa?
Nierówność Krafta daje nam dopuszczalne zakresy li .
Mamy problem minimalizacji przy zadanym warunku.
Problem minimalizacyjny
Znaleźć minimum
L(l1 , . . . , ln ) :=
X
pi li
i
przy warunku
X
n−li ¬ 1
i
31 / 34
Kodowania
Nierówność Krafta
Entropia
Cel
Jak dobrać li , aby zminimalizować wartość oczekiwaną długości
słowa?
Nierówność Krafta daje nam dopuszczalne zakresy li .
Mamy problem minimalizacji przy zadanym warunku.
Problem minimalizacyjny
Znaleźć minimum
L(l1 , . . . , ln ) :=
X
pi li
i
przy warunku
X
n−li ¬ 1
i
31 / 34
Kodowania
Nierówność Krafta
Entropia
Cel
Jak dobrać li , aby zminimalizować wartość oczekiwaną długości
słowa?
Nierówność Krafta daje nam dopuszczalne zakresy li .
Mamy problem minimalizacji przy zadanym warunku.
Problem minimalizacyjny
Znaleźć minimum
L(l1 , . . . , ln ) :=
X
pi li
i
przy warunku
X
n−li ¬ 1
i
31 / 34
Kodowania
Nierówność Krafta
Entropia
Cel
Jak dobrać li , aby zminimalizować wartość oczekiwaną długości
słowa?
Nierówność Krafta daje nam dopuszczalne zakresy li .
Mamy problem minimalizacji przy zadanym warunku.
Problem minimalizacyjny
Znaleźć minimum
L(l1 , . . . , ln ) :=
X
pi li
i
przy warunku
X
n−li ¬ 1
i
31 / 34
Kodowania
Nierówność Krafta
Entropia
Minimalizajca
zakładamy, że li > 0 rzeczywiste
P
minimalizujemy na brzegu tj. i n−li = 1
wykorzystujemy metodę współczynników Lagrange’a:
X
X
J(l1 , . . . , ln ) =
pi li − λ(
n−li − 1)
i
Szukamy minimum:
∂J
= pi − λn−li ln(n) = 0
∂li
Dostajemy:
n−li =
Wrzucamy to do warunku na λ:
X
n−li =
i
pi
λln(n)
1
=1
λln(n)
Wyliczamy λ i wracamy do poprzedniego co daje:
n−li = pi , czyli li = − logn pi
32 / 34
Kodowania
Nierówność Krafta
Entropia
Uwagi
Definiujemy całkowite długości li = d− logn pi e
Można sprawdzić, że znalezione minimum jest globalne (Cover, str.
111)
33 / 34
Kodowania
Nierówność Krafta
Entropia
Uwagi
Definiujemy całkowite długości li = d− logn pi e
Można sprawdzić, że znalezione minimum jest globalne (Cover, str.
111)
33 / 34
Kodowania
Nierówność Krafta
Entropia
Entropia
Kluczowa dla nas sytuacja to kodowanie binarne A = {0, 1}, choć
można definiować to dla dowolnego A.
Entropia określa minimalną statystyczną długość kodowania.
Definicja
Niech X = {x1 , . . . , xn } będzie dyskretną przestrzenią probabilistyczną,
gdzie pi = p(xi ) jest prawdopodobieństwem otrzymania xi . Wtedy
entropia X (rozkładu p1 , . . . , pn na X ) wyraża się wzorem:
X
h(X ) = h(p1 , . . . , pn ) =
pi (− log2 pi ).
i
Będziemy pisać zamiennie h(zbiór) = h(rozkład pr.) = h(zmienna los)
34 / 34
Kodowania
Nierówność Krafta
Entropia
Entropia
Kluczowa dla nas sytuacja to kodowanie binarne A = {0, 1}, choć
można definiować to dla dowolnego A.
Entropia określa minimalną statystyczną długość kodowania.
Definicja
Niech X = {x1 , . . . , xn } będzie dyskretną przestrzenią probabilistyczną,
gdzie pi = p(xi ) jest prawdopodobieństwem otrzymania xi . Wtedy
entropia X (rozkładu p1 , . . . , pn na X ) wyraża się wzorem:
X
h(X ) = h(p1 , . . . , pn ) =
pi (− log2 pi ).
i
Będziemy pisać zamiennie h(zbiór) = h(rozkład pr.) = h(zmienna los)
34 / 34
Kodowania
Nierówność Krafta
Entropia
Entropia
Kluczowa dla nas sytuacja to kodowanie binarne A = {0, 1}, choć
można definiować to dla dowolnego A.
Entropia określa minimalną statystyczną długość kodowania.
Definicja
Niech X = {x1 , . . . , xn } będzie dyskretną przestrzenią probabilistyczną,
gdzie pi = p(xi ) jest prawdopodobieństwem otrzymania xi . Wtedy
entropia X (rozkładu p1 , . . . , pn na X ) wyraża się wzorem:
X
h(X ) = h(p1 , . . . , pn ) =
pi (− log2 pi ).
i
Będziemy pisać zamiennie h(zbiór) = h(rozkład pr.) = h(zmienna los)
34 / 34
Kodowania
Nierówność Krafta
Entropia
Entropia
Kluczowa dla nas sytuacja to kodowanie binarne A = {0, 1}, choć
można definiować to dla dowolnego A.
Entropia określa minimalną statystyczną długość kodowania.
Definicja
Niech X = {x1 , . . . , xn } będzie dyskretną przestrzenią probabilistyczną,
gdzie pi = p(xi ) jest prawdopodobieństwem otrzymania xi . Wtedy
entropia X (rozkładu p1 , . . . , pn na X ) wyraża się wzorem:
X
h(X ) = h(p1 , . . . , pn ) =
pi (− log2 pi ).
i
Będziemy pisać zamiennie h(zbiór) = h(rozkład pr.) = h(zmienna los)
34 / 34

Podobne dokumenty