home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 January / Chip_2000-01_cd.bin / obsahy / Chip_txt / TXT / 174.txt < prev    next >
Text File  |  1999-11-24  |  15KB  |  66 lines

  1. Bezpeƒnostní kódy, díl 3.
  2. V dneτním díle se nejprve v krátkosti dotkneme tématu lineárních prostorà, na které naváºeme v∞kladem o kódech lineárního typu. Budeme se zab∞vat zejména obecn∞mi vlastnostmi t╪chto kódà, které si budeme demonstrovat na jednoduch∞ch p²íkladech.
  3.  
  4. V klidu a bezpeƒí (3)
  5.  
  6. Obecn∞ v∞klad teorie lineárních prostorà si dále dovolím maximáln╪ zestruƒnit. Ukáºeme si pouze ty nejzákladn╪jτí vlastnosti, které budeme pot²ebovat pro správné pochopení dalτího v∞kladu. Zájemce o hlubτí studium této problematiky si tímto dovoluji odkázat na [ADAM89]. Jako elementární úvod do lineární algebry si v p²ípad╪ pot²eby dovoluji doporuƒit [DEPO99].
  7.  
  8. Lineární prostory
  9. Struƒn╪ ²eƒeno, za lineární prostor povaºujeme kaºdou mnoºinu vektorà (oznaƒíme si ji t²eba P), která je uzav²ená vzhledem k operaci vektorového souƒtu a skalárního násobení (pro kaºdé x, y ? P a ????R platí, ºe ?(x + y) = (?x + ?y) ? P). V p²ípad╪ zmín╪n∞ch operací dále platí obvyklé asociativní, komutativní a distributivní zákony. Kaºd∞ lineární prostor obsahuje t麠nulov∞ prvek (nulov∞ vektor).
  10. Aƒkoliv ²íkáme, ºe lineární prostor se skládá z vektorà, nemusí se vºdy jednat o aritmetické vektory, tedy o vektory typu x = (x1, x2, ..., xn). Dan∞ prostor màºe b∞t stejn╪ dob²e tvo²en nap²íklad mnoºinou vτech funkcí reálné prom╪nné se spoleƒn∞m definiƒním oborem. V tomto p²ípad╪ budeme pod pojmem vektor chápat n╪jakou konkrétní reálnou funkci. Toto "p²etíºení" jména vektor màºe b∞t n╪kdy matoucí, a proto na n╪j rad╪ji upozorσuji. Naτt╪stí pro nás budeme prakticky vºdy pracovat s prostory, které jsou tvo²eny aritmetick∞mi vektory (tedy t╪mi "prav∞mi" vektory), takºe zde nedorozum╪ní nehrozí.
  11. P²edpokládejme, ºe máme dán lineární prostor P (tedy mnoºinu vektorà P s dan∞mi vlastnostmi). Vezm╪me si nyní n╪jakou podmnoºinu M ? P. Nyní nás zajímá, zda i tato mnoºina M tvo²í lineární prostor. Snadno nahlédneme, ºe to nemàºeme obecn╪ urƒit, nebo£ dané M màºeme zajisté vybrat tak "neτikovn╪", ºe pro n╪jaké x, y ? M bude x + y leºet mimo pàvodní M. Co s tím? Pro tento úƒel se zavádí pojem lineární obal mnoºiny, kter∞ v naτem p²ípad╪ znaƒíme jako <M> a kter∞ je definován jako nejmenτí lineární prostor v P, kter∞ obsahuje M ( M ? <M> ). Uvedené "obalení" mnoºiny M ned╪lá v podstat╪ nic jiného, neº ºe nám k této mnoºin╪ p²idá vτechny "chyb╪jící" vektory tak, abychom docílili uzav²enosti v∞τe uveden∞ch operací. Poznamenejme, ºe lineární obal n╪jaké mnoºiny M vytvo²íme snadno jako mnoºinu vτech lineárních kombinací vektorà z M. Pokud tedy nap²íklad máme M = { a, b }, potom <M> = { (?a +?b): a, b ? M, ?, ? ? R }.
  12. Máme-li lineární prostor P a n╪jakou jeho podmnoºinu M ? P, která je uº sama prostorem ( M = <M> ), potom M oznaƒujeme jako podprostor prostoru P - definice D3.1.
  13. P²edstavme si nyní, ºe jsme z mnoºiny P vybrali takovou její podmnoºinu B ? P, jejíº lineární obal <B> tvo²í celou mnoºinu P, tedy <B> = P. Neprázdné mnoºin╪ B, obsahující lineárn╪ nezávislé vektory s uvedenou vlastností, ²íkáme báze prostoru P - definice D3.2. Poznamenejme, ºe obecn∞ lineární prostor nemusí mít koneƒnou bázi. Nás vτak budou zajímat pouze ty prostory, které koneƒnou bázi mají, a ty budeme naz∞vat vektorov∞mi prostory dimenze dim(P), kde dim(P) udává práv╪ poƒet prvkà v bázi B - definice D3.3.
  14. Uvedená vlastnost vektorov∞ch prostorà nám dává velmi uºiteƒnou moºnost popsat tyto jinak t²eba velmi rozsáhlé mnoºiny pomocí lineárních kombinací vektorà báze B, jejíº velikost odpovídá uº "jen" dimenzi daného prostoru. Konkrétní báze p²itom jednoznaƒn╪ urƒuje vektorov∞ prostor, kter∞ je jejím obalem. Prakticky si takov∞ popis ukáºeme za okamºik.
  15. Poslední poznámka bude pat²it algebraick∞m strukturám, se kter∞mi budeme pracovat. Aº na v∞jimky se budeme zab∞vat hlavn╪ binárními kódy, coº znamená, ºe základním stavebním kamenem naτich teorií bude t╪leso Z2. Pomocí prvkà tohoto t╪lesa budeme tvo²it aritmetické vektory x = (x1, x2, ..., xn), xi ? Z2, ze kter∞ch budeme nakonec stav╪t vektorové prostory dle definice 3.3. Volbou t╪lesa Z2 je dáno i chování operací vektorového souƒtu a skalárního násobení, které jsou vτem ƒtená²àm paraleln╪ b╪ºících seriálà o kryptografii jist╪ velmi dob²e známy (bliºτí úvod do obecné algebry viz [ADAM89]). Pro jistotu p²ipomínám, ºe hlavní zajímavostí t╪lesa Z2 je fakt, ºe 1 ? -1 (mod 2), coº nap²íklad znamená, ºe operace p²iƒtení a odeƒtení jedniƒky nám dávají stejn∞ v∞sledek. Tato vlastnost n╪kdy vede aº k tomu, ºe se v obecn∞ch vztazích pro binární kódy zcela ignoruje znaménko minus a vτude se píτe jen plus. Pro zachování obecnosti se vτak pokusíme t╪mto "vylepτením" vyhnout, nebo£ p²i p²echodu ke kódàm o jiném základu (t²eba ke Golayovu ternárnímu kódu) bychom pak mohli mít problémy.
  16.  
  17. Lineární kódy
  18. Základem kaºdého q-árního lineárního kódu typu (n,k) je vektorov∞ prostor sloºen∞ z q-árních aritmetick∞ch vektorà délky n, kter∞ oznaƒíme jako V(n,q). Platí, ºe dimenze dim(V(n,q)) = n a tento prostor obsahuje vτechna slova tohoto kódu (tedy C = V(n,q)). Na tomto prostoru se dále definuje jeho podprostor L ??V(n,q) o dimenzi dim(L) = k, do kterého se zobrazují kódovaná slova (tedy Ck = L).
  19. Pro úƒely kódování chápeme kódovaná slova t麠jako aritmetické vektory o délce k. Vlastní operace kódování pak tomuto (sou²adnicovému) vektoru p²i²azuje odpovídající vektor v prostoru L (pokud dále nebudeme chtít zdàrazσovat, ºe L je podprostorem V(n,q), budeme L oznaƒovat jako prostor). Jak jsme si uº ²ekli, kaºd∞ prvek prostoru je moºné jednoznaƒn╪ urƒit pomocí lineární kombinace vektorà jeho báze, coº odpovídá násobení matice báze dan∞m sou²adnicov∞m vektorem. Odtud jiº p²ímo dostáváme návod pro kódovací p²edpis ve tvaru ?(x) = xG, kde G je matice, jejíº ²ádky tvo²í vektory báze prostoru L. V teorii kódà se tato matice oznaƒuje jako generující matice daného kódu - definice D3.4. O matici G víme, ºe pro kód typu (n,k) je typu [k,n], neboli ºe má k ²ádkà (odpovídá dimenzi dim(L)) a n sloupcà (odpovídá délce vektorà daného kódà).
  20. Vidíme, ºe pro úsp╪τné kódování vstupních znakà nám postaƒuje znát matici báze daného prostoru a um╪t ji vynásobit kódovan∞m vektorem. Jako praktick∞ p²íklad si uve╘me t²eba náτ znám∞ kód sudé parity typu (4,3), kter∞ má generující matici G = ((1,0,0,1), (0,1,0,1), (0,0,1,1)). P²edpokládejme, ºe chceme zakódovat t²eba slovo x = (1,0,1). Podle p²edpisu tedy provedeme operaci c = ?(x) = xG = (1,0,1,0). Stejn╪ tak i slovo x = (1,0,0) snadno zakódujeme jako c = xG = (1,0,0,1). Snadno ov╪²íme, ºe se opravdu jedná o kód sudé parity.
  21.  
  22. Systematiƒnost
  23. V minulém p²íkladu, kde jsme si ukázali generující matici pro kód sudé parity, jste si mohli povτimnout toho, ºe kódová slova m╪la nejen sudou paritu (coº bychom oƒekávali p²edevτím), ale ºe vykazovala i vlastnost souvislé systematiƒnosti dle D2.2.
  24. Celkem snadno nahlédneme, ºe dan∞ lineární kód je souvisle systematick∞, kdyº jeho matice G má tvar G = (Ek | B). P²itom Ek je jednotková matice ²ádu k a B je matice typu [k,n-k] - tvrzení T3.1. Poznamenejme, ºe v tomto p²ípad╪ je permutace informaƒních znakà volena tak, aby zaƒátky jednotliv∞ch kódov∞ch slov p²ímo odpovídaly kódované informaci. Platí totiº, ºe ?(x) = x1, x2, ..., xk, y1, y2, ..., yn-k, kde y = xB.
  25. Nyní, kdyº známe vztah mezi maticí G a vlastností kódu b∞t souvisle systematick∞m, zb∞vá jiº jen do²eτit otázku, co d╪lat v p²ípad╪, kdy dan∞ kód souvisle systematick∞ není. Potom se nám bude hodit tvrzení, které ²íká, ºe jak∞koliv lineární kód je moºné pomocí základních úprav nem╪nících hodnost matice G (viz [DEPO99]) p²evést na ekvivalentní souvisle systematick∞ kód s generující maticí G = (Ek | B) - tvrzení T3.2. 
  26. Pro dalτí v∞klad tedy budeme p²edpokládat, ºe matici G máme dánu ve tvaru G = (Ek | B).
  27.  
  28. Váha slova
  29. P²ed dalτím v∞kladem bude vhodné si pon╪kud rozτí²it zavedené pojmy o v∞raz váha slova. Váhu slova x znaƒíme jako w(x) a definujeme ji jako poƒet nenulov∞ch znakà ve slov╪ x - definice D3.5. Nap²íklad w(1001) = 2, w(1101) = 3, apod.
  30. Pojem váha slova jsme si zavedli proto, abychom si vytvo²ili alternativní moºnost v∞poƒtu Hammingovy vzdálenosti. Platí totiº, ºe d(x,y) = w(x-y) - tvrzení T3.3. Dàkaz tohoto tvrzení je snadn∞, nebo£ hodnota d(x,y) nám udává poƒet pozic, na kter∞ch se slova x a y liτí, coº je práv╪ poƒet nenulov∞ch pozic v jejich rozdílu.
  31.  
  32. Vlastnosti
  33. Díky tomu, ºe lineární kódy jsou vystav╪ny nad vektorov∞m prostorem, získávají jejich kódová slova urƒité vlastnosti, které je vhodné mít na z²eteli. Nejdàleºit╪jτí z t╪chto charakteristik si shrneme v následujících bodech, které oznaƒíme jako tvrzení T3.4:
  34.  
  35. ?    libovolná lineární kombinace dvou kódov∞ch slov je kódové slovo,
  36. ?    nulov∞ vektor je kódové slovo,
  37. ?    minimální kódová vzdálenost odpovídá minimu váhy p²es vτechna nenulová kódová slova, tedy dmin(?) = min {w(x): x?Ck\{0}}.
  38.  
  39. Vlastnosti 1 a 2 plynou p²ímo z toho, ºe kód je vektorov∞m prostorem. Bod t²i snadno dokáºeme pomocí bodu jedna, nebo£ platí (dle T3.3), ºe dmin(?) = min {w(x-y): x,y?Ck, x ? y }. Neboli hledáme minimum váhy rozdílu dvou libovoln∞ch ràzn∞ch kódov∞ch slov. Z bodu jedna ovτem víme, ºe rozdíl dvou kódov∞ch slov je t麠kódové slovo, takºe vlastn╪ staƒí najít minimum váhy p²es vτechna nenulová (x ? y) kódová slova - dàkaz P3.1.
  40. Pro praktick∞ návrh je dàleºit∞ zejména bod 3, díky n╪muº màºeme celkem snadno urƒit minimální kódovou vzdálenost, aniº bychom museli zkoumat vτechny dvojice kódov∞ch slov.
  41.  
  42. Detekce chyb
  43. Jak správn╪ zakódovat vysílané slovo a jaké vlastnosti toto zakódování bude mít, uº víme. Te╘ nám zb∞vá jeτt╪ rozebrat druhou ƒást problému, a to urƒit, jak budeme s p²ijatou informací zacházet na stran╪ dekodéru. Uº minule jsme si naznaƒili, ºe podstatou lineárních kódà je fakt, ºe mnoºina kódov∞ch slov tvo²í n╪jak∞ lineární podprostor, díky ƒemuº màºeme odliτit slova kódová od slov nekódov∞ch na základ╪ jejich p²ísluτnosti (nebo naopak nep²ísluτnosti) k danému podprostoru.
  44. Dobrá, bu╘me tedy konkrétn╪jτí. ⁿekn╪me, ºe jsme práv╪ p²ijali slovo odpovídající vektoru w a ºe chceme zjistit, zdali je toto slovo kódové. Uº víme, ºe slovo w bude kódové, pokud se nám poda²í prokázat jeho p²ísluτnost k podprostoru L, kter∞ je generován p²ísluτnou maticí G, jeº jednoznaƒn╪ popisuje dan∞ kód. Nyní si staƒí uv╪domit druh∞ moºn∞ zpàsob popisu naτeho podprostoru L, kter∞ ²íká ºe tento podprostor je t麠mnoºinou vτech ²eτení homogenní rovnice ve tvaru HxT = 0. Matici H typu [n-k,n] a hodnosti hod(H) = n-k budeme naz∞vat kontrolní maticí kódu ? - definice D3.6.
  45. To, co jsme si práv╪ ²ekli, znamená, ºe pro kaºd∞ lineární kód ???kter∞ je generován maticí G, màºeme najít kontrolní matici H takovou, ºe platí HxT = 0 práv╪ tehdy, kdyº x je kódové slovo - tvrzení T3.5.
  46. Zb∞vá jeτt╪ do²eτit otázku, jak danou matici H najít. ⁿekli jsme si, ºe je to matice soustavy n-k homogenních rovnic, jejichº ²eτení tvo²í prostor kódov∞ch slov. Známe-li dob²e algebraickou strukturu pouºitého kódu, màºeme matici H vytvo²it jednoduτe tak, ºe najdeme vτechny zmín╪né rovnice. Jako p²íklad si uve╘me op╪t kód sudé parity. O n╪m víme, ºe je typu (n,n-1), a tudíº hledáme pouze jednu homogenní rovnici, jejíº koeficienty budou tvo²it kontrolní matici H. V p²ípad╪ sudé parity to bude známá rovnice x1+x2+...+xn = 0. Pro konkrétní kód typu (4,3) dostaneme H = (1,1,1,1). Zvolme nyní namátkou t²eba jedno kódové slovo c = (1,0,1,0) a jedno slovo nekódové y = (1,1,1,0). Vidíme, ºe HcT = 0, zatímco HyT = 1 ? 0, coº je pln╪ v souladu s naτimi p²edpoklady (nedàv╪²ivci si mnohou projet vτech 24 slov).
  47. Pro sudou paritu nám uveden∞ zpàsob hledání matice H postaƒoval, avτak jist╪ bychom rádi naτli n╪jaké obecn╪jτí pravidlo, nejlépe pak takové, které umoºní snadno p²echázet od matice G k matici H a obrácen╪. Takov∞ vztah skuteƒn╪ existuje a vypadá následovn╪: máme-li generující matici G typu [k, n] kódu (n,k), kde G = (Ek | B), potom kontrolní matici H urƒíme jako H = (-BT | En-k). Matice H je typu [n-k,n] - tvrzení T3.6.
  48. Prakticky si vyuºití uvedeného tvrzení ukáºeme na p²íkladu koktavého kódu typu (6,2), kter∞ má generující matici G = ( (1,1,1,0,0,0), (0,0,0,1,1,1)). Nejd²íve tuto matici prohozením druhého a ƒtvrtého sloupce upravíme na matici pro souvisle systematick∞ kód G' = ((1,0,1,1,0,0), (0,1,0,0,1,1)). Nyní si vτimneme, jak vypadá matice G' z pohledu p²edpisu G' = (Ek | B). Vidíme, ºe matice Ek je jednotková matice druhého ²ádu a ºe je následována maticí B = ((1,1,0,0), (0,0,1,1)). Odtud jiº snadno vytvo²íme matici H = ( (1,0,1,0,0,0), (1,0,0,1,0,0), (0,1,0,0,1,0), (0,1,0,0,0,1)). Jako malé cviƒení si nyní màºete vyzkouτet, ºe pomocí této matice jste schopni odliτit slova kódová od nekódov∞ch.
  49.  
  50. Oprava chyb
  51. P²edpokládejme, ºe bylo vysláno kódové slovo c, které bylo v pràb╪hu cesty zatíºeno chybov∞m vektorem e. P²ijali jsme tedy slovo w = c + e. Díky tomu, ºe pracujeme nad t╪lesem Z2, màºeme zm╪nu bitu p²enáτeného slova jednoduτe popsat jako p²iƒtení vektoru e, kter∞ má jedniƒky práv╪ na t╪ch pozicích, kde doτlo ke zm╪nám.
  52. Nyní provedeme v∞τe popsan∞ zpàsob dekódování, takºe vypoƒteme hodnotu s = HwT = HcT + HeT = 0 + HeT = HeT. Hodnotu s budeme naz∞vat syndromem slova w. Vidíme, ºe pokud nedoτlo b╪hem p²enosu k chybám (platí e = 0), potom je syndrom p²ijatého slova nulov∞. To je pln╪ v souladu s tím, co jsme si ²ekli v minulé ƒásti.
  53. Dalτím p²ípadem, kdy obdrºíme nulov∞ syndrom, je situace, kdy chybov∞ vektor odpovídá n╪jakému kódovému slovu. Takové chyby nelze ani detekovat, natoº pak opravit. To je ovτem op╪t pln╪ v souladu s vlastnostmi lineárních kódà.
  54. V ostatních p²ípadech se màºeme pokusit na základ╪ nenulového syndromu s provést opravu p²ijatého slova w. Zpàsob, kter∞ si tu dnes v krátkosti ukáºeme, je modifikací takzvané standardní metody dekódování (viz [ADAM89]). Vyuºijeme zde p²edpokladu, ºe konkrétnímu chybovému slovu odpovídá konkrétní hodnota syndromu s. Na základ╪ této úvahy potom sestavíme p²evodní tabulku T (màºe b∞t realizována nap²íklad pam╪tí typu ROM), jejíº pomocí urƒíme p²edpokládan∞ chybov∞ vektor a provedeme opravu slova w jako w' = w - T[s] = w - T[HwT].
  55. Uveden∞ zpàsob ovτem p²edpokládá, ºe chybov∞ vektor je syndromem s urƒen jednoznaƒn╪. To vτak platí pouze v p²ípad╪, kdy nastalo maximáln╪ tolik chyb, kolik je dan∞ kód schopen opravit podle své minimální kódové vzdálenosti (viz. T1.2). Pokud bychom se pokouτeli opravit více chyb, zjistíme, ºe více ràzn∞ch chybov∞ch slov odpovídá stejnému syndromu, takºe nebudeme schopni správn╪ zkonstruovat tabulku T. Prakticky si to màºete vyzkouτet na v∞τe uvedeném p²íkladu koktavého kódu. V p²ípad╪ opravy jednonásobn∞ch chyb (uvaºujeme pouze vektory e o váze jedna) tabulku T zkonstruujeme snadno. Pokusíme-li se vτak o tot麠pro dvojnásobné chyby, zjistíme, ºe v n╪kter∞ch p²ípadech nejsme schopni rozhodnout, která chyba vlastn╪ nastala.
  56.  
  57. Záv╪r
  58. V tomto díle jsme si ukázali základní vlastnosti vektorov∞ch prostorà a lineárních kódà, které se nad nimi budují. Na první pohled moºná pàsobí probraná látka sloºit∞m dojmem, avτak z praktického hlediska se jedná pouze o n╪kolik pravidel, která je t²eba si dob²e osvojit, a hlavn╪ pochopit vzájemnou provázanost jednotliv∞ch tvrzení.
  59. P²íτtí pokraƒování bude jiº kompletn╪ zasv╪ceno v∞kladu Hammingov∞ch kódà, na které nám zde uº dnes nezbylo dost místa. S v∞hodou p²itom zúroƒíme vτechny dnes nabyté v╪domosti.
  60. Tomáτ Rosa (tomas.rosa@decros.cz)
  61.  
  62. Literatura:
  63. [ADAM89] Adámek, J.: Kódování. Praha, SNTL 1989.
  64. [DEPO99] Demlová, M. - Pond╪líƒek, B.: Θvod do algebry. Skripta ¼VUT FEL, 1999.
  65.  
  66.