Teoria informacji/TI Ćwiczenia 8: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 6: | Linia 6: | ||
{{definicja|[Kod liniowy]|kod_liniowy| | {{definicja|[Kod liniowy]|kod_liniowy| | ||
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. | Kod liniowy długości <math>n</math> i rzędu <math>k</math> to dowolna liniowa podprzestrzeń <math>\mathcal{C}</math> wymiaru <math>k</math> w przestrzeni wektorowej <math>\mathbb{F}^n</math> gdzie <math>\mathbb{F}</math> jest skończonym ciałem. Przestrzeń <math>\mathcal{C}</math> 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.}} | Bazę tej przestrzeni (w postaci <math>k</math> wektorów długości <math>n</math>) zapisuje się często w postaci macierzy generującej kodu.}} | ||
Linia 38: | Linia 38: | ||
{{cwiczenie|[Dekodowanie kodu (7,4)]|Ćwiczenie 1| | {{cwiczenie|[Dekodowanie kodu (7,4)]|Ćwiczenie 1| | ||
Udowodnij że jeśli nie nastąpiło przekłamanie, | Udowodnij że jeśli nie nastąpiło przekłamanie, iloczyn macierzy wykrywania błędów i przesłanego wektora zawsze jest zerowy. | ||
}} | }} | ||
Linia 47: | Linia 47: | ||
=== Kody liniowe === | === Kody liniowe === | ||
{{cwiczenie|[Optymalne kody Hamminga]|Ćwiczenie 3| | |||
Kodem <math>(n,k,d)</math> nazywamy kod liniowy w którym <math>k</math>-bitowe słowa są zapisywane na <math>n</math> bitach, a minimalna odległość pomiędzy słowami kodowymi wynosi <math>d</math>. | |||
* Ile błędów może maksymalnie wykrywać taki kod? | |||
* Jaką nierówność muszą spełniać wartości <math>n</math>, <math>k</math> i <math>d</math> aby taki kod mógł istnieć? | |||
* Kod nazwiemy ''r-optymalnym'', gdy może poprawiać <math>r</math> błędów i każde słowo jest w odległości co najwyżej <math>r</math> od najbliższego słowa kodowego. Dla jakich wartości <math>n</math> mogą istnieć kody 1-optymalne?}} | |||
{{cwiczenie|[Szacowanie efektywnosci]|Ćwiczenie 3| | {{cwiczenie|[Szacowanie efektywnosci]|Ćwiczenie 3| | ||
Linia 55: | Linia 62: | ||
=== LDPC - macierze parzystości małej gęstości === | === LDPC - macierze parzystości małej gęstości === | ||
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. | 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| | {{cwiczenie|[Szybkość kodów LDPC]|Ćwiczenie 4| | ||
Jaka jest oczekiwana liczba słów spełniających wszystkie k restrykcji?}} | Jaka jest oczekiwana liczba słów spełniających wszystkie <math>k</math> restrykcji?}} | ||
{{cwiczenie|[Wydajność kodów LDPC]|Ćwiczenie 5| | {{cwiczenie|[Wydajność kodów LDPC]|Ćwiczenie 5| | ||
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>.}} | 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>.}} |
Wersja z 09:59, 16 sie 2006
Kod Hamminga (7,4)
Projektowaniem efektywnych kodów korygujących błędy zajmuje się dziedzina informatyki nazywana teorią kodów. 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.
Definicja [Kod liniowy]
Kod liniowy długości i rzędu to dowolna liniowa podprzestrzeń wymiaru w przestrzeni wektorowej gdzie jest skończonym ciałem. Przestrzeń definiuje zestaw poprawnych słów kodowych.
Bazę tej przestrzeni (w postaci wektorów długości ) zapisuje się często w postaci macierzy generującej kodu.
Na tych ćwiczeniach bedziemy się zajmować tylko ciałem , czyli operacjami modulo 2.
Przykładem prostego kodu liniowego nad ciałem 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%).
Macierz generująca tego kodu wygląda następująco:
Macierz wykrywania błędów dla tego kodu wygląda następująco:
Aby zakodować czterobitową wiadomość mnoży się ją przez macierz (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 , 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.
Ćwiczenie [Dekodowanie kodu (7,4)]
Udowodnij że jeśli nie nastąpiło przekłamanie, iloczyn macierzy wykrywania błędów i przesłanego wektora zawsze jest zerowy.
Ćwiczenie [Jakość przekazu]
Kody liniowe
Ćwiczenie [Optymalne kody Hamminga]
Kodem nazywamy kod liniowy w którym -bitowe słowa są zapisywane na bitach, a minimalna odległość pomiędzy słowami kodowymi wynosi .
- Ile błędów może maksymalnie wykrywać taki kod?
- Jaką nierówność muszą spełniać wartości , i aby taki kod mógł istnieć?
- Kod nazwiemy r-optymalnym, gdy może poprawiać błędów i każde słowo jest w odległości co najwyżej od najbliższego słowa kodowego. Dla jakich wartości mogą istnieć kody 1-optymalne?
Ćwiczenie [Szacowanie efektywnosci]
LDPC - macierze parzystości małej gęstości
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 , gdzie 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.
Ćwiczenie [Szybkość kodów LDPC]
Ćwiczenie [Wydajność kodów LDPC]