Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Kódování Radim Farana Podklady pro výuku pro akademický rok 2013/2014.

Podobné prezentace


Prezentace na téma: "Kódování Radim Farana Podklady pro výuku pro akademický rok 2013/2014."— Transkript prezentace:

1 Kódování Radim Farana Podklady pro výuku pro akademický rok 2013/2014

2 Obsah Lineární kódy.  Reedovy-Mullerovy kódy.

3 Reedovy – Mullerovy kódy (čti rídovy - malerovy). Jsou zobecněním lineárních kódů. Jsou to nejstarší kódy opravující volitelný počet chyb. Použila je např. sonda Mariner 9 pro vysílání fotografií z Marsu Reed, Irving Stoy * , Seattle, USA Muller, David Eugene * ?p=digitallibrary/getfile&id=5423&preview=long

4 Booleovské funkce Booleovské funkce nabývají hodnot 0 a 1, stejně jako jejich proměnné. Booleovská funkce m proměnných je předpis, který m- tici x 1, x 2, …, x m přiřazuje hodnotu f(x 1, x 2, …, x m ) = 0 nebo 1. Předpis f tedy představuje zobrazení množiny (kde n = 2 m ) do množiny Z 2. Toto zobrazení zapisujeme buď pravdivostní tabulkou nebo jako booleovské polynomy (mnohočleny).

5 Pravdivostní tabulka Příklad booleovské funkce tří proměnných f(x 1, x 2, x 3 ):

6 Booleovské funkce Libovolnou booleovskou funkci f(x 1, x 2, …, x n ) můžeme chápat jako binární slovo délky 2 m., kde pro každé číslo j = 0, 1, …, 2 m -1 je f j = f(j 1, j 2, …, j n ), jestliže má j binární rozvoj j n j n-1 …j 1 (Oproti zvyklostem bereme binární rozvoj čísla j pozpátku). Například f 0 = f(0, 0, …, 0), f 1 = f(1, 0, …, 0), f 2 = f(0, 1, …, 0), f 3 = f(1, 1, …, 0), … Mezi booleovské funkce patří také konstantní funkce o = 000…0 a 1 = 111…1 a také každá z n proměnných x i je sama booleovskou funkcí f(x 1, x 2, …, x n ) = x i. Např. pro m = 3 je x 1 = , x 2 =

7 Logické operace Na booleovských funkcích m proměnných jsou zavedeny obvyklé logické operace: Funkce ovšem představují vícebitové vektory. Pak platí uvedené definice pro všechna f i a g i, představující stejnolehlé bity vektorů

8 Logické operace Mezi logickými operacemi existují jednoduché vztahy, např.:  = 1+ f - negace tedy může být vyjádřena pomocí binárního součtu,  ff = f - nikdy nebudeme potřebovat vyšší exponent než 1,  operaci logického součtu (OR) můžeme realizovat pomocí logických součinů a binárního sčítání: f OR g = f + g + fg.  booleovské funkce považujeme za prvky prostoru (kde n = 2 m ) a logický součet se pak shoduje se sčítáním v tomto prostoru.  výrazy 1 a x i jsou booleovské funkce, všechny booleovské funkce můžeme realizovat jejich sčítáním a násobením.

9 Booleovský polynom (mnohočlen) Například pro funkci f = 1011 můžeme zvolit pro snadnější reprezentaci (menší počet jedniček) negaci funkce = Ta nabývá 1 právě když x 1 = 1 a x 2 = 0, takže: Výraz pro funkci f je pak ve tvaru: Tento výraz se nazývá booleovský polynom (mnohočlen).

10 Booleovský polynom Každý booleovský polynom je tedy součtem členů: kde mocnitelé i 1, i 2, … i m jsou buď 1 nebo 0 (pokud se daná proměnná ve výrazu nevyskytuje). Například pro m = 3 máme:

11 Booleovský polynom Booleovské polynomy můžeme zapisovat ve tvaru: Kde koeficient q i je buď 0 nebo 1 a číslo i má binární rozvoj i m …i 2 i 1 (který čtením pozpátku určuje mocnitele). Například polynom je ve tvaru: kde q 0 = q 2 = 0 a q 1 = q 3 = 1.

12 Stupeň booleovského polynomu Stupeň booleovského polynomu f je největší počet proměnných, které se vyskytují v některém sčítanci polynomu f. Nulová konstantní funkce 0 představuje booleovský polynom stupně -1, funkce 1 je booleovský polynom stupně 0 a booleovský polynom f, který má stupeň, má maximální počet sčítanců k. Například polynom 1 + x 1 + x 3 má stupeň 1, polynom x 1 x 2 x 3 má stupeň 3.

13 Zápis booleovské funkce jako polynomu Jestliže má booleovská funkce tří proměnných f(x 1, x 2, x 3 ) binární zápis f 0 f 1 …f 7, potom první polovina tohoto slova (neboli slovo f 0 f 1 f 2 f 3 ) představuje binární zápis booleovské funkce dvou proměnných f(x 1, x 2, 0) a druhá polovina (neboli slovo f 4 f 5 f 6 f 7 ) představuje binární zápis booleovské funkce dvou proměnných f(x 1, x 2, 1). Například pro funkci: f(x 1, x 2, x 3 ) = x 1 + x 3 = = 0101 │ 1010

14 Zápis booleovské funkce jako polynomu Pro každou booleovskou funkci m + 1 proměnných platí: Na základě těchto dvou pravidel můžeme snadno převádět booleovské funkce na booleovské polynomy.

15 Příklad Například booleovskou funkci f = 1011 převedeme na booleovský polynom:  f = 10 + ( )x 2 = x 2.  Stejným postupem je 10 = 1 + (1 + 0)x 1 = 1 + x 1  a 01 = 0 + (0 + 1)x 1 = x 1, takže:  f = 1 + x 1 + x 1 x 2. Podobně pro booleovskou funkci tří proměnných f = platí:  f = ( )x 3 = x 3 = 1 + x 2 +(1 + x 1 + x 1 x 2 )x 3 = = 1 + x 2 + x 3 + x 2 x 3 + x 1 x 2 x 3  protože 1100 = 11 + ( ) x 2 = x 2 = 1 + x 2, a to neboť 11 = 1 + (1 + 1)x 1 = 1 + 0x 1 = 1.  a podobně 1011 = 10 + ( )x 2 = x 2 = 1 + x 1 + x 1 x 2, a to neboť 10 = 1 + (1 + 0)x 1 = 1 + x 1, a dále 01 = 0 + (0 + 1)x 1 = x 1.

16 Množiny M(i) Pro každé číslo i = 0, 1, …, 2 m -1 označujeme jako M(i) množinu těch čísel j ≤ i, která má ve svém binárním rozvoji jedničky jen tam, kde je má číslo i. V binárním zápisu tedy bude:  Například M(0) = {0}, M(1) = {0, 1}, M(2) = {0, 2}, M(3) = {0, 1, 2, 3},  Vidíme, že platí M(2 i ) = {0, 2 i }

17 Zápis booleovské funkce jako polynom Každá booleovská funkce je polynomem: (kde číslo i má binární rozvoj i m …i 1 ) s koeficienty

18 Příklad Pro booleovskou funkci f =1011 máme q 0 = f 0 = 1 q 1 = f 0 + f 1 = 1 q 2 = f 0 + f 2 = 0 q 3 = f 0 + f 1 + f 2 + f 3 = 1 takže platí f(x 1, x 2 ) = 1 + x 1 + x 1 x 2.

19 Báze lineárního prostoru Booleovské polynomy o jediném sčítanci, tedy funkce:  1,  x 1, x 2, …, x m,  x i x j pro i, j = 1, …, m,  …  x 1 x 2 …x m. tvoří bázi lineárního prostoru (kde n = 2 m ), protože každé slovo v je součtem některých z těchto funkcí. Lineární nezávislost plyne z faktu, že počet těchto funkcí je roven dimenzi celého prostoru, jejich počet je roven: a to je číslo n = 2 m (podle binomické věty, aplikované na (1 + 1) m ).

20 Reedovy-Mullerovy kódy Reedovy-Mullerovy kódy (čti rídovy-málerovy) jsou speciální binární kódy délky n = 2 m. Kódová slova jsou booleovskými polynomy m proměnných. Reedovým-Mullerovým kódem (R-M kódem) stupně r a délky 2 m se nazývá množina R(r, m) všech booleovských polynomů m proměnných stupně nejvýše r. R-M kódy je možno vytvářet postupně modifikovanými součty podle relace: R(r, m + 1) = R(r, m) + R(r – 1, m), kde m > r > 0.

21 Všechny R-M kódy délky 4 (m = 2)

22 Generující matice Řádky generující matice tvoří všechny součiny pro s ≤ r. Kód R(2, 3) má tuto generující matici

23 Kódování R-M kódů Při kódování v R(r, m) jsou informační znaky hodnoty q 1 (= 0, 1) pro všechna čísla i = 0, 1, …, 2 m -1, jejichž binární rozvoj má nejvýše m jedniček. Pak vyšleme booleovský polynom kde klademe q i = 0, jakmile má i v binárním rozvoji váhu ≥ m. Počet znaků kódu R(r, m) je číslo:

24 Kódování R-M kódů Což plyne ze skutečnosti, že počet všech součinů (pro i 1, i 2, …, i s navzájem různá) je pro s = 0, 1, …, r. Odtud vyplývá: R(m, m) = pro R(m – 1, m)je(2 m, 2 m – 1)-kód, tedy kód celkové kontroly parity, R(m – 2, m)je(2 m, 2 m – m – 1)-kód, tedy rozšířený Hammingův kód, R(1, m)je(2 m, m + 1)-kód, duální k R(m – 2, m), R(0, m)je(2 m, 1)-kód, je opakovací kód, R(-1, m) = {0}.

25 Dekódování R-M kódů Opakovací kódy R(0, m). dekódování provádíme metodou „hlasování“. Přijaté slovo w = w 0 w 1 …w n-1, pro n = 2 m. Hledáme složku v 0 vyslaného vektoru tak, že položíme: v 0 = w 0, v 0 = w 1, … v 0 = w n-1, Jestliže platí většina těchto rovnic pro v 0 = 0, rozhodneme, že skutečně platí v 0 = 0. Podobně pro v 0 = 1. V nerozhodném případě buď necháme v 0 nedefinováno, nebo (obvyklejší postup, který však nemění počet opravených chyb) položíme v 0 = w 0. Nakonec položíme v = v 0 v 0 …v 0. Pokud nastalo méně než n/2 chyb, je většina z uvedených rovnic platná a vyslané slovo je skutečně v. Tím byl naplněn cíl, minimální vzdálenost kódu je n a jsme schopni opravit n/2 – 1 chyb.

26 Dekódování R-M kódů Pro dekódování provádíme postupně jednotlivé iterační kroky. Pro hledanou soustavu rovnic se rozhodneme buď pro 0 nebo 1 tak, aby většina rovnic platila. 1. Přijmeme slovo w a určíme koeficient s indexem váhy r:  Hledáme slovo  Z přijatého slova w = w 0 w 1 …w n-1, pro n = 2 m. Je-li většina q i = 1 bude q i = 1, pokud je většina q i = 0 bude q i = 0. Pokud je situace nerozhodná, bude q i nabývat minulé hodnoty. 2. Následuje rekurzívní krok, v němž stejným postupem určujeme  Předchozí postup aplikujeme na slovo w’. Opakujeme dokud nezískáme hodnotu q i. 3. Opravíme i-tý bit slova.

27 Příklad Používáme kód R(1, 3) a chceme dekódovat slovo w = Platí:

28 Příklad

29 Zbývá určit koeficient q 0. Od přijatého slova odečteme q 1 x 1 (protože q 2 = q 4 = 0), pro x 1 = vypočítáme: w’ = w – q 1 x 1 = – = odtud hlasováním dostáváme q 0 = 1. Výsledný vektor je = = = Pokud tedy nedošlo k více než jedné chybě, zjistili jsme, že při přijetí slova w = bylo vysláno slovo v =

30 Závěr Tato metoda umožňuje opravování chyb v počtu 2 m-r-1 – 1. To je zajištěno Hammingovou vzdáleností 2 m-r. Například kód R(1, 5) je označován také jako (32, 6)-kód, který opravuje = 7 chyb.


Stáhnout ppt "Kódování Radim Farana Podklady pro výuku pro akademický rok 2013/2014."

Podobné prezentace


Reklamy Google