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

Podobne dokumenty