Teoria informacji/TI Ćwiczenia 8: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Stromy (dyskusja | edycje)
Nie podano opisu zmian
 
 
(Nie pokazano 8 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
=== Kod Hamminga (7,4) ===
== Ćwiczenia ==


Projektowaniem efektywnych kodów korygujących błędy zajmuje się dziedzina informatyki nazywana teorią kodów.
{{cwiczenie|1 [Nieoptymalność reguły maksymalnego podobieństwa]|rmp|
Zwykle projektowanie kodu oznacza znalezienie kompromisu między efektywnością kodu i jego prostotą (mierzoną zarówno jako stopień złożoności samego algorytmu kodowania i dekodowania, jak i mocą obliczeniową potrzebną do tych operacji). Szczególnie użytecznymi kodami, ze względu na zwięzłość ich definicji, są kody liniowe.
Skonstruuj rozkład <math>A</math> i kanał <math>\Gamma</math>, dla którego [[Teoria informacji/TI Wykład 8#maks_podob|reguła maksymalnego podobieństwa]] nie jest optymalną regułą. Skonstruuj przykład, w którym reguła ta powoduje błąd z prawdopodobieństwem powyżej 90%.}}


{{wskazowka|||
}}
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<div class="mw-collapsible-content" style="display:none">
Można znaleźć przykład, gdy reguła ta nie odtworzy poprawnie ani jednego symbolu.
</div>
</div>


{{definicja|[Kod liniowy]|kod_liniowy|
{{rozwiazanie|||  
Kod liniowy długości n i rzędu k to dowolna liniowa podprzestrzeń C wymiaru k w przestrzeni wektorowej <math>\mathbb{F}^n</math> gdzie <math>\mathbb{F}</math> jest skończonym ciałem. Przestrzeń C definiuje zestaw poprawnych słów kodowych.
}}
Bazę tej przestrzeni (w postaci k wektorów długości n) zapisuje się często w postaci macierzy generującej kodu.}}
<div class="mw-collapsible mw-made=collapsible mw-collapsed">  
<div class="mw-collapsible-content" style="display:none">
Przykładem może być kanał opisywany następującą macierzą:


<center><math>
\begin{pmatrix}
0.9 & 0 & 0 & 0 & 0.1 \\
0 & 0.9 & 0 & 0 & 0.1 \\
1 & 0 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 & 0 \\
0 & 0 & 0 & 0 & 1
\end{pmatrix}
</math></center>


Na tych ćwiczeniach bedziemy się zajmować tylko ciałem <math>Z_2</math>, czyli operacjami modulo 2.
i rozkład <math>A = \langle 0.5, 0.5, 0, 0, 0 \rangle</math>, czyli używający tylko dwóch pierwszych symboli.
Przykładem prostego kodu liniowego nad ciałem <math>Z_2</math> jest Kod Hamminga (7,4). Koduje on czterobitowe wiadomości przy użyciu siedmiobitowych słów, w ten sposób że minimalna odległość Hamminga pomiędzy słowami kodowymi wynosi 3. Dzięki temu przekłamanie jednego bitu w każdym słowie może zostać zawsze wykryte i naprawione (czyli poprawny przekaz wiadomości jest możliwy gdy ilość błędów nie przekroczy 14%).
Reguła największego podobieństwa zawsze zinterpretuje sygnał jako któryś z ostatnich trzech symboli.
</div>
</div>


Macierz generująca tego kodu wygląda następująco:
<math>G := \begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1 \\
0 & 1 & 1 & 1 \\
1 & 0 & 1 & 1 \\
1 & 1 & 0 & 1 \\
\end{pmatrix}</math>


{{cwiczenie|2 [Wiedza zwiększająca niepewność]|wzn|
Na wykładzie wcześniej zostało pokazane, że <math>H(Y|X) \le H(Y)</math>.
Pokaż, że nie zawsze tak jest w przypadku [[Teoria informacji/TI Ćwiczenia 2#entropia_kolizji|innych miar entropii]].
Znajdź przykład, w którym uzyskanie jakiejś informacji może zwiększyć entropię Shannona innej informacji, tzn. <math>H(Y|X=a) > H(Y)</math>}}


Macierz wykrywania błędów dla tego kodu wygląda następująco:


<math>H_e := \begin{pmatrix}
{{cwiczenie|3 [Binarny kanał wymazujący]|bkg|
0 & 0 & 0 & 1 & 1 & 1 & 1 \\
''Binarny kanał wymazujący'' wygląda następująco:
0 & 1 & 1 & 0 & 0 & 1 & 1 \\
1 & 0 & 1 & 0 & 1 & 0 & 1 \\
\end{pmatrix}</math>


<center>[[grafika:erasure.PNG]]</center>


Aby zakodować czterobitową wiadomość <math>m</math> mnoży się ją przez macierz <math>G</math> (wyliczając każdy współczynnik modulo 2). Uzyskane siedmiobitowe słowo przesyła się następnie przez kanał. Odbiorca mnoży otrzymaną wiadomość przez macierz wykrywania błędów <math>H_e</math>, uzyskując wektor o długości trzech bitów. Jeśli ten wektor jest zerowy, oznacza to że nie nastąpiło żadne przekłamanie (bądź nastąpiło ich więcej niż 2, czego przy uzyciu tego kodu może nie dać się wykryć). Jeśli wektor jest różny od zerowego, wektor odczytany jako liczba binarna wskazuje na którym bicie nastąpiło przekłamanie - wystarczy zatem odwrócić wartość tego bitu aby uzyskać pierwotną wiadomość. W przypadku gdy w bloku nastąpiło więcej niż jedno przekłamanie, końcowy wynik może być oczywiście nieprawidłowy.
W tym przypadku <math>\mathcal{A}=\{0,1\}</math>, <math>\mathcal{B}=\{0,1,?\}</math>. Jego macierz przejść to:
<center><math>
\begin{pmatrix}
P & 0 & 1-P \\
0 & P & 1-P
\end{pmatrix}
</math></center>


Oblicz przepustowość tego kanału. Naszkicuj wykres informacji wzajemnej między wejściem a wyjściem w zależności od P i od rozkładu prawdopodobieństwa na wejściu.}}


{{cwiczenie|[Dekodowanie kodu (7,4)]|Ćwiczenie 1|
{{rozwiazanie|||
Udowodnij że jeśli nie nastąpiło przekłamanie, iloczn macierzy wykrywania błędów i przesłanego wektora zawsze jest zerowy.
}}
}}
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<div class="mw-collapsible-content" style="display:none">
Rozpisujemy
<center><math>I(A;B)=H(B)-H(B|A)</math></center>
Wynik możemy traktować jako [[Teoria informacji/TI Ćwiczenia 2#ke|kombinację źródeł]] - z prawdopodobieństwem <math>P</math> zwracamy wartość na wejściu (o entropii <math>H(A)</math>), a z prawdopodobieństwem <math>1-P</math> zwracamy wartość ''?'' (o entropii 0).


<center><math>H(B)=H(P) + P \cdot H(A) + (1-P) \cdot 0</math></center>


{{cwiczenie|[Jakość przekazu]|Ćwiczenie 2|
Gdy znamy symbol wejściowy, entropia <math>B</math> jest zawsze taka sama, równa <math>H(P)</math>. Tym samym
Załóżmy że prawdopodobieństwo przekłamania każdego bitu wynosi 5%. Jaka byłaby szansa bezbłędnego przekazu czterobitowej wiadomości przy zwykłym przekazywnaiu jej bit po bicie? Jaka jest szansa bezbłędnego przekazania gdy jest zakodowana kodem Hamminga (7,4)?}}
<center><math>I(A;B) = H(P) + P \cdot H(A) - H(P) = P \cdot H(A)</math></center>


<center><math>C_\Gamma = max_A (P \cdot H(A)) = P</math></center>


=== Kody liniowe ===
Wykres informacji wzajemnej w zależności od P oraz od rozkładu prawdopodobieństwa na wejściu powinien wyglądać mniej więcej tak:
<center>[[Grafika:ti_wykres2.jpg]]</center>
</div>
</div>


{{cwiczenie|[Szacowanie efektywnosci]|Ćwiczenie 3|
W zapisie informacji na płytach CD używa się kodu który do każdych 224 bitów dodaje 32 bity korygujące błędy (zapisując całość w bloku 256 bitów). Oszacuj jaka maksymalna może być w tym kodzie odległość Hamminga pomiedzy słowami kodowymi, i określ przy jakiej ilości błędów odczytu dane będą jeszcze odzyskiwane poprawnie.}}


{{cwiczenie|4 [Feedbacku dla kanału wymazującego]|wf|
W wielu praktycznych zastosowaniach nadawca może dowiedzieć się od odbiorcy, jak przebiega komunikacja. Załóżmy, że nadawca, dysponujący binarnym kanałem wymazującym, po każdym przesłanym symbolu poznaje wartość symbolu wyjściowego. Pokaż, jak może wykorzystać tę informację do przesyłania wiadomości bezbłędnie z szybkością odpowiadającą przepustowości kanału.}}


{{rozwiazanie|||
}}
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<div class="mw-collapsible-content" style="display:none">
Wystarczy, że będzie po każdym symbolu sprawdzał, czy dotarł poprawnie, a jeśli został zgubiony, będzie przesyłał go jeszcze raz.
Dla każdego symbolu oczekiwana liczba prób będzie wynosiła <math>\frac{1}{P}</math>, a więc szybkość transmisji będzie równa <math>P</math>
</div>
</div>


=== LDPC - macierze parzystości małej gęstości ===
== Zadania domowe ==
Jedną z metod generowania efektywnych kodów blokowych jest metoda LDPC. W metodzie tej na n-bitowe słowo nakładanych jest k losowych restrykcji postaci <math>x_{i_1} \oplus \ldots \oplus x_{i_p} = 0</math>, gdzie <math>x_i</math> oznacza i-ty bit słowa kodowego. Parametry k i p są dobrane tak aby każdego bitu dotyczyła co najmniej jedna restrykcja. Kod tworzony jest tylko przez słowa spełniające wszystkie restrykcje.


{{cwiczenie|[Szybkość kodów LDPC]|Ćwiczenie 4|
=== Zadanie 1 - Przepustowość kanałów z feedbackiem ===
Jaka jest oczekiwana liczba słów spełniających wszystkie k restrykcji?}}


{{cwiczenie|[Wydajność kodów LDPC]|Ćwiczenie 5|
Rozważmy kanał z pełną informacją zwrotną, w którym po przesłaniu każdego symbolu nadawca poznaje symbol na wyjściu.
Udowodnij że z dużym prawdopodobieństwem minimalna odległość między dowolną parą słów kodowych wynosi co najmniej <math>\frac{k}{\log n}</math>.}}
''Kod z feedbackiem'' definiujemy jako sekwencję mapowań <math>x_i(W,Y^{i-1})</math> określających kolejny symbol <math>x_i</math> na podstawie przesyłanej wiadomości <math>W</math> i dotychczas dostarczonych symboli <math>Y_1, Y_2, \ldots, Y_{i-1}</math>.  
''Przepustowość kanału z feedbackiem'' jest określana jako maksymalna szybkość transmisji przez kanał przy wykorzystaniu kodu takiej postaci. Udowodnij, że ta przepustowość jest równa klasycznej przepustowości kanału, czyli że wykorzystanie informacji zwrotnej nie może zwiększyć szybkości transmisji.
Zauważ, że nie jest to sprzeczne z ćwiczeniem 4 - jej wykorzystanie może znacząco uprościć konstrukcję samego kodu.

Aktualna wersja na dzień 20:55, 27 wrz 2020

Ćwiczenia

Ćwiczenie 1 [Nieoptymalność reguły maksymalnego podobieństwa]

Skonstruuj rozkład A i kanał Γ, dla którego reguła maksymalnego podobieństwa nie jest optymalną regułą. Skonstruuj przykład, w którym reguła ta powoduje błąd z prawdopodobieństwem powyżej 90%.

Wskazówka

Rozwiązanie


Ćwiczenie 2 [Wiedza zwiększająca niepewność]

Na wykładzie wcześniej zostało pokazane, że H(Y|X)H(Y). Pokaż, że nie zawsze tak jest w przypadku innych miar entropii.

Znajdź przykład, w którym uzyskanie jakiejś informacji może zwiększyć entropię Shannona innej informacji, tzn. H(Y|X=a)>H(Y)


Ćwiczenie 3 [Binarny kanał wymazujący]

Binarny kanał wymazujący wygląda następująco:

W tym przypadku 𝒜={0,1}, ={0,1,?}. Jego macierz przejść to:

(P01P0P1P)
Oblicz przepustowość tego kanału. Naszkicuj wykres informacji wzajemnej między wejściem a wyjściem w zależności od P i od rozkładu prawdopodobieństwa na wejściu.

Rozwiązanie


Ćwiczenie 4 [Feedbacku dla kanału wymazującego]

W wielu praktycznych zastosowaniach nadawca może dowiedzieć się od odbiorcy, jak przebiega komunikacja. Załóżmy, że nadawca, dysponujący binarnym kanałem wymazującym, po każdym przesłanym symbolu poznaje wartość symbolu wyjściowego. Pokaż, jak może wykorzystać tę informację do przesyłania wiadomości bezbłędnie z szybkością odpowiadającą przepustowości kanału.

Rozwiązanie

Zadania domowe

Zadanie 1 - Przepustowość kanałów z feedbackiem

Rozważmy kanał z pełną informacją zwrotną, w którym po przesłaniu każdego symbolu nadawca poznaje symbol na wyjściu. Kod z feedbackiem definiujemy jako sekwencję mapowań xi(W,Yi1) określających kolejny symbol xi na podstawie przesyłanej wiadomości W i dotychczas dostarczonych symboli Y1,Y2,,Yi1. Przepustowość kanału z feedbackiem jest określana jako maksymalna szybkość transmisji przez kanał przy wykorzystaniu kodu takiej postaci. Udowodnij, że ta przepustowość jest równa klasycznej przepustowości kanału, czyli że wykorzystanie informacji zwrotnej nie może zwiększyć szybkości transmisji. Zauważ, że nie jest to sprzeczne z ćwiczeniem 4 - jej wykorzystanie może znacząco uprościć konstrukcję samego kodu.