Teoria informacji/TI Ćwiczenia 5: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 1: | Linia 1: | ||
= Ćwiczenia = | |||
Poniższe ćwiczenia służą oswojeniu się z własnościami entropii warunkowej i łącznej. | |||
{{cwiczenie|[Warunkowa entropia łączna]|Ćwiczenie 1| | |||
Udowodnij że <math>H(A,B|C) \leq H(A|C) + H(B|C)</math>, | |||
i równość zachodzi wtedy i tylko wtedy gdy A i B są ''niezależne w odniesieniu do C'', czyli | |||
<math>p (a \wedge b|c) = p(a|c) \cdot p(b|c)</math>.}} | |||
{{rozwiazanie|||<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Przeprowadzimy dowód identyczny jak w [[Teoria informacji/TI Wykład 5#do łącznej|twierdzeniu o entropii łącznej]]. | |||
<center><math>\aligned | |||
H(A|C) + H(B|C) & = \sum_{a,c} p(a \wedge c) \log \frac{1}{p(a|c)} + \sum_{b,c} p(b \wedge c) \log \frac{1}{p(b|c)}\\ | |||
& = \sum_{a,b,c} p(a \wedge b|c) \log \frac{1}{p(a|c)}+ \sum_{a,b,c} p(a \wedge b|c) \log \frac{1}{p(b|c)}\\ | |||
& = \sum_{a,b,c} p(a \wedge b \wedge c) \log \frac{1}{p(a|c) \cdot p(b|c)} | |||
\endaligned | |||
</math></center> | |||
Z drugiej strony mamy z definicji | |||
<center><math>H(A,B|C) & = \sum_{a,b,c} p(a \wedge b \wedge c)\log \frac{1}{p(a \wedge b|c)}</math></center> | |||
Dowodzona równość sprowadza się zatem do prostego faktu że dla dowolnych wartości a, b i c:<math>p (a \wedge b|c) \ge p(a|c) \cdot p(b|c)</math>. Dodatkowo równość zachodzi wtedy i tylko wtedy gdy dla każdej trójki a, b, c wartości te są równe, czyli A i B są niezależne w odniesieniu do C. | |||
</div> | |||
</div> | |||
}} | |||
{{cwiczenie|[Warunkowa entropia dla bliskich rozkładów]|Ćwiczenie 2| | |||
Niech <math>X'</math> i <math>X</math> będą dwiema zmiennymi losowymi takimi że <math>Pr(X' \neq X) \le \varepsilon</math> (dla pewnego małego <math>\varepsilon</math>). | |||
Pokaż że <math>H(X'|X)</math> może być dowolnie duże.}} | |||
{{rozwiazanie|||<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Dla dowolnego n i zmiennej losowej X możemy skonstruować rozkład X' taki że <math>Pr(X' \neq X) \le \varepsilon</math> i<math>H(X'|X) \ge n</math>. | |||
W tym celu definiujemy zbiór Z rozłączny ze zbiorem wartości X i taki że <math>|Z|= \lceil 2^\frac{n}{\varepsilon}\rceil</math>. Rozkład X' niech będzie następujący: | |||
<center><math>X'=\bigg\{ | |||
\begin{matrix} | |||
X & \mbox{z prawd.} & 1-\varepsilon & &\\ | |||
z \in Z & \mbox{z prawd.} & \frac{\varepsilon}{\lceil 2^\frac{n}{\varepsilon}\rceil} & \mbox{ dla każdego } & z \in Z | |||
\end{matrix}</math></center> | |||
Pierwszy warunek jest oczywiście spełniony. Aby sprawdzić drugi obliczamy: | |||
<center><math>\aligned | |||
H(X'|X) & = \sum_{x',x} p(x,x')\log \frac{1}{p(x'|x)}\\ | |||
& = (1-\varepsilon) \cdot \log 1 + \sum_{z\in Z} p(z) \log \frac{1}{p(z)}\\ | |||
& = 0 + \varepsilon \cdot \log \frac{\lceil 2^\frac{n}{\varepsilon}\rceil}{\varepsilon}\\ | |||
& \ge n + \varepsilon \log \frac{1}{\varepsilon} \ge n. | |||
\endaligned | |||
</math></center> | |||
</div> | |||
</div> | |||
}} | |||
{{cwiczenie|[Wąskie gardło]|Ćwiczenie 3| | |||
Rozważmy zmienne losowe X, Y, Z tworzące łańcuch Markowa <math> X \to Y \to Z</math> | |||
(czyli <math>Pr(Z=z|X,Y)=Pr(Z=z|Y)</math>). | |||
Udowodnij że <math>I(X;Z|Y)=0</math> (czyli cała wspólna informacja między X i Z musi zawierać się w Y). | |||
Udowodnij własność '''wąskiego gardła''', mówiącą że <math>I(X;Z)\le H(Y)</math>.}} | |||
{{rozwiazanie|||<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Wprost z definicji | |||
<center><math>\aligned | |||
I(X;Z|Y) & = H(Z|Y)-H(Z|X,Y)\\ | |||
& = \sum_{x,y,z} p(x \wedge y \wedge z) \bigg(\log \frac{1}{p(z|y)} - \log \frac{1}{p(z|x,y)}\bigg)\\ | |||
\endaligned | |||
</math></center> | |||
Skoro powyższe zmienne tworzą łańcuch Markowa, to wszystkie różnice mają tu zerowe wartości, a więc <math>I(X;Z|Y)=0</math>. | |||
Aby udowodnić drugą część ćwiczenia wystarczy zauważyć że | |||
:<math>I(X;Z)=\underbrace{I(X;Z|Y)}_{=0}+\underbrace{R(X;Y;Z)}_{\le H(Y)}</math> | |||
</div> | |||
</div>}} | |||
= Laboratorium = | = Laboratorium = | ||
Wersja z 14:36, 5 sie 2006
Ćwiczenia
Poniższe ćwiczenia służą oswojeniu się z własnościami entropii warunkowej i łącznej.
Ćwiczenie [Warunkowa entropia łączna]
Udowodnij że ,
i równość zachodzi wtedy i tylko wtedy gdy A i B są niezależne w odniesieniu do C, czyli
.Rozwiązanie
Ćwiczenie [Warunkowa entropia dla bliskich rozkładów]
Niech i będą dwiema zmiennymi losowymi takimi że (dla pewnego małego ).
Pokaż że może być dowolnie duże.Rozwiązanie
Ćwiczenie [Wąskie gardło]
Rozważmy zmienne losowe X, Y, Z tworzące łańcuch Markowa (czyli ).
Udowodnij że (czyli cała wspólna informacja między X i Z musi zawierać się w Y).
Udowodnij własność wąskiego gardła, mówiącą że .Rozwiązanie
Laboratorium
Zadanie 1
Treść
Rozważmy trzy warianty kompresji pliku tekstowego, które wykorzystują korelację między sąsiednimi symbolami do osiągnięcia większego stopnia kompresji:
- Kodowanie Huffmana zastosowane do bloków 2 symboli.
- Kodowanie kolejnego symbolu pliku, , za pomocą kodu Huffmana, który zależy od symbolu poprzedniego, .
W algorytmie tym, dla każdego symbolu występującego w pliku, obliczany jest warunkowy rozkład prawdopodobieństwa następnego symbolu, , pod warunkiem : . Dla takiego rozkładu symboli (przy ustalonym ) obliczany jest kod Huffmana . Kody są generowane dla wszystkich symboli .
Symbole pliku są kodowane kolejno, od pierwszego do ostatniego, przy czym symbol kodowany jest za pomocą kodu . Tak zakodowana wiadomość jest możliwa do odkodowania, ponieważ w chwili dekodowania symbol jest już znany. - Kodowanie analogiczne do (2), jednak przebiegające od końca pliku do początku, zatem korzystające z kodu do zakodowania . W tym przypadku jest kodem wygenerowanym dla rozkładu symboli poprzedzających ustalony symbol .
Polecenie
- Porównaj warianty (1) i (2) oraz (2) i (3) pod względem osiąganego stopnia kompresji:
- Który z wariantów pozwoli uzyskać większy stopień kompresji? Czy zależy to od charakterystyki danych wejściowych? Jeśli to możliwe, podaj ścisły dowód.
- Czy fakt, że znaki w pliku tekstowym są zapisane w "naturalnej" kolejności, czyli w takiej, w jakiej są odczytywane przez człowieka, pozwala na uzyskanie większego stopnia kompresji za pomocą metody (2) niż (3)?
- Oprócz wariantów (1)-(3) rozważ też sytuację, gdy zamiast kodu Huffmana stosowany jest kod, którego średnia długość jest dokładnie równa entropii odpowiedniego rozkładu (dla zainteresowanych: kodowanie arytmetyczne jest metodą, która w pewnym sensie pozwala osiągnąć średnią długość kodu równą entropii; zob. arithmetic coding).
- Jaka jest złożoność pamięciowa i czasowa metod (1)-(3)?
- Napisz programy kompresuj1, kompresuj2 i kompresuj3, implementujące algorytmy (1)-(3). Wykonaj eksperymenty, które potwierdzą poprawność Twoich odpowiedzi na powyższe pytania.
Wskazówki
Rozwiązanie
Rozwiązanie zadania powinno zawierać:
- wykonywalne programy,
- kody źródłowe programów,
- dane wejściowe wykorzystane do eksperymentów,
- raport zawierający:
- odpowiedzi na pytania, być może z dowodami,
- opis wykonanych eksperymentów i wykorzystanych danych wejściowych,
- interpretację wyników eksperymentów.
Pliki źródłowe i raport należy podpisać imieniem i nazwiskiem autora.
Ocenie podlegać będzie: poprawność i ścisłość rozumowania, poprawność implementacji, umiejętność zaplanowania eksperymentów i interpretacji ich wyników. Nie będzie brana pod uwagę efektywność czasowa i pamięciowa programów.
Zadanie 2
Treść
Dane wejściowe mają postać ciągu symboli nad alfabetem , gdzie , , . Kolejne znaki tego ciągu są generowane losowo z następującego rozkładu prawdopodobieństwa:
- symbol jest generowany z rozkładu ,
- jeśli , to jest generowany z rozkładu ,
- jeśli , to jest generowany z rozkładu ,
- jeśli , to jest generowany z rozkładu ,
gdzie , i to rozkłady prawdopodobieństwa na zbiorze takie, że:
- (czyli rozkład jest skupiony na zbiorze ),
- ,
- .
Polecenie
- Opracuj możliwie najskuteczniejszą metodę kompresji danych o powyższej charakterystyce, opartą na kodowaniu Huffmana. Zaimplementuj ją.
- Oszacuj teoretycznie ile średnio bitów pliku skompresowanego będzie przypadało na jeden symbol pliku wejściowego. Przyjmij, że znana jest entropia rozkładów i .
- Wykonaj eksperymenty, aby sprawdzić swoje przewidywania. Wygeneruj kilka ciągów o podanej wyżej charakterystyce, dla różnych wyborów rozkładów i , skompresuj je Twoją metodą i porównaj rozmiary plików wejściowych i wynikowych.
- Oszacuj teoretycznie wartość dla zwykłej kompresji Huffmana zastosowanej do danych o podanej charakterystyce. Czy Twój algorytm osiąga lepszą kompresję?
- Jaka dodatkowa informacja musiałaby być zapisana w skompresowanym pliku, aby umożliwić jego dekompresję? Oszacuj jej rozmiar.