V matematice a teorii informace je řádkový kód typem blokového kódu používaného v obvodech pro detekci a opravu chyb. Lineární kódy ve srovnání s jinými kódy umožňují implementovat efektivnější algoritmy pro kódování a dekódování informací.
V procesu ukládání dat a přenosu informací po komunikačních sítích nevyhnutelně dochází k chybám. Kontrola integrity dat a oprava chyb jsou důležité úkoly na mnoha úrovních práce s informacemi (zejména fyzické vrstvy , datové spoje a transportní vrstvy modelu OSI ).
V komunikačních systémech je možných několik strategií pro řešení chyb:
Opravné kódy - kódy, které se používají k detekci nebo opravě chyb, ke kterým dochází při přenosu informace pod vlivem rušení , jakož i při jejím ukládání.
K tomu při zápisu (přenosu) do užitečných dat přidávají speciálně strukturované redundantní informace a při čtení (přijímání) se používají k detekci nebo opravě chyb. Počet chyb, které lze opravit, je samozřejmě omezený a závisí na konkrétním použitém kódu.
S kódy pro opravu chyb úzce souvisí kódy pro detekci chyb . Na rozdíl od prvního může druhý pouze zjistit přítomnost chyby v přenášených datech, ale neopravit ji.
Ve skutečnosti použité kódy detekce chyb patří do stejných tříd kódů jako kódy pro opravu chyb. Ve skutečnosti lze k detekci chyb použít také jakýkoli kód opravující chyby (přitom bude schopen detekovat více chyb, než byl schopen opravit).
Podle způsobu práce s daty se kódy opravující chyby dělí na kódy blokové , které rozdělují informace na fragmenty konstantní délky a zpracovávají každý z nich samostatně, a kódy konvoluční , které pracují s daty jako souvislý proud.
Nechte zakódovanou informaci rozdělit na fragmenty bitové délky, které se převedou na kódová slova bitové délky . Potom je obvykle označen odpovídající blokový kód . V tomto případě se toto číslo nazývá kódová sazba .
Pokud kód ponechá původní bity beze změny a přidá kontroly , takový kód se nazývá systematický , jinak nesystematický .
Blokový kód můžete nastavit různými způsoby, včetně tabulky, kde je každá sada informačních bitů spojena s bitem kódového slova. Dobrý kód by však měl splňovat alespoň následující kritéria:
Je snadné vidět, že tyto požadavky si vzájemně odporují. Proto existuje velké množství kódů, z nichž každý je vhodný pro svůj rozsah úkolů.
Téměř všechny použité kódy jsou lineární . To je způsobeno skutečností, že nelineární kódy je mnohem obtížnější studovat a je pro ně obtížné poskytnout přijatelnou snadnost kódování a dekódování.
Nechť vektory jsou základem lineárního prostoru . Podle definice báze může být jakýkoli vektor reprezentován jako lineární kombinace základních vektorů: nebo ve formě matice jako:
,
kde se nazývá generátorová matice lineárního prostoru .
Tento vztah vytváří spojení mezi vektory koeficientů a vektory . Vypsáním všech vektorů koeficientů získáte všechny vektory . Jinými slovy, matice generuje lineární prostor.
Dalším způsobem, jak definovat lineární prostory, je popsat je pomocí kontrolní matice.
Dovolit být lineární k-rozměrný podprostor n-rozměrného prostoru přes konečné pole a být ortogonální doplněk . Pak podle jedné z vět lineární algebry je rozměr . Proto existuje r základních vektorů v . Nechť je základ v .
Potom jakýkoli vektor splňuje následující systém lineárních rovnic :
Nebo v maticové podobě :
kde je kontrolní matice.
Redukovaný systém lineárních rovnic by měl být považován za systém kontrol pro všechny vektory lineárního prostoru, proto se matice nazývá kontrolní matice.
Lineární kód délky n a pozice k je lineární podprostor C dimenze k vektorového prostoru , kde je konečné pole q prvků . Takový kód s parametrem q se nazývá q-ární kód (například pokud q = 5, pak se jedná o 5-ární kód). Pokud q = 2 nebo q = 3, pak je kód binární nebo ternární .
Lineární (blokový) kód je takový kód, že množina jeho kódových slov tvoří -rozměrný lineární podprostor (říkejme tomu ) v -rozměrném lineárním prostoru , izomorfním s prostorem -bitových vektorů .
To znamená, že operace kódování odpovídá násobení původního bitového vektoru nesingulární maticí , nazývanou generátorová matice .
Dovolit být ortogonální podprostor vzhledem k , a být matice definující základ tohoto podprostoru. Pak pro jakýkoli vektor platí:
.Hammingova vzdálenost ( Hammingova metrika ) mezi dvěma kódovými slovyjepočet různých bitů v odpovídajících pozicích, to znamená počet "jednotek" ve vektoru.
Minimální vzdálenost řádkového kódu je minimem všech Hammingových vzdáleností všech párů kódových slov.
Váha vektoru je Hammingova vzdálenost mezi tímto vektorem a nulovým vektorem, jinými slovy, počet nenulových složek vektoru.
Věta 1:
Minimální vzdálenost řádkového kódu se rovná minimu Hammingových vah nenulových kódových slov:
Důkaz:
Vzdálenost mezi dvěma vektory splňuje rovnost , kde je Hammingova váha vektoru . Ze skutečnosti, že rozdíl libovolných dvou kódových slov lineárního kódu je zároveň kódovým slovem lineárního kódu, vyplývá tvrzení věty:
Minimální Hammingova vzdálenost je důležitou charakteristikou lineárního blokového kódu. Definuje další, neméně důležitou vlastnost - korekční schopnost :
, zde lomené závorky označují zaokrouhlení "dolů".
Opravná síla určuje, jaký je maximální počet chyb v jednom kódovém slově, u kterých lze zaručit , že kód opraví.
Vysvětlíme si to na příkladu. Předpokládejme, že existují dvě kódová slova A a B, Hammingova vzdálenost mezi nimi je rovna 3. Pokud bylo přeneseno slovo A a kanál zavedl chybu v jednom bitu, lze ji opravit, protože i v tomto případě je přijaté slovo blíže kódové slovo A než B. Pokud však kanál zavedl dvoubitové chyby, dekodér může předpokládat, že slovo B bylo přeneseno.
Počet zjištěných chyb je počet chyb, při kterých může dekodér detekovat chybovou situaci (a např. zahájit opakovaný přenos zprávy). Toto číslo je
.Věta 2 (bez důkazu):
Pokud jsou některé sloupce kontrolní matice H lineárního (n, k)-kódu lineárně nezávislé, pak je minimální kódová vzdálenost alespoň d. Pokud existuje d lineárně závislých sloupců, pak minimální kódová vzdálenost je přesně d.
Věta 3 (bez důkazu):
Pokud je minimální vzdálenost lineárního (n, k) kódu d, pak jsou libovolné sloupce kontrolní matice H lineárně nezávislé a existuje d lineárně závislých sloupců.
Historicky by se „ Hammingovy kódy “ měly nazývat kódy R. Fishera a byly zavedeny v roce 1942 (Fisher RA The theory of conouding in factor to thr theory). Hammingovy kódy jsou nejjednodušší lineární kódy s minimální vzdáleností 3, to znamená, že jsou schopné opravit jednu chybu. Hammingův kód lze znázornit tak, že syndrom
, kde je přijímaný vektor,se bude rovnat číslu pozice, na které došlo k chybě. Tato vlastnost velmi usnadňuje dekódování.
Reed-Mullerův kód je lineární binární blokový kód. Při určitém způsobu výstavby může být systematická. Obecně platí, že Reed-Mullerův kód není cyklický. Reed-Mullerovy kódy jsou dány následujícími parametry: pro jakékoli hodnotya, nazývané kódové pořadí, menší než:
délka kódového slova délka informační části délka zkušebního dílu minimální vzdálenost kóduReed-Mullerův kód je určen pomocí generátorové matice sestávající ze základních vektorů, která je sestavena podle pravidla:
nechť je vektor, jehož všechny složky jsou rovny 1; nechť jsou řádky matice, jejíž sloupce jsou všechny binární množiny délkyReed-Mullerův kód t. řádu obsahuje vektory a všechny dílčí produkty nebo menší počet těchto vektorů jako základ.
Lineární kód délky n s k informačními symboly je k-rozměrný lineární podprostor, takže každé kódové slovo je lineární kombinací základních vektorů podprostoru :
.
Nebo pomocí matice generátoru:
, kde
Tento poměr je kódovacím pravidlem , podle kterého je informační slovo mapováno do kódu
Jakýkoli kód (včetně nelineárního) lze dekódovat pomocí běžné tabulky, kde každá hodnota přijatého slova odpovídá nejpravděpodobnějšímu přenášenému slovu . Tato metoda však vyžaduje použití obrovských tabulek již pro kódová slova relativně malé délky.
U lineárních kódů lze tento způsob výrazně zjednodušit. V tomto případě se pro každý přijatý vektor vypočítá syndrom . Protože , kde je kódové slovo a je chybový vektor, pak . Poté se pomocí tabulky syndromů určí chybový vektor, s jehož pomocí se určí přenášené kódové slovo. V tomto případě je tabulka mnohem menší než při použití předchozí metody.
Navzdory skutečnosti, že oprava chyb v lineárních kódech je již mnohem jednodušší než oprava ve většině nelineárních kódů, pro většinu kódů je tento proces stále poměrně komplikovaný. Cyklické kódy mají kromě jednoduššího dekódování další důležité vlastnosti.
Cyklický kód je lineární kód s následující vlastností: jestliže je kódové slovo, pak jeho cyklická permutace je také kódovým slovem.
Slova cyklického kódu jsou vhodně reprezentována jako polynomy. Například kódové slovo je reprezentováno jako polynom . V tomto případě je cyklický posun kódového slova ekvivalentní násobení polynomu modulo .
V budoucnu, pokud nebude uvedeno jinak, budeme předpokládat, že cyklický kód je binární , to znamená ... může nabývat hodnot 0 nebo 1 .
Lze ukázat, že všechna kódová slova určitého cyklického kódu jsou násobky určitého generujícího polynomu . Polynom generátoru je dělitel .
Pomocí generujícího polynomu se kódování provádí cyklickým kódem. Zejména:
CRC kódy (cyklická redundantní kontrola - cyklická redundantní kontrola) jsou systematické kódy určené nikoli k opravě chyb, ale k jejich odhalování. Používají metodu systematického kódování uvedenou výše: „kontrolní součet“ se vypočítá vydělením . Protože není vyžadována žádná oprava chyb, lze ověření přenosu provést stejným způsobem.
Tvar polynomu g(x) tedy specifikuje konkrétní CRC kód. Příklady nejoblíbenějších polynomů:
krycí jméno | stupeň | polynom |
---|---|---|
CRC-12 | 12 | |
CRC-16 | 16 | |
CRC- CCITT | 16 | |
CRC-32 | 32 |
Bose-Chowdhury-Hockwingham (BCH) kódy jsou podtřídou binárních cyklických kódů. Jejich rozlišovacím znakem je schopnost zkonstruovat BCH kód s minimální vzdáleností, která není menší než daná. To je důležité, protože obecně řečeno je určení minimální vzdálenosti kódu velmi obtížný úkol.
Matematicky konstrukce BCH kódů a jejich dekódování využívá rozklad generujícího polynomu na faktory v Galoisově poli .
Reed-Solomonovy kódy (RS kódy) jsou ve skutečnosti nebinární BCH kódy, to znamená, že prvky kódového vektoru nejsou bity, ale skupiny bitů. Reed-Solomonovy kódy jsou velmi běžné, pracují s byty ( oktety ).
+ Kvůli linearitě stačí k zapamatování nebo vyčíslení všech kódových slov uložit do paměti kodéru nebo dekodéru jejich podstatně menší část, a to pouze ta slova, která tvoří základ odpovídajícího lineárního prostoru. To značně zjednodušuje implementaci kódovacích a dekódovacích zařízení a činí lineární kódy velmi atraktivními z hlediska praktických aplikací.
— Ačkoli lineární kódy se zpravidla dobře vypořádají se vzácnými, ale velkými shluky chyb , jejich účinnost s častými, ale malými chybami (například v kanálu s AWGN ) je méně vysoká.
Účinnost kódů je dána počtem chyb, které dokáže opravit, množstvím nadbytečných informací, které je třeba přidat, a složitostí implementace kódování a dekódování (jak hardware, tak počítačový software ).
Nechť existuje binární blokový kód s opravnou schopností . Pak platí následující nerovnost (nazývaná Hammingova hranice ):
.Kódy splňující tuto hranici rovnosti jsou považovány za dokonalé . Mezi dokonalé kódy patří například Hammingovy kódy. Kódy s velkou korekční silou, které se v praxi často používají (jako Reed-Solomonovy kódy), nejsou dokonalé.
Při přenosu informací komunikačním kanálem závisí pravděpodobnost chyby na poměru signálu k šumu na vstupu demodulátoru, takže při konstantní úrovni šumu má rozhodující význam výkon vysílače. V satelitních a mobilních systémech, stejně jako v jiných typech komunikací, je otázka úspor energie akutní. Kromě toho v určitých komunikačních systémech (například v telefonu) technická omezení neumožňují neomezené zvýšení výkonu signálu.
Protože kódování pro opravu chyb umožňuje opravu chyb, jeho aplikace může snížit výkon vysílače a ponechat rychlost přenosu informací nezměněnou. Energetický zisk je definován jako rozdíl mezi poměry s/n v přítomnosti a nepřítomnosti kódování.
Platí kódy řádků: