Kody źródłowe jednoznacznie dekodowalne Zadanie Ile najwięcej słów kodowych może liczyć kod binarny jednoznacznie dekodowalny, którego najdłuższe słowo ma siedem liter? (Odp. 28) Zadanie 2 Zbiór sześciu wiadomości x,..., x i,..., x 6 zakodowano według pięciu różnych kodów A F podanych w poniższej tabeli: Wiadomość p(x i ) Kod A Kod B Kod C Kod D Kod E x x 2 x 3 x 4 x 5 x 6 2 000 0 0 0 4 00 0 0 0 00 6 00 0 0 00 0 6 0 0 0 0 0 6 00 0 0 0 6 0 0 0 00 Określ, które z podanych kodów są jednoznacznie dekodowalne. Policz średnią długość dla każdego kodu jednoznacznie dekodowalnego. Zadanie 3 Czy można w alfabecie ternarnym skonstruować kod jednoznacznie dekodowalny, jeśli długości słów kodowych miałyby wynosić:, 2, 2, 2, 2, 2, 3, 3, 3, 3? A jeśli długości słów kodowych miałyby wynosić:, 2, 2, 2, 2, 2, 3, 3, 3? Jak wiele takich kodów (różnych) można skonstruować? (Odp. 6,53,840) Zadanie 4 (kolokwium z lat poprzednich) Zbiór dziesięciu wiadomości x,..., x i,..., x 0 należy zakodować w słowa kodowe o długościach odpowiednio l,..., l i,..., l 0 zebranych w tabeli poniżej (podano warianty dla trzech kodów: A, B, C należy udzielić odpowiedzi dla każdego kodu oddzielnie). Proszę określić minimalną długość alfabetu kodowego, dla którego tak skonstruowany kod jest natychmiastowo dekodowalny. Proszę podać taki przykładowy kod. i 2 3 4 5 6 7 8 9 0 l i B 2 2 2 2 2 2 2 3 A 2 2 2 2 2 3 3 C 2 2 2 3 3 3 3 Zadanie 5 Załóżmy, że alfabet kodu liczy D elementów oraz że sekwencja n liczb całkowitych l i o następującej charakterystyce: l l i l n, spełnia nierówność McMillana-Krafta. Na ile sposobów można wybrać słowa kodowe w,..., w n o długościach l(w i ) = l i, tak żeby zbiór tych słów kodowych mógł posłużyć do utworzenia kodu jednoznacznie dekodowalnego? Strona z 7
Kody źródłowe zwięzłe Zadanie 6 Źródło generuje równoprawdopodobne 4-symbolowe słowa kodowe kodu zwięzłego trójsymbolowego. Policz, ile maksymalnie informacji o źródle można uzyskać po odebraniu ośmiu słów. (Odp. Ok. 50 bit) Zadanie 7 Udowodnij że dla każdego kodu zwięzłego (ewentualnie kodu optymalnego) dla źródła o rozkładzie prawdopodobieństwa (p i ) zachodzi następująca zależność między prawdopodobieństwami wystąpienia wiadomości a długościami reprezentujących je słów kodowych l i : p j > p k l j l k. Zadanie 8 Źródło generuje trzy wiadomości z prawdopodobieństwami: p p 2 p 3. Pokaż, że średnia długość binarnego kodu zwięzłego C dla tego źródła wynosi: L(C) = 2 p. Ile będzie wynosiła średnia długość słowa kodu tego typu dla źródła generującego cztery wiadomości z prawdopodobieństwami: p p 2 p 3 p 4? Zadanie 9 Zakoduj w binarnym kodzie Shannona-Fano zbiór dziesięciu jednakowo prawdopodobnych wiadomości. Wykaż, że jest to kod zwięzły. Zadanie 0 Znajdź entropię źródła X, które generuje nieskończenie wiele wiadomości m, m 2,..., m i,... (zbiór wiadomości jest równoliczny ze zbiorem liczb naturalnych) o prawdopodobieństwie: p i = 2 i (i =, 2, 3,... ). Znajdź optymalny binarny kod jednoznacznie dekodowalny i oblicz jego średnią długość. (Odp. 2 bit /wiadom.) Zadanie Źródło generuje sto różnych wiadomości w taki sposób, że ograniczenie dolne średniej długości słowa kodu źródłowego jednoznacznie dekodowalnego jest najmniej korzystne z możliwych. Proszę znaleźć najmniejszy możliwy do osiągnięcia w takim przypadku nadmiar binarnego kodu źródłowego jednoznacznie dekodowalnego. (Odp. ok. 0.0469) Kody Huffmana Zadanie 2 (kolokwium z lat poprzednich) Proszę pokazać, że dla żadnego źródła o siedmiu wiadomościach nie da się z użyciem kodowania Huffmana uzyskać kodu o podanym niżej zbiorze słów kodowych: 0 00 0 0 00 000. Strona 2 z 7
Zadanie 3 (kolokwium z lat poprzednich) Źródło S generuje wiadomości z prawdopodobieństwami 0,3; 0,3; 0,2 i 0,2. Ile istnieje binarnych kodów zwięzłych dla tego źródła? Ile z nich to kody Huffmana? (Odp. 24 kody, z czego 8 to kody Huffmana) Zadanie 4 (kolokwium z lat poprzednich) Źródło X generuje wiadomości x, x 2,..., x n z prawdopodobieństwami p p 2 p n oraz dodatkowo: i=,...,n 3: p i > p i+2 + + p n. Pokaż, jakie będą długości słów kodowych dla dowolnego binarnego kodu Huffmana tego źródła. Ile istnieje różnych binarnych kodów Huffmana dla tego źródła? Zadanie 5 (kolokwium z lat poprzednich) Pewne źródło generuje losowo wiadomości ze zbioru: x, x 2, x 3, x 4, a następnie przesyła je przy użyciu zwięzłego binarnego kodu jednoznacznie dekodowalnego (impuls trwa 5 µs każdy). Oblicz maksymalną szybkość przesyłania słów kodowych (w jednostkach: [ słów kod. /s]), jeśli: a) Pr{x i } = Pr{x j } : i, j =, 2, 3, 4, b) Pr{x } = 0,5, Pr{x 2 } = 0,25, Pr{x 3 } = Pr{x 4 }. Zadanie 6 (kolokwium z lat poprzednich) Źródło generuje osiem wiadomości elementarnych według następującego rozkładu prawdopodobieństwa: Pr{x } = 2 5 ; Pr{x 2} = 5 ; Pr{x 3} = Pr{x 4 } = 0 ; Pr{x 5} = Pr{x 6 } = Pr{x 7 } = Pr{x 8 }. Znajdź: a) jednoznacznie dekodowalny kod zwięzły dla tego źródła, gdy alfabet kodu to: {,,, }; b) zbiór list długości ciągów kodowych dla wszystkich kodów zwięzłych jednoznacznie dekodowalnych tego źródła dla wszystkich możliwych długości używanych alfabetów. Zadanie 7 (kolokwium z lat poprzednich) Odczytaj tekst 000000000000 zakodowany binarnym kodem Huffmana wiedząc, że względna częstość występowania symboli w tekście jest następująca: A(3), B(), K(), R(4), M() [tj. na trzy pojawienia się A mamy średnio cztery pojawienia się R itd.]. Gdyby w trakcie budowy drzewa Huffmana miała miejsce sytuacja, że do wyboru są więcej niż dwa wierzchołki przypisane konkretnemu symbolowi, wybierz wierzchołek związany z 0 jako przyporządkowany symbolowi występującemu wcześniej w alfabecie. Zadanie 8 (kolokwium z lat poprzednich) Źródło emituje znaki binarne z prawdopodobieństwem: Pr{0} = p, Pr{} = p. Dla celów transmisji chcemy zastosować następujący kod: 000, 0 00, 00 00,..., 0000000, 00000000 0; tzn. jeśli źródło wyemituje na raz mniej niż 8 zer przed wyemitowaniem jedynki, wysyłamy słowo kodowe o postaci e e 2 e 3, gdzie e e 2 e 3 stanowi binarną reprezentację liczby zer, natomiast gdy wystąpi na raz 8 zer, taką sekwencję reprezentuje się za pomocą słowa 0. Jako zdarzenie zdefinujemy wygenerowanie słowa kodowego. Czy otrzymany kod jest kodem jednoznacznie dekodowalnym? Znajdź A c : wartość średnią liczby bitów słowa kodowego na zdarzenie. Znajdź A s : wartość średnią liczby bitów wygenerowanych przez źródło wiadomości na zdarzenie. Wartości średnie są rozumiane probabilistycznie. Następnie dla Strona 3 z 7
p = 0,9 porównaj Ac /A s ze średnią długością słowa kodowego na symbol źródła w binarnym kodowaniu Huffmana czwartego rozszerzenia oryginalnego źródła (tego o rozkładzie (p, p)). Co nam to mówi o optymalności kodowania Huffmana? Zadanie 9 (kolokwium z lat poprzednich) Nasz kolega rzuca w ukryciu parą rozróżnialnych kostek sześciennych, przy czym po każdym rzucie informuje nas o iloczynie wyrzuconych oczek. Wymyślił sobie, że będzie stosował w tym celu jednakowej długości ciągi binarne (rozumiemy, co kryje się pod określonymi ciągami, bo powiedział nam to wcześniej). Jaki jest nadmiar stosowanego przez niego kodu, jeśli wybrał najkrótszą możliwą długość ciągów i ile średnio symboli mógłby zaoszczędzić przy podawaniu wyników 000 rzutów, gdyby wybrał najlepszy możliwy dla tej sytuacji kod? Zadanie 20 (kolokwium z lat poprzednich) Rzucamy sfałszowaną monetą, dla której prawdopodobieństwo wypadnięcia reszki to 4. Rzut jest wykonywany co sekundę. Proszę zaprojektować koder, który będzie kodował binarnie wyniki kolejnych rzutów w taki sposób, że średnia liczba bitów na rzut będzie mniejsza niż jeden. Zadanie 2 Na podstawie analizy kodowania Huffmana dla bezpamięciowego źródła generującego N 2 wiadomości, pokaż że tworzone w alfabecie binarnym słowa kodowe o długościach l i spełniają nierówność: N l i ( N 2 + N 2 ). 2 Zadanie 22 (kolokwium z lat poprzednich) Mamy bezpamięciowe źródło wiadomości: [ m m 2 m 3 m 4 m 5 m 6 m 7 m 8 0,03 0,6 0, 0,3 0,07 0,07 0,9 0,06 i= Zakoduj wiadomości pochodzące z tego źródła kodem jednoznacznie dekodowalnym w taki sposób, żeby zminimalizować średni czas nadawania zakodowanej wiadomości, jeśli alfabet składa się z trzech liter: a, b, c. Czasy nadawania poszczególnych liter wynoszą: a 3 sekundy, b 2 sekundy oraz c 3 sekundy. Podaj średni czas nadawania zakodowanej wiadomości. (Odp. 4,54 sekundy) Zadanie 23 (kolokwium z lat poprzednich) Mamy dane bezpamięciowe źródło wiadomości: [ m m 2 m 3 m 4 m 5 m 6 m 7 m 8 m 9 m 0 m m 2 m 3 0,04 0,04 0,2 0,008 0,2 0,04 0,008 0,2 0,04 0,008 0,2 0,008 0,008 Proszę znaleźć (jeśli jest to w ogóle możliwe) jednoznacznie dekodowalny optymalny kod źródłowy o średniej długości większej niż. Odpowiedni alfabet kodowy proszę zaproponować samemu. Zadanie 24 (kolokwium z lat poprzednich) Pewne źródło informacji X nadaje wiadomości, z których każda to albo x albo x 2, albo x 3. Źródło nie jest bezpamięciowe i jesteśmy w stanie podać prawdopodobieństwa warunkowe wystąpienia wiadomości x j bezpośrednio po wiadomości x i. Zadano je macierzą, w której element ]. ]. Strona 4 z 7
umiejscowiony w wierszu j oraz kolumnie i podaje prawdopodobieństwo Pr{x j x i }: 0,3 0,2 0,4 0,4 0,7 0,2 0,3 0, 0,4 Proszę podać nadmiar kodu zwięzłego, który koduje sekwencje (x k x l ), k, l {, 2, 3} (tj. każda kodowana sekwencja jest złożona z dwóch wiadomości generowanych przez źródło X ) i który używa alfabetu {a, b, c, d}. Zadanie 25 Algorytm Huffmana polega między innymi na tworzeniu ciągu zredukowanych źródeł wiadomości w taki sposób, że za każdym razem (tzn. na etapie redukcji numer i) musimy obliczać prawdopodobieństwo p (i) Σ pewnej liczby najmniej prawdopodobnych wiadomości. Pokaż, że średnią długość binarnego kodu Huffmana C można obliczyć jako: L(C) = + i p (i) Σ. Zadanie 26 Zaproponuj algorytm definiujący D-arny kod Huffmana C, który nie tylko minimalizuje średnią długość kodu: L(C) = p i l i, i ale także minimalizuje całkowitą długość kodu, rozumianą jako: σ(c) = i l i. Zadanie 27 Na podstawie analizy kodowania Huffmana (lub korzystając z wyników zad. 26) pokaż, że dla bezpamięciowego źródła generującego N wiadomości, słowa kodowe binarnego kodu zwięzłego o długościach l i spełniają poniższą nierówność: Kompresja bezstratna N l i N lg N. Zadanie 28 Skompresuj za pomocą adaptacyjnego (dynamicznego) kodu Huffmana sekwencję: i= GŻEGŻÓŁKA JEŻA Zadanie 29 (kolokwium z lat poprzednich) Proszę zapisać binarnie za pomocą czterech symboli ostatnią cyfrę swojego indeksu (np. dla 5 to będzie 00), następnie powtórzyć ją nieskończenie wiele razy otrzyma się sekwencję s (np. dla 5 to będzie 000000... ). W pewnej chwili drzewo adaptacyjnego kodu Huffmana, skonstruowane równolegle w koderze i dekoderze, zapisane w postaci listy ma postać: Strona 5 z 7
0, a,, b, c, d, 2, 2 Poczynając od tej chwili obserwujemy koder i widzimy, że wysyła sekwencję s. Proszę pokazać, co zdekoduje dekoder. Symbole, które nie wystąpiły wcześniej, są przez koder przesyłane w kodzie ASCII. Zadanie 30 Skompresuj za pomocą kodu arytmetycznego sekwencję ( oznacza koniec sekwencji): BUFFALO BILL Rozkład źródła znajdź na podstawie podanej sekwencji (w razie potrzeby można zaokrąglić do dwóch miejsc po przecinku dla uproszczenia obliczeń). Zbadaj efektywność kodu. Zadanie 3 Przy zadanej w tabeli statystyce źródła sprawdź, jaką wiadomość zakodowano za pomocą następującej sekwencji bitów używając kodowania arytmetycznego ( oznacza koniec sekwencji): 0000000000000 Wiadomość Prawdopodobieństwo skumulowane A [0,0; 0,) I [0,; 0,2) M [0,2; 0,4) S [0,4; 0,6) Z [0,6; 0,8) [0,8; 0,9) [0,9;,0) Inne Zadanie 32 (*) Gra w dwadzieścia pytań : zadający zagadkę wybiera obiekt x ze skończonego (ale raczej dużego) zbioru obiektów S = {s,..., s n }, przy czym prawdopodobieństwo, że jako x wybierze s i wynosi p i (odgadujący zna zbiór S oraz prawdopodobieństwa wybrania każdego z obiektów). Trzeba zgadnąć, o który obiekt chodzi, zadając po kolei pytania postaci: Q i : Czy x należy do T i?, gdzie T i jest pewnym podzbiorem S (przy zadawaniu pytania Q i zgadujący oczywiście precyzyjnie definiuje zbiór T i ). Możliwa odpowiedź to tylko tak lub nie, zadający zagadkę odpowiada zgodnie z prawdą. Proszę w oparciu o znajomość teorii informacji podać uniwersalną strategię zadawania pytań, która da szansę na odgadnięcie obiektu x przy zadawaniu jak najmniejszej liczby pytań. Zadanie 33 (*) Teorię informacji (w szczególności zwięzłe kodowanie źródłowe) można użyć do zaprojektowania efektywnych testów przesiewowych krwi. Załóżmy, że mamy do przebadania pod kątem obecności wirusa N próbek krwi. Prawodopodobieństwo pozytywnego wyniku (czyli wykrycia wirusa) dla każdej próbki jest niewielkie (p = 0,0), a testy są kosztowne, więc trzeba minimalizować ich liczbę. Zamiast badać każdą próbkę z osobna, można badać zmieszane fragmenty Strona 6 z 7
próbek. Zakładamy wtedy, że wynik będzie pozytywny, jeśli choć jedna z wymieszanych próbek zawierała wirusa. Zakładamy też, że każdą próbkę można podzielić na dowolnie wiele fragmentów. Ostatecznie musimy jednak dla każdej próbki wiedzieć czy na pewno zawiera wirusa czy nie. Jak maksymalnie zmniejszyć oczekiwaną liczbę testów do wykonania? Zaprojektuj badanie dla 300 próbek i podaj oczekiwaną liczbę testów. Informacja dodatkowa: Na kartkach z zadaniami do kolejnego kolokwium znajdą Państwo następujące dane, być może pomocne przy rozwiązywaniu zadań: H(X, Y ) = H(X) + H(Y X) (reguła łańcuchowa) I(X; Y ) = H(X) H(X Y ) = H(Y ) H(Y X) = H(X) + H(Y ) H(X, Y ) X, Y niezależne: H(X, Y ) = H(X) + H(Y ) Tabela opisująca kod ASCII (b 7 : najstarszy bit, np. a jest reprezentowane przez 0000): b 7 0 0 0 0 b 6 0 0 0 0 b 5 0 0 0 0 b 4 b 3 b 2 b 0 0 0 0 NUL DLE SP 0 P p 0 0 0 SOH DC! A Q a q 0 0 0 STX DC2 2 B R b r 0 0 ETX DC3 # 3 C S c s 0 0 0 EOT DC4 $ 4 D T d t 0 0 ENQ NAK % 5 E U e u 0 0 ACK SYN & 6 F V f v 0 BEL ETB 7 G W g w 0 0 0 BS CAN ( 8 H X h x 0 0 HT EM ) 9 I Y i y 0 0 LF SUB * : J Z j z 0 VT ESC + ; K [ k { 0 0 FF FC, < L \ l 0 CR GS - = M ] m } 0 SO RS. > N ˆ n SI US /? O o DEL Strona 7 z 7