Z Wykład 30.03.2008, Zajęcia, II semestr 2008, Teoria informacji i kodowania


Na ostatnich zajeciach mówiliśmy między innymi o kodzie Hamminga, jednak nie dokończyliśmy tego zagadnienia. Dzis powiemy sobie szczegółowo na ten temat. W telekomunikacji kod Hamminga jest liniowym kodem korekcyjnym, wynalezionym przez Richarda Hamminga. Kody Hamminga wykrywają i korygują błędy polegające na przekłamaniu jednego bitu. Czyli dla niezawodnej transmisji wymagane jest aby odległość Hamminga między słowami transmitowanymi i odbieranymi wynosiła zero lub jeden. Kody te mogą też wykryć (ale już nie korygować) błędy podwójne (dwa jednocześnie przekłamane bity). Dla porównania prosty kod z kontrolą parzystości nie może korygować żadnych błędów ani też nie może być używany do detekcji błędu na więcej niż jednym bicie. W sensie matematycznym kody Hamminga są klasą liniowych kodów binarnych. Dla każdej liczby całkowitej m > 1 istnieje kod o parametrach [2m − 1,2m − m − 1,3]. Macierz kontroli parzystości dla kodu Hamminga tworzy się wypisując wszystkie kolumny o długości m które są parami niezależne. Z uwagi na swoją prostotę kody Hamminga są szeroko używane w pamięciach komputerowych (RAM). Richard Hamming pracował dla Bell Labs na komputerze Bell Model V. Dane wejściowe do tego urządzenia były umieszczane na kartach dziurkowanych, które często posiadały błędy. Specjalny kod znajdywał te błędy i zapalał lampki ostrzegawcze, aby operatorzy mogli naprawić problem. Jednak po godzinach pracy, kiedy operatorów nie było maszyna sama nie potrafiła skorygować błędów i po prostu zaczynała nowe zadanie. Hamming pracował w weekendy i był bardzo sfrustrowany koniecznością ciągłego restertowania programów z powodu zawodności czytnika kart. Przez kolejne kilka lat pracował nad problemem korekcji błedów. W roku 1950 opublikował efekt swojej pracy, znany dzisiaj jako kod Hamminga. Kilka prostych detekcyjnych kodów było używanych wcześniej, ale żaden nie był tak efektywny jak kod Hamminga. Były to między innymi kod parzystości, kod 2 z 5, powtarzanie. Jeśli we wiadomości jest więcej bitów korygujących i jeśli te bity dla różnej kombinacji bitów przekłamanych dają różne rezultaty, wtedy możemy zidentyfikować nieprawidłowe bity. W 7-bitowej wiadomości jest 7 prawdopodobnych błędów pojedynczych, więc trzy bity korygujące wystarczą by potencjalnie wskazać nie tylko że błąd wystąpił lecz także na której pozycji. Hamming zauważył problem przy przekłamaniu dwóch lub więcej bitów i wprowadził pojęcie odległości (teraz nazywanej odległością Hamminga). Kod z kontrolą parzystości ma odległość równą 2 (przekłamanie dwóch bitów jest niewidoczne - kod nie zgłasza błędów, ale słowo jest inne niż przesłane). Hamming skupił się na dwóch problemach: zwiększeniu odległości między słowami jak to tylko możliwe, i jednocześnie jak największym stosunku liczby bitów informacyjnych do długości słowa. Główną ideą zastosowanych przez niego schematów kodowania jest nakładanie się bitów parzystości, tak, aby mogły sprawdzać siebie nawzajem. Oto, jak wyglada główny algorytm tego kodu. Przyjmijmy że bity parzystości znajdują się na pozycjach będących potęgami 2. Algorytm jest następujący:

1. Wszystkie pozycje będące potęgami 2 (1, 2, 4, 8, 16,...) są bitami parzystości,

2. Wszystkie pozycje nie będące potęgami 2 (3, 5, 6, 7, 9, 10,...) to bity informacyjne,

3. Każdy bit parzystości wskazuje parzystość pewnej grupy bitów w słowie. Pozycja na której się znajduje określa które bity ma sprawdzać a które opuszczać:

...

W tabeli przedstawiono zasadę kodowania dla słowa o długości 20 (15 bitów danych, 5 bitów parzystości).

Pozycja bitu

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

...

Bit parzystości (p), danych (d)

p1

p2

d1

p3

d2

d3

d4

p4

d5

d6

d7

d8

d9

d10

d11

p5

d12

d13

d14

d15

Sekwencja
sprawdzanych
bitów

p1

X

X

X

X

X

X

X

X

X

X

p2

X

X

X

X

X

X

X

X

X

X

p3

X

X

X

X

X

X

X

X

X

p4

X

X

X

X

X

X

X

X

p5

X

X

X

X

X

Kluczowe dla kodów Hamminga jest to że każdy bit ma unikalną kombinację sprawdzających go bitów parzystości. Przykładowo tylko bit 12 jest sprawdzany przez parę p3 i p4. Ta unikalność pozwala korygować błędy pojedyncze. Tłumaczy to też dlaczego błędy podwójne mogą być wykrywane ale nie korygowane. Kody Hamminga mają odległość równą 3, to znaczy że mogą wykrywać i korygować błędy pojedyncze, ale błędy podwójne mogą być pomylone z błędem pojedynczym innego ciągu kodowego. Dodanie dodatkowego bitu parzystości jest możliwe zwiększenie minimalnej odległości Hamminga do 4. To pozwala kodowi wykrywać i korygować błędy pojedyncze i w tym samym czasie wykrywać błędy podwójne. Może być też używane do detekcji błędów potrójnych (bez korekcji). Ten system kodowania jest popularny w pamięciach komputerowych, jako SECDED (single error correction, double error detection). Oto, jak wygląda graficzne przedstawienie 4 bitów informacyjnych i trzech bitów parzystości:

W roku 1950 Hamming przedstawił kod (7,4), który kodował 4 pozycje informacyjne jako słowo 7-bitowe, dodając 3 bity parzystości. Macierz generująca G kodu (7,4) i jego macierz kontroli parzystości H są przedstawione poniżej:

0x01 graphic

0x01 graphic



Wyszukiwarka

Podobne podstrony:
Z Wykład 24.02.2008, Zajęcia, II semestr 2008, Teoria informacji i kodowania
Z Ćwiczenia 20.04.2008, Zajęcia, II semestr 2008, Teoria informacji i kodowania
Systemy bankowe wyklad z 30[1].03.2008 (poprawione), pliki zamawiane, edukacja
Z Wykład 15.03.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 01.03.2008, Zajęcia, II semestr 2008, Rachunek prawdopodobieństwa
Z Wykład 16.03.2008, Zajęcia, II semestr 2008, Techniki Internetowe
Z Wykład 29.03.2008, Zajęcia, II semestr 2008, Matematyka dyskretna i logika
Z Wykład 02.03.2008, Zajęcia, II semestr 2008, Algorytmy i struktury danych
Z Wykład 15.03.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Wykład z dnia 10.05.2008, Zajęcia, II semestr 2008, Matematyka dyskretna i logika
Z Ćwiczenia 29.03.2008, Zajęcia, II semestr 2008, Wstęp do kryptologii
Z Ćwiczenia 15.03.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 19.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 23.02.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Ćwiczenia 01.03.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 06.04.2008, Zajęcia, II semestr 2008, Rachunek prawdopodobieństwa
Z Wykład 05.04.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 10.05.2008, Zajęcia, II semestr 2008, Analiza matematyczna
Z Wykład 17.05.2008, Zajęcia, II semestr 2008, Algorytmy i struktury danych

więcej podobnych podstron