Kompresja
Transkrypt
Kompresja
Wieczorowe Studia Licencjackie Wrocław, 22.05.2007 Kodowanie informacji Kody korygujące błędy Wykład 11 (nieoficjalna notatka) Literatura - J. Adamek, Foundations of Coding, John Wiley & Sons, 1991. - D.G.Hoffman, D.A.Leonard, i in., Coding Theory, Dekker Inc. 1992. Cel: - ochrona przed błędami transmisji i zapisu – kody wykrywające i korygujące błędy Definicja (jak kodujemy) Dla alfabetu źródłowego A={0,1} kod K to odwzorowanie: K : Am → An co oznacza, że: - dane dzielimy na bloki o długości m; - każdy blok jest zamieniany na słowo kodowe o długości n. Podstawowe pojęcia (przypomnienie): - Słowo kodowe: K(ai) dla każdego ai∈Am - Kod blokowy: długość K(a) jest równa długości K(b) dla każdych a,b∈A (czyli teraz zajmiemy się tylko kodami blokowymi). Definicja (binarny kanał symetryczny) Przez binarny kanał symetryczny rozumiemy kanał komunikacyjny spełniający następujące warunki: − dane w postaci oryginalnej oraz dane w postaci zakodowanej to ciągi binarne, − prawdopodobieństwo błędu p pojawienia się 1 na wyjściu dla wartości wejściowej 0 jest równe prawdopodobieństwu pojawienia się 0 na wyjściu dla wartości wejściowej 1, − rozkład prawdopodobieństwa wartości wyjściowej jest niezależny od wcześniej przesyłanych wartości. UWAGA: - zakładamy, że 0 ≤ p < ½ (DLACZEGO?) Ogólny schemat kodowania korygującego błędy: − Cel: dane wejściowe zakodować do postaci, w której błędy kanału mogą być wykryte i/lub skorygowane − Model: Przed przesłaniem używamy algorytmu kodowania, który wyznacza nową reprezentację danych. Przesyłane są dane w postaci zakodowanej, po przesłaniu odtwarzamy postać oryginalną za pomocą algorytmu dekodowania, którego celem jest wykrycie (ewentualnych) błędów i/lub ich skorygowanie (o ile nie było ich za dużo). − Jakość kodowania: o rozmiar danych „nadmiarowych” (rozmiar danych zakodowanych, w porównaniu z rozmiarem danych oryginalnych); o Perr: prawdopodobieństwo powstania błędu przy odtwarzaniu danych (przy ustalonym prawdopodobieństwie błędu binarnego kanału symetrycznego). Definicja (zawartość informacyjna kodu) Przez zawartość informacyjną kodu blokowego K rozumiemy wartość R(K)=m / n, gdzie m to logarytm z liczby słów kodowych, a n długość słów kodowych. Intuicja: R(K) określa „odsetek danych oryginalnych” w ich zakodowanej postaci. Przykład – kod powtórzeniowy! Definicja Odległość Hamminga słów o równej długości a i b, d(a,b) jest równa liczbie bitów na których a i b są różne. Własności: − d(a,a)=0 − d(a,b)=d(b,a) − d(a,b)+d(b,c)≥d(a,c) Interpretacja odległości Hamminga na kostce k-wymiarowej (dla słów długości k). Przykład: kod powtórzeniowy i kod parzystości. WYKRYWANIE BLEDOW: - Kiedy wykryjemy błąd: gdy ODEBRANA WARTOSC NIE JEST SLOWEM KODOWYM! NIEPOPRAWNE DEKODOWANIE: - GDY ODKODUJEMY INNĄ WARTOŚĆ NIŻ PRZESLANA. PBB niepoprawnego kodowania: prawdopodobieństwo, że dotarła wartość, która jest bliższa innego niż przesłane słowa kodowego. - Perr(K) - prawdopodobieństwo, że słowo kodowe nie zostanie odkodowane w oryginalnej postaci. NIEWYKRYTY BŁĄD: w wyniku zostało uzyskane inne słowo kodowe niż przesłane. Czyli przesłane w, a otrzymane w’≠w oraz w’ też jest słowem kodowym. Schemat dekodowania kodów metodą maksymalnego prawdopodobieństwa (MMP): − niech y to blok danych na wyjściu kanału, równy długości słowa kodowego, − y dekodujemy poprzez wybór słowa kodowego x o najmniejszej odległości Hamminga od y. Twierdzenie 0 Jeśli w binarnym kanale symetrycznym odebrane zostało słowo w, to najbardziej prawdopodobne jest, że przesłane zostało słowo kodowe o najmniejszej odległości Hamminga od w. Dowód: - długość słowa kodowego to n Niech v to słowo kodowe o minimalnej odległości Hamminga od w (wśród słów kodowych). Niech d(w,v)=d. Wtedy P(out(w) | in(v)) = (1-p)n-dpd Dla każdego innego słowa kodowego v’ P(out(v’) | in(w)) < P(out(v) | in(w)) Definicja Kod K wykrywa t błędów, jeśli dla każdego słowa kodowego i każdego wyboru t’ ≤ t błędów w tym słowie, nowe słowo nie jest słowem kodowym. INTUICJA: - błąd NIE będzie wykryty, gdy błędy spowodują przekształcenie słowa KODOWEGO w na inne słowo kodowe v; - jeśli więc nie jest możliwe przekształcenie ŻADNEGO słowa kodowego na inne słowo kodowego przez zanegowanie (co najwyżej) t bitów, kod wykryje każdy układ (co najwyżej) t błędów. Definicja Kod K poprawia (koryguje) t błędów, jeśli dla każdego słowa kodowego i każdego wyboru t’≤t błędów w tym słowie wartość odtworzona za pomocą metody maksymalnego prawdopodobieństwa równa jest temu słowu kodowemu. Przykład: Dla kodu powtórzeniowego. Dla kodu parzystości. Df. (Minimalna) odległość kodu K oznaczana przez d(K): minimum po wszystkich słowach kodowych a, b z odległości Hamminga d(a,b). Przykład: Dla kodu powtórzeniowego. Dla kodu parzystości. Twierdzenie 1. Kod K wykrywa t błędów ⇔ d(K) > t. Dowód: ⇐ Jeśli d(K)>t, to dla - każdego wysłanego słowa kodowego w - i każdego układu t’≤t błędów - uzyskamy słowo v takie, że d(w,v) ≤ d(K) < t - a zatem v nie jest słowem kodowym! ⇒ Jeśli d(K) ≤ t, to - istnieją słowa kodowe w, v takie, że d(w,v) ≤ t; - czyli po przesłaniu w - i przy błędach na pozycjach, na których w i v się różnią (jest ich co najwyżej t) - uzyskamy słowo v. Twierdzenie 2. Kod K koryguje t błędów ⇔ d(K) > 2t. Dowód: ⇒ Jeśli d(K) > 2t, to dla - każdego wysłanego słowa kodowego w - i każdego układu t’≤t błędów - uzyskamy słowo v takie, że d(w, v) ≤ t (A) - niech x będzie innym słowem kodowym, - wtedy d(x,w) > 2t (z założenia) - d(w,v)+d(v,x) ≥ d(w,x)>2t [z nierówności trójkąta] - ... czyli d(v,x) > 2t – t = t [ p. (A) ] - ... czyli d(v,w)< d(v,x) dla każdego słowa kodowego x różnego od w - czyli MMP odkoduje słowo w. ⇐ Jeśli d(K) ≤ 2t, to - istnieją słowa kodowe w, v takie, że d(w,v)=d ≤ 2t; - Niech i1,i2,…id to pozycje na których różnią się w i v; - załóżmy, że wysłane zostało słowo kodowe w, - ... a następnie błędy wystąpiły na pozycjach i1,i3, i5… (wszystkie NIEPARZYSTE pozycje wśród i1,i2,…id) i uzyskaliśmy x; - wtedy d(w, x)≥ d/2 oraz d(v, x) ≤d/2 - czyli MMP(w) nie odkoduje słowa w (słowo v ma nie większą odległość od x niż w)