Kodowanie w kanałach
Transkrypt
Kodowanie w kanałach
Kodowanie blokowe Kodwanie Hamminga Kodowanie w kanałach Marek Śmieja Teoria informacji 1 / 20 Kodowanie blokowe Kodwanie Hamminga Twierdzenie Shannona Przypomnienie Dla kanału o pojemności C = I (X ; Y ) można zdefiniować kod blokowy, który pozwala transmitować R < C bitów informacji w jednym bicie wiadomości zapewnia dowolnie mały błąd transmisji jeśli tylko długość bloku jest odpowiednio duża! Jak praktycznie konstruować takie kody? 2 / 20 Kodowanie blokowe Kodwanie Hamminga Twierdzenie Shannona Przypomnienie Dla kanału o pojemności C = I (X ; Y ) można zdefiniować kod blokowy, który pozwala transmitować R < C bitów informacji w jednym bicie wiadomości zapewnia dowolnie mały błąd transmisji jeśli tylko długość bloku jest odpowiednio duża! Jak praktycznie konstruować takie kody? 2 / 20 Kodowanie blokowe Kodwanie Hamminga Uwagi Kod musi być prosty – szybkie kodowanie i dekodowanie Należy dodać do bitów wiadomości dodatkowe bity, które: wykryją błędu (detekcja) naprawią błędy (korekcja) 3 / 20 Kodowanie blokowe Kodwanie Hamminga Uwagi Kod musi być prosty – szybkie kodowanie i dekodowanie Należy dodać do bitów wiadomości dodatkowe bity, które: wykryją błędu (detekcja) naprawią błędy (korekcja) 3 / 20 Kodowanie blokowe Kodwanie Hamminga Kod powtórzeniowy Idea: powtarzajmy informację Jeśli chcemy przesłać bit 1, to prześlijmy 11111 Dekodowanie to głosowanie większościowe Rząd to 1 5 Jeśli dopuszczamy mniejszy błąd to powtarzajmy więcej bitów Wtedy błąd maleje, ale rząd też Twierdzenie Shannona mówi że dla każdego błędu można skonstruować kod o tym samym rzędzie bliskim pojemności kanału 4 / 20 Kodowanie blokowe Kodwanie Hamminga Kod powtórzeniowy Idea: powtarzajmy informację Jeśli chcemy przesłać bit 1, to prześlijmy 11111 Dekodowanie to głosowanie większościowe Rząd to 1 5 Jeśli dopuszczamy mniejszy błąd to powtarzajmy więcej bitów Wtedy błąd maleje, ale rząd też Twierdzenie Shannona mówi że dla każdego błędu można skonstruować kod o tym samym rzędzie bliskim pojemności kanału 4 / 20 Kodowanie blokowe Kodwanie Hamminga Kod powtórzeniowy Idea: powtarzajmy informację Jeśli chcemy przesłać bit 1, to prześlijmy 11111 Dekodowanie to głosowanie większościowe Rząd to 1 5 Jeśli dopuszczamy mniejszy błąd to powtarzajmy więcej bitów Wtedy błąd maleje, ale rząd też Twierdzenie Shannona mówi że dla każdego błędu można skonstruować kod o tym samym rzędzie bliskim pojemności kanału 4 / 20 Kodowanie blokowe Kodwanie Hamminga Kod powtórzeniowy Idea: powtarzajmy informację Jeśli chcemy przesłać bit 1, to prześlijmy 11111 Dekodowanie to głosowanie większościowe Rząd to 1 5 Jeśli dopuszczamy mniejszy błąd to powtarzajmy więcej bitów Wtedy błąd maleje, ale rząd też Twierdzenie Shannona mówi że dla każdego błędu można skonstruować kod o tym samym rzędzie bliskim pojemności kanału 4 / 20 Kodowanie blokowe Kodwanie Hamminga Kod powtórzeniowy Idea: powtarzajmy informację Jeśli chcemy przesłać bit 1, to prześlijmy 11111 Dekodowanie to głosowanie większościowe Rząd to 1 5 Jeśli dopuszczamy mniejszy błąd to powtarzajmy więcej bitów Wtedy błąd maleje, ale rząd też Twierdzenie Shannona mówi że dla każdego błędu można skonstruować kod o tym samym rzędzie bliskim pojemności kanału 4 / 20 Kodowanie blokowe Kodwanie Hamminga Kod powtórzeniowy Idea: powtarzajmy informację Jeśli chcemy przesłać bit 1, to prześlijmy 11111 Dekodowanie to głosowanie większościowe Rząd to 1 5 Jeśli dopuszczamy mniejszy błąd to powtarzajmy więcej bitów Wtedy błąd maleje, ale rząd też Twierdzenie Shannona mówi że dla każdego błędu można skonstruować kod o tym samym rzędzie bliskim pojemności kanału 4 / 20 Kodowanie blokowe Kodwanie Hamminga Kod powtórzeniowy Idea: powtarzajmy informację Jeśli chcemy przesłać bit 1, to prześlijmy 11111 Dekodowanie to głosowanie większościowe Rząd to 1 5 Jeśli dopuszczamy mniejszy błąd to powtarzajmy więcej bitów Wtedy błąd maleje, ale rząd też Twierdzenie Shannona mówi że dla każdego błędu można skonstruować kod o tym samym rzędzie bliskim pojemności kanału 4 / 20 Kodowanie blokowe Kodwanie Hamminga Kod powtórzeniowy Idea: powtarzajmy informację Jeśli chcemy przesłać bit 1, to prześlijmy 11111 Dekodowanie to głosowanie większościowe Rząd to 1 5 Jeśli dopuszczamy mniejszy błąd to powtarzajmy więcej bitów Wtedy błąd maleje, ale rząd też Twierdzenie Shannona mówi że dla każdego błędu można skonstruować kod o tym samym rzędzie bliskim pojemności kanału 4 / 20 Kodowanie blokowe Kodwanie Hamminga Kod parzystości Chcemy przesłać n bitów informacji Dodajmy jeden bit parzystości: 0 oznacza parzystą ilość jedynek w bitach informacji, a 1 nieparzystą Strategia: po otrzymaniu wiadomości sprawdzamy ilość jedynek i porównujemy z bitem parzystości Korzyści: jesteśmy w stanie wykryć nieparzystą ilość błędów tylko jednym dodatkowym bitem Wady: parzysta ilość błędów nie zostaje wykryta Wady: nie wiemy gdzie nastąpił błąd Wady: błąd mógł nastąpić na bicie parzystości 5 / 20 Kodowanie blokowe Kodwanie Hamminga Kod parzystości Chcemy przesłać n bitów informacji Dodajmy jeden bit parzystości: 0 oznacza parzystą ilość jedynek w bitach informacji, a 1 nieparzystą Strategia: po otrzymaniu wiadomości sprawdzamy ilość jedynek i porównujemy z bitem parzystości Korzyści: jesteśmy w stanie wykryć nieparzystą ilość błędów tylko jednym dodatkowym bitem Wady: parzysta ilość błędów nie zostaje wykryta Wady: nie wiemy gdzie nastąpił błąd Wady: błąd mógł nastąpić na bicie parzystości 5 / 20 Kodowanie blokowe Kodwanie Hamminga Kod parzystości Chcemy przesłać n bitów informacji Dodajmy jeden bit parzystości: 0 oznacza parzystą ilość jedynek w bitach informacji, a 1 nieparzystą Strategia: po otrzymaniu wiadomości sprawdzamy ilość jedynek i porównujemy z bitem parzystości Korzyści: jesteśmy w stanie wykryć nieparzystą ilość błędów tylko jednym dodatkowym bitem Wady: parzysta ilość błędów nie zostaje wykryta Wady: nie wiemy gdzie nastąpił błąd Wady: błąd mógł nastąpić na bicie parzystości 5 / 20 Kodowanie blokowe Kodwanie Hamminga Kod parzystości Chcemy przesłać n bitów informacji Dodajmy jeden bit parzystości: 0 oznacza parzystą ilość jedynek w bitach informacji, a 1 nieparzystą Strategia: po otrzymaniu wiadomości sprawdzamy ilość jedynek i porównujemy z bitem parzystości Korzyści: jesteśmy w stanie wykryć nieparzystą ilość błędów tylko jednym dodatkowym bitem Wady: parzysta ilość błędów nie zostaje wykryta Wady: nie wiemy gdzie nastąpił błąd Wady: błąd mógł nastąpić na bicie parzystości 5 / 20 Kodowanie blokowe Kodwanie Hamminga Kod parzystości Chcemy przesłać n bitów informacji Dodajmy jeden bit parzystości: 0 oznacza parzystą ilość jedynek w bitach informacji, a 1 nieparzystą Strategia: po otrzymaniu wiadomości sprawdzamy ilość jedynek i porównujemy z bitem parzystości Korzyści: jesteśmy w stanie wykryć nieparzystą ilość błędów tylko jednym dodatkowym bitem Wady: parzysta ilość błędów nie zostaje wykryta Wady: nie wiemy gdzie nastąpił błąd Wady: błąd mógł nastąpić na bicie parzystości 5 / 20 Kodowanie blokowe Kodwanie Hamminga Kod Hamminga Schemat można rozszerzyć o większą ilość bitów parzystości Można dedykować bit parzystości do mniejszych fragmentów wiadomości Ta idea stoi u podstaw kodowania Hamminga – jednego z najprostszych praktycznych schematów kodowania w kanałach 6 / 20 Kodowanie blokowe Kodwanie Hamminga Kod Hamminga Schemat można rozszerzyć o większą ilość bitów parzystości Można dedykować bit parzystości do mniejszych fragmentów wiadomości Ta idea stoi u podstaw kodowania Hamminga – jednego z najprostszych praktycznych schematów kodowania w kanałach 6 / 20 Kodowanie blokowe Kodwanie Hamminga Kod Hamminga Schemat można rozszerzyć o większą ilość bitów parzystości Można dedykować bit parzystości do mniejszych fragmentów wiadomości Ta idea stoi u podstaw kodowania Hamminga – jednego z najprostszych praktycznych schematów kodowania w kanałach 6 / 20 Kodowanie blokowe Kodwanie Hamminga Macierz parzystości Chcemy przesłać 4 bity informacji w 7 bitach wiadomości Rozważmy zbiór niezerowych binarnych wektorów długości 3. Zapiszmy je jako kolumny macierzy: 0 0 0 1 1 1 1 H= 0 1 1 0 0 1 1 1 0 1 0 1 0 1 Będzie to tak zwana macierz parzystości sprawdzająca gdzie w kodzie wystąpił błąd 7 / 20 Kodowanie blokowe Kodwanie Hamminga Macierz parzystości Chcemy przesłać 4 bity informacji w 7 bitach wiadomości Rozważmy zbiór niezerowych binarnych wektorów długości 3. Zapiszmy je jako kolumny macierzy: 0 0 0 1 1 1 1 H= 0 1 1 0 0 1 1 1 0 1 0 1 0 1 Będzie to tak zwana macierz parzystości sprawdzająca gdzie w kodzie wystąpił błąd 7 / 20 Kodowanie blokowe Kodwanie Hamminga Jądro odwzorowania linowego Uwaga: będziemy wykonywać operacje modulo 2 Dla macierzy H (przekształcenia liniowego), jądrem nazywamy zbiór wektorów x spełniających: Hx = 0 Jeśli H ∈ Rn×m : Rm → Rn , to jądro ma wymiar (m − n) - jako przestrzeń linowa Oznacza to, że istnieje 2m−n wektorów binarnych należących do jądra 8 / 20 Kodowanie blokowe Kodwanie Hamminga Jądro odwzorowania linowego Uwaga: będziemy wykonywać operacje modulo 2 Dla macierzy H (przekształcenia liniowego), jądrem nazywamy zbiór wektorów x spełniających: Hx = 0 Jeśli H ∈ Rn×m : Rm → Rn , to jądro ma wymiar (m − n) - jako przestrzeń linowa Oznacza to, że istnieje 2m−n wektorów binarnych należących do jądra 8 / 20 Kodowanie blokowe Kodwanie Hamminga Jądro odwzorowania linowego Uwaga: będziemy wykonywać operacje modulo 2 Dla macierzy H (przekształcenia liniowego), jądrem nazywamy zbiór wektorów x spełniających: Hx = 0 Jeśli H ∈ Rn×m : Rm → Rn , to jądro ma wymiar (m − n) - jako przestrzeń linowa Oznacza to, że istnieje 2m−n wektorów binarnych należących do jądra 8 / 20 Kodowanie blokowe Kodwanie Hamminga Kody Dla naszego H wymiar to 4, czyli mamy 24 wektorów w jądrze H: 0000000 0001111 0010110 0011001 0100101 0101010 0110011 0111100 1000011 1001100 1010101 1011010 1100110 1101001 1110000 1111111 To będą nasze kody Wektory jądra pomnożone przez H dają 000 - ta informacja będzie kluczowa do detekcji błędów 9 / 20 Kodowanie blokowe Kodwanie Hamminga Kody Dla naszego H wymiar to 4, czyli mamy 24 wektorów w jądrze H: 0000000 0001111 0010110 0011001 0100101 0101010 0110011 0111100 1000011 1001100 1010101 1011010 1100110 1101001 1110000 1111111 To będą nasze kody Wektory jądra pomnożone przez H dają 000 - ta informacja będzie kluczowa do detekcji błędów 9 / 20 Kodowanie blokowe Kodwanie Hamminga Kodowanie Aby generować kody, elementy jądra H, trzeba mieć bazę ker (H) Rozwiązujemy Hx = 0: x4 + x5 x2 + x3 + x1 + x3 + +x6 +x6 x5 +x7 +x7 +x7 =0 =0 =0 Czyli: x5 = x2 + x3 + x4 x6 = x1 + x3 + x4 x7 = x1 + x2 + x4 10 / 20 Kodowanie blokowe Kodwanie Hamminga Kodowanie Aby generować kody, elementy jądra H, trzeba mieć bazę ker (H) Rozwiązujemy Hx = 0: x4 + x5 x2 + x3 + x1 + x3 + +x6 +x6 x5 +x7 +x7 +x7 =0 =0 =0 Czyli: x5 = x2 + x3 + x4 x6 = x1 + x3 + x4 x7 = x1 + x2 + x4 10 / 20 Kodowanie blokowe Kodwanie Hamminga Macierze generująca Baza 4-wymiarowej podprzestrzeni przestrzeni 7 wymiarowej (zapisana kolumnowo): 1 0 0 0 0 1 0 0 0 0 1 0 G = 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1 Ona pozwala tworzyć kody – zanurzać 4 wymiarowe wektory informacji w 7 wymiarowej przestrzeni kodów Wtedy dla informacji x ∈ {0, 1}4 kod w kanale wyznaczamy jako kod(x) = Gx 11 / 20 Kodowanie blokowe Kodwanie Hamminga Macierze generująca Baza 4-wymiarowej podprzestrzeni przestrzeni 7 wymiarowej (zapisana kolumnowo): 1 0 0 0 0 1 0 0 0 0 1 0 G = 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1 Ona pozwala tworzyć kody – zanurzać 4 wymiarowe wektory informacji w 7 wymiarowej przestrzeni kodów Wtedy dla informacji x ∈ {0, 1}4 kod w kanale wyznaczamy jako kod(x) = Gx 11 / 20 Kodowanie blokowe Kodwanie Hamminga Macierze generująca Baza 4-wymiarowej podprzestrzeni przestrzeni 7 wymiarowej (zapisana kolumnowo): 1 0 0 0 0 1 0 0 0 0 1 0 G = 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1 Ona pozwala tworzyć kody – zanurzać 4 wymiarowe wektory informacji w 7 wymiarowej przestrzeni kodów Wtedy dla informacji x ∈ {0, 1}4 kod w kanale wyznaczamy jako kod(x) = Gx 11 / 20 Kodowanie blokowe Kodwanie Hamminga Po co? Korzyści? Jesteśmy w podprzestrzeni liniowej: suma i różnica kodów jest kodem: x, y ∈ ker (H), to x + y ∈ ker (H) Odległość kodów x, y spełnia |x − y | 3, czyli kody różnią się na minimum 3 miejscach Jeśli dany kod zostanie zamieniony w inny, to minimum trzy z siedmiu pozycji zawierają błędy! Minimalizacja błędu oznacza maksymalizację odległości kodów 12 / 20 Kodowanie blokowe Kodwanie Hamminga Po co? Korzyści? Jesteśmy w podprzestrzeni liniowej: suma i różnica kodów jest kodem: x, y ∈ ker (H), to x + y ∈ ker (H) Odległość kodów x, y spełnia |x − y | 3, czyli kody różnią się na minimum 3 miejscach Jeśli dany kod zostanie zamieniony w inny, to minimum trzy z siedmiu pozycji zawierają błędy! Minimalizacja błędu oznacza maksymalizację odległości kodów 12 / 20 Kodowanie blokowe Kodwanie Hamminga Po co? Korzyści? Jesteśmy w podprzestrzeni liniowej: suma i różnica kodów jest kodem: x, y ∈ ker (H), to x + y ∈ ker (H) Odległość kodów x, y spełnia |x − y | 3, czyli kody różnią się na minimum 3 miejscach Jeśli dany kod zostanie zamieniony w inny, to minimum trzy z siedmiu pozycji zawierają błędy! Minimalizacja błędu oznacza maksymalizację odległości kodów 12 / 20 Kodowanie blokowe Kodwanie Hamminga Po co? Korzyści? Jesteśmy w podprzestrzeni liniowej: suma i różnica kodów jest kodem: x, y ∈ ker (H), to x + y ∈ ker (H) Odległość kodów x, y spełnia |x − y | 3, czyli kody różnią się na minimum 3 miejscach Jeśli dany kod zostanie zamieniony w inny, to minimum trzy z siedmiu pozycji zawierają błędy! Minimalizacja błędu oznacza maksymalizację odległości kodów 12 / 20 Kodowanie blokowe Kodwanie Hamminga Po co? Korzyści? Jesteśmy w podprzestrzeni liniowej: suma i różnica kodów jest kodem: x, y ∈ ker (H), to x + y ∈ ker (H) Odległość kodów x, y spełnia |x − y | 3, czyli kody różnią się na minimum 3 miejscach Jeśli dany kod zostanie zamieniony w inny, to minimum trzy z siedmiu pozycji zawierają błędy! Minimalizacja błędu oznacza maksymalizację odległości kodów 12 / 20 Kodowanie blokowe Kodwanie Hamminga Detekcja błędów Każdy kod x spełnia Hx = 0 – reguła pozwalająca identyfikować bezbłędny kod Weźmy kod x Załóżmy, że po przejściu przez kanał zmieniony został bit na pozycji i-tej, czyli dostaliśmy r = x + ei gdzie ei jest wektorem zawierającym 1 na i-tej pozycji, a poza tym same zera Sprawdzając czy r jest kodem dostajemy: Hr = H(x + ei ) = Hx + Hei = Hei 6= 0 Hei 6= 0, więc nie jest kodem 13 / 20 Kodowanie blokowe Kodwanie Hamminga Detekcja błędów Każdy kod x spełnia Hx = 0 – reguła pozwalająca identyfikować bezbłędny kod Weźmy kod x Załóżmy, że po przejściu przez kanał zmieniony został bit na pozycji i-tej, czyli dostaliśmy r = x + ei gdzie ei jest wektorem zawierającym 1 na i-tej pozycji, a poza tym same zera Sprawdzając czy r jest kodem dostajemy: Hr = H(x + ei ) = Hx + Hei = Hei 6= 0 Hei 6= 0, więc nie jest kodem 13 / 20 Kodowanie blokowe Kodwanie Hamminga Detekcja błędów Każdy kod x spełnia Hx = 0 – reguła pozwalająca identyfikować bezbłędny kod Weźmy kod x Załóżmy, że po przejściu przez kanał zmieniony został bit na pozycji i-tej, czyli dostaliśmy r = x + ei gdzie ei jest wektorem zawierającym 1 na i-tej pozycji, a poza tym same zera Sprawdzając czy r jest kodem dostajemy: Hr = H(x + ei ) = Hx + Hei = Hei 6= 0 Hei 6= 0, więc nie jest kodem 13 / 20 Kodowanie blokowe Kodwanie Hamminga Detekcja błędów Każdy kod x spełnia Hx = 0 – reguła pozwalająca identyfikować bezbłędny kod Weźmy kod x Załóżmy, że po przejściu przez kanał zmieniony został bit na pozycji i-tej, czyli dostaliśmy r = x + ei gdzie ei jest wektorem zawierającym 1 na i-tej pozycji, a poza tym same zera Sprawdzając czy r jest kodem dostajemy: Hr = H(x + ei ) = Hx + Hei = Hei 6= 0 Hei 6= 0, więc nie jest kodem 13 / 20 Kodowanie blokowe Kodwanie Hamminga Korekcja błędów Hei to i-ta kolumna macierzy H Numer kolumny wskazuje na pozycje zwierającą błąd Korekcja: aby odzyskać wiadomość należy zamienić i-ty bit na przeciwny:) Kod Hamminga pozwala korygować jeden zmieniony bit, a wykrywać dwa zmienione bity Przy dwóch błędach korekcja nie jest poprawna – dostajemy Hei + Hej sumę kolumn H Suma kolumn H jest kolumną H i otrzymujemy błąd korekcji... 14 / 20 Kodowanie blokowe Kodwanie Hamminga Korekcja błędów Hei to i-ta kolumna macierzy H Numer kolumny wskazuje na pozycje zwierającą błąd Korekcja: aby odzyskać wiadomość należy zamienić i-ty bit na przeciwny:) Kod Hamminga pozwala korygować jeden zmieniony bit, a wykrywać dwa zmienione bity Przy dwóch błędach korekcja nie jest poprawna – dostajemy Hei + Hej sumę kolumn H Suma kolumn H jest kolumną H i otrzymujemy błąd korekcji... 14 / 20 Kodowanie blokowe Kodwanie Hamminga Korekcja błędów Hei to i-ta kolumna macierzy H Numer kolumny wskazuje na pozycje zwierającą błąd Korekcja: aby odzyskać wiadomość należy zamienić i-ty bit na przeciwny:) Kod Hamminga pozwala korygować jeden zmieniony bit, a wykrywać dwa zmienione bity Przy dwóch błędach korekcja nie jest poprawna – dostajemy Hei + Hej sumę kolumn H Suma kolumn H jest kolumną H i otrzymujemy błąd korekcji... 14 / 20 Kodowanie blokowe Kodwanie Hamminga Korekcja błędów Hei to i-ta kolumna macierzy H Numer kolumny wskazuje na pozycje zwierającą błąd Korekcja: aby odzyskać wiadomość należy zamienić i-ty bit na przeciwny:) Kod Hamminga pozwala korygować jeden zmieniony bit, a wykrywać dwa zmienione bity Przy dwóch błędach korekcja nie jest poprawna – dostajemy Hei + Hej sumę kolumn H Suma kolumn H jest kolumną H i otrzymujemy błąd korekcji... 14 / 20 Kodowanie blokowe Kodwanie Hamminga Korekcja błędów Hei to i-ta kolumna macierzy H Numer kolumny wskazuje na pozycje zwierającą błąd Korekcja: aby odzyskać wiadomość należy zamienić i-ty bit na przeciwny:) Kod Hamminga pozwala korygować jeden zmieniony bit, a wykrywać dwa zmienione bity Przy dwóch błędach korekcja nie jest poprawna – dostajemy Hei + Hej sumę kolumn H Suma kolumn H jest kolumną H i otrzymujemy błąd korekcji... 14 / 20 Kodowanie blokowe Kodwanie Hamminga Korekcja błędów Hei to i-ta kolumna macierzy H Numer kolumny wskazuje na pozycje zwierającą błąd Korekcja: aby odzyskać wiadomość należy zamienić i-ty bit na przeciwny:) Kod Hamminga pozwala korygować jeden zmieniony bit, a wykrywać dwa zmienione bity Przy dwóch błędach korekcja nie jest poprawna – dostajemy Hei + Hej sumę kolumn H Suma kolumn H jest kolumną H i otrzymujemy błąd korekcji... 14 / 20 Kodowanie blokowe Kodwanie Hamminga Przykład Chcemy przesłać informację 1111. Obliczamy kod: 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 · 1 1 = 1 1 1 1 1 1 1 1 1 Wysyłamy 1111111. 15 / 20 Kodowanie blokowe Kodwanie Hamminga Przykład Chcemy przesłać informację 1111. Obliczamy kod: 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 · 1 1 = 1 1 1 1 1 1 1 1 1 Wysyłamy 1111111. 15 / 20 Kodowanie blokowe Kodwanie Hamminga Przykład Chcemy przesłać informację 1111. Obliczamy kod: 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 · 1 1 = 1 1 1 1 1 1 1 1 1 Wysyłamy 1111111. 15 / 20 Kodowanie blokowe Kodwanie Hamminga Przykład Na skutek błędu otrzymaliśmy 1110111. Sprawdzamy poprawność: 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 · 1 1 1 1 0 1 1 1 1 = 0 0 Jest to 4 kolumna H, więc musimy poprawić 4 bit. Informacja to 1111. 16 / 20 Kodowanie blokowe Kodwanie Hamminga Przykład Na skutek błędu otrzymaliśmy 1110111. Sprawdzamy poprawność: 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 · 1 1 1 1 0 1 1 1 1 = 0 0 Jest to 4 kolumna H, więc musimy poprawić 4 bit. Informacja to 1111. 16 / 20 Kodowanie blokowe Kodwanie Hamminga Przykład Na skutek błędu otrzymaliśmy 1110111. Sprawdzamy poprawność: 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 · 1 1 1 1 0 1 1 1 1 = 0 0 Jest to 4 kolumna H, więc musimy poprawić 4 bit. Informacja to 1111. 16 / 20 Kodowanie blokowe Kodwanie Hamminga Wnioski Dostaliśmy kod o: długości bloku n = 7, ilości bitów informacji k = 4 odległości kodów d = 3, Jest to (7, 4, 3) kod Hamminga Ilość kodów to 24 , więc rząd to: R= log 24 4 = 7 7 Istnieją również inne odmiany tego kodów Hamminga pozwalające na korekcję większej ilości błędów 17 / 20 Kodowanie blokowe Kodwanie Hamminga Wnioski Dostaliśmy kod o: długości bloku n = 7, ilości bitów informacji k = 4 odległości kodów d = 3, Jest to (7, 4, 3) kod Hamminga Ilość kodów to 24 , więc rząd to: R= log 24 4 = 7 7 Istnieją również inne odmiany tego kodów Hamminga pozwalające na korekcję większej ilości błędów 17 / 20 Kodowanie blokowe Kodwanie Hamminga Wnioski Dostaliśmy kod o: długości bloku n = 7, ilości bitów informacji k = 4 odległości kodów d = 3, Jest to (7, 4, 3) kod Hamminga Ilość kodów to 24 , więc rząd to: R= log 24 4 = 7 7 Istnieją również inne odmiany tego kodów Hamminga pozwalające na korekcję większej ilości błędów 17 / 20 Kodowanie blokowe Kodwanie Hamminga Wnioski Dostaliśmy kod o: długości bloku n = 7, ilości bitów informacji k = 4 odległości kodów d = 3, Jest to (7, 4, 3) kod Hamminga Ilość kodów to 24 , więc rząd to: R= log 24 4 = 7 7 Istnieją również inne odmiany tego kodów Hamminga pozwalające na korekcję większej ilości błędów 17 / 20 Kodowanie blokowe Kodwanie Hamminga Wnioski Dostaliśmy kod o: długości bloku n = 7, ilości bitów informacji k = 4 odległości kodów d = 3, Jest to (7, 4, 3) kod Hamminga Ilość kodów to 24 , więc rząd to: R= log 24 4 = 7 7 Istnieją również inne odmiany tego kodów Hamminga pozwalające na korekcję większej ilości błędów 17 / 20 Kodowanie blokowe Kodwanie Hamminga Wnioski Dostaliśmy kod o: długości bloku n = 7, ilości bitów informacji k = 4 odległości kodów d = 3, Jest to (7, 4, 3) kod Hamminga Ilość kodów to 24 , więc rząd to: R= log 24 4 = 7 7 Istnieją również inne odmiany tego kodów Hamminga pozwalające na korekcję większej ilości błędów 17 / 20 Kodowanie blokowe Kodwanie Hamminga Nietypowa ilość bitów informacji Chcemy przesłać 3 zamiast 4 bitów informacji w kodzie (7,4,3) W macierzy G nie jest zawiera same zera: 1 0 0 G = 0 0 1 1 potrzebna ostatnia kolumna, a czwarty wiersz 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 ∼ 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 Dostajemy mniejszą macierz generującą:) 18 / 20 Kodowanie blokowe Kodwanie Hamminga Nietypowa ilość bitów informacji Chcemy przesłać 3 zamiast 4 bitów informacji w kodzie (7,4,3) W macierzy G nie jest zawiera same zera: 1 0 0 G = 0 0 1 1 potrzebna ostatnia kolumna, a czwarty wiersz 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 ∼ 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 Dostajemy mniejszą macierz generującą:) 18 / 20 Kodowanie blokowe Kodwanie Hamminga Nietypowa ilość bitów informacji Chcemy przesłać 3 zamiast 4 bitów informacji w kodzie (7,4,3) W macierzy G nie jest zawiera same zera: 1 0 0 G = 0 0 1 1 potrzebna ostatnia kolumna, a czwarty wiersz 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 ∼ 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 1 Dostajemy mniejszą macierz generującą:) 18 / 20 Kodowanie blokowe Kodwanie Hamminga Dalej Dostajemy: G = Z macierzy parzystości usuwamy 0 0 H= 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 4 kolumnę: 0 1 1 1 0 1 1 1 0 1 1 1 Teraz Hx nie zwraca numeru błędnego bitu, ale unikatową wartość determinującą błąd (nie jest to nieudogodnienie) 19 / 20 Kodowanie blokowe Kodwanie Hamminga Dalej Dostajemy: G = Z macierzy parzystości usuwamy 0 0 H= 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 4 kolumnę: 0 1 1 0 1 1 1 1 1 1 0 1 Teraz Hx nie zwraca numeru błędnego bitu, ale unikatową wartość determinującą błąd (nie jest to nieudogodnienie) 19 / 20 Kodowanie blokowe Kodwanie Hamminga Dalej Dostajemy: G = Z macierzy parzystości usuwamy 0 0 H= 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 4 kolumnę: 0 1 1 0 1 1 1 1 1 1 0 1 Teraz Hx nie zwraca numeru błędnego bitu, ale unikatową wartość determinującą błąd (nie jest to nieudogodnienie) 19 / 20 Kodowanie blokowe Kodwanie Hamminga Diagram Venn Kodujemy informację w przecięciach Uzupełniamy bitami parzystości (tak aby suma jedynek w kółku była parzysta) Jeden zmieniony bit można skorygować patrząc na warunek parzystości 20 / 20