BCH kód: Porovnání verzí

Smazaný obsah Přidaný obsah
Hippo.69 (diskuse | příspěvky)
m Forney algoritmus/vzorec ve zbytku textu
Hippo.69 (diskuse | příspěvky)
m Úroveň zanoření
Řádek 286:
a determinant je nulový, dokud není <math>v</math> minimální možné.
 
==== Algoritmus Berlekamp–Massey ====
Algoritmus udržuje &Lambda; odpovídající počátečnímu úseku posloupnosti syndromů.
Postupně prodlužuje délku úseku a koriguje &Lambda;.
Řádek 295:
že minimalizuje násobení proměnnými na úkor stejného počtu násobení konstantami.
 
=== Výpočet chybových hodnot ===
Jakmile jsou známy polohy chyb, zbývá určit velikosti chyb na těchto místech.
Odečtením nalezených velikostí chyb dostaneme z přijatého slova kódové slovo.
Řádek 307:
:…
 
==== Forneyův vzorec ====
Existuje ale efektivnější metoda známá jako '''Forneyův vzorec'''.
 
Řádek 322 ⟶ 323:
:<math>e_k={\Omega(\alpha^{-i_k})\over \Lambda'(\alpha^{-i_k})}</math>.
 
==== Zdůvodnění Forneyova vzorce ====
 
Algoritmus je založen na [[Lagrangeova_interpolace|Lagrangeově interpolaci]] a technikách [[vytvořující funkce (posloupnost)|vytvořujících funkcí]].
Řádek 380 ⟶ 381:
Hlavní výhodou algoritmu je, že zároveň spočítá ve Forneyově vzorci potřebné <math>\Omega(x)=S(x)\Xi(x)\bmod x^{d-1}=r(x)</math>.
 
==== Zdůvodnění nejen dekódování založeném na rozšířeném Euklidově algoritmu ====
Naší snahou je nalézt kódové slovo, které se od přijatého slova na čitelných pozicích liší co nejméně. Při vyjádření přijatého slova jako součtu nejbližšího kódového slova a chybového slova tak hledáme chybové slovo s nejmenším počtem nenulových souřadnic na čitelných pozicích. Syndrom <math>s_i</math> klade na chybové slovo podmínku <math>s_i=\sum_{j=0}^{n-1}e_j\alpha^{ij}</math>. Tyto podmínky můžeme zapisovat samostatně, nebo můžeme vytvořit polynom <math>S(x)=\sum_{i=0}^{d-2}s_{c+i}x^i</math> a klást podmínky na koeficienty u mocnin <math>0</math> až <math>d-2</math>. <math>S(x){\textstyle{\{0,\ldots,\,d-2\}\atop =}}E(x)=\sum_{i=0}^{d-2}\sum_{j=0}^{n-1}e_j\alpha^{ij}\alpha^{cj}x^i</math>.
 
Řádek 398 ⟶ 399:
Může se stát, že Euklidův algoritmus najde <math>\Lambda(x)</math> stupně většího než <math>(d-1-k)/2</math>, který má tolik různých kořenů, jako je jeho stupeň, a pomocí Fourney algoritmu bude možno opravit chyby v polohách všech jeho kořenů, přesto opravovat takto nalezené chyby je nebezpečné. Obvykle při nalezení <math>\Lambda(x)</math> většího stupně odmítáme chyby opravovat. Stejně tak oprava chyb selže, pokud má <math>\Lambda(x)</math> vícenásobné kořeny či jejich počet neodpovídá stupni <math>\Lambda(x)</math>. Selhání také může detekovat to, když Forney vzorec vrátí chybu z rozdílu těles <math>B\setminus A</math>.
 
=== PříkladPříklady dekódování ===
==== Dekódování binárního kódu bez nečitelných znaků ====
 
Nechť <math>d=7</math> a používáme dříve uvedený kód s <math>g(x) = x^{10} + x^8 + x^5 + x^4 + x^2 + x + 1</math> v GF(2<sup>4</sup>).
(Tento generátor je použit v [[QR kód|QR kódech]].)
Řádek 431 ⟶ 432:
Nemusíme v tomto případě počítat chybové hodnoty, protože jedinou možnou hodnotou je hodnota 1.
 
==== Příklad dekódováníDekódování s nečitelnými znaky a maximálním opravitelným počtem chyb ====
Předpokládejme nyní, stejný případ, ale přijaté slovo má dva nečitelné znaky [ 1 {{barva|red|0}} 0 ? 1 1 ? 0 0 {{barva|red|1}} 1 0 1 0 0 ].
Nahradíme nečitelné znaky (např.) nulami, vytvořme polynom potlačující vliv nečitelných znaků <math>\Gamma(x)=(\alpha^8x-1)(\alpha^{11}x-1)</math>.
Řádek 542 ⟶ 543:
Opravený kód tedy má být [ 1 {{barva|green|1}} 0 {{barva|green|1}} 1 1 {{barva|green|0}} 0 0 {{barva|green|0}} 1 0 1 0 0].
 
==== Dekódování s nečitelnými znaky a malým počtem chyb ====
Ješťě ukažmě průběh výpočtu v případě, kdy je v přijatém kódu pouze jedna chyba [ 1 {{barva|red|0}} 0 ? 1 1 ? 0 0 0 1 0 1 0 0 ].
Opět nahradíme nečitelné znaky nulami, spočteme <math>\Gamma(x)=(\alpha^8x-1)(\alpha^{11}x-1)</math> a syndromy