Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Kódelmélet Adó-Információs csatorna-Vevő A={a 1,…,a n } ábécé (véges szimbólumkészlet) Elsődleges közlés: a i1,…,a in jelsorozat AdókészülékVevőkészülék.

Hasonló előadás


Az előadások a következő témára: "Kódelmélet Adó-Információs csatorna-Vevő A={a 1,…,a n } ábécé (véges szimbólumkészlet) Elsődleges közlés: a i1,…,a in jelsorozat AdókészülékVevőkészülék."— Előadás másolata:

1 Kódelmélet Adó-Információs csatorna-Vevő A={a 1,…,a n } ábécé (véges szimbólumkészlet) Elsődleges közlés: a i1,…,a in jelsorozat AdókészülékVevőkészülék Adattovábbító csatorna

2 Adatátviteli csatorna Kapacitása (Jelkészlete): K={k 1, k 2,…k n }, általában |K|<|A| A jelkészlet átvitelének fizikai megvalósítása Adó- készülék Vevő- készülék Fizikai jelek KódolóModulátorDemodulátorDekódoló Elsődleges közlés Kódolt jelek

3 Adó+vevő=adóvevő Kódoló+dekódoló=kodek Modulátor+demodulátor=modem Def: ha a kódoló  a  A elsődleges betűhöz a K halmazból vett K a = sorozatot rendel, akkor azt betű szerinti kódolásnak nevezzük. Bináris modell: K={0,1} Adókészülék +kódoló +modulátor Vevőkészülék +dekódoló +demodulátor Adókészülék +kódoló +modulátor Kétirányú adattovábbítás

4 Def: K a = sorozat: kódszó, {K a } halmaz: kód, a az elsődleges közlésnek megfelelő kódszavak konkatenáltja pedig kódolt közlés Példa: A={a,b,c,d}, kód={00, 01, 100, 101} dac  a betű szerinti kódolása Def: H:A*  {0,1}* kódolás, az A sorozataiból a K sorozataiba vivő függvény Def: H -1 : {0,1}*  A* dekódolás, a K sorozataiból az A sorozataiba vivő függvény Feltétele: ne legyen két olyan közlés, amit H ugyanabba a kódolt közlésbe visz át, vagyis H egy-egyértelmű Példa: A={a,b,c,d}, kód={00, 01, 11, 0001} nem egy- egyértelmű, mert ab  0001, és d  0001 Def: Ha H -1 létezik, azt mondjuk: a kód felbontható

5 Mikor felbontható egy kód: Ha a kódszavak hossza egyforma  a kód felbontható Def: Egy kódot prefix kódnak nevezünk akkor, ha egyik kódszó sem valódi kezdőszelete a másiknak Tétel: a prefix kód felbontható Biz: Tfh. a K= {k 1, k 2,…, k n } kód nem felbontható. Ekkor létezik egy olyan S= sorozat, ami kétféleképpen és módon felbontható (dekódolható). Tfh. a két sorozat első különböző tagja az a ki ill. az a lj elemek, amelyekhez tehát ugyanaz a kód tartozik. A |H(a ki )|<|H(a lj )|, akkor a ki a lj valódi kezdőszelete, egyébként fordítva  ellentmondás…

6 McMillan-féle egyenlőtlenség Tétel: Ha a K={k 1,k 2,…,k n } kód felbontható  i=1 Σ n 2 -li <=1, ahol l i a k i kódszó hossza. Biz: Emeljük fel az összeget a t-ik hatványra. ( i=1 Σ n 2 -li ) t =( i1=1 Σ n 2 -li1 )*( i2=1 Σ n 2 -li2 )*…*( it=1 Σ n 2 -lit )= ( i1,i2,…,it=1 Σ n 2 –(li1+li2+…+lit) )…, ahol 1<=i j <=n és 1<=j<=t Az l i1 +l i2 +…+l it hossz-sorozat nem más, mint az {a i1,a i2,…,a it } t hosszú elsődleges közlés kódolásának hossza. Jelöljük ezt L(a i1,a i2,…,a it )-vel. …=( ai1,ai2,…,ait=1 Σ n 2 –L(ai1,ai2,…,ait) ), vagyis az összes t hosszú elsődleges közlésre összegzünk. Jelölje N(t,r) azoknak a t hosszúságú elsődleges közléseknek a számát, amelyre L(a i1,a i2,…,a it )=r (kódhossz), és legyen M a K beli kódszavak hosszának a maximuma. Ekkor t<=L(a i1,a i2,…,a it )<=M*t

7 ( ai1,ai2,…,ait Σ 2 –L(ai1,ai2,…,ait) )=( r=t Σ M*t N(t,r)*2 –r )… (áttérünk kódszó-bithossz szerinti összegzésre) Másrészt: N(t,r)<=2 r, hiszen 2 r -nél több szimbólum felbontható módon nem kódolható le r bittel. Ezért: …<=( r=t Σ M*t 2 r *2 –r )=( r=t Σ M*t 1)=( r=t Σ M*t 1)=(M- 1)*t+1 Vagyis tetszőleges t-re: ( i=1 Σ n 2 -li ) t <=(M-1)*t+1 Ha ( i=1 Σ n 2 -li )>1 lenne igaz, akkor eléggé nagy t-re a fenti egyenlőtlenség nem állhatna fenn. Tehát ( i=1 Σ n 2 -li )<=1 áll fenn.

8 Kódfa Olyan bináris fa, amely csomópontjaihoz vezető út megfelel a kódszavaknak. (pl. jobbra=0, balra=1) Prefix kód: csak a falevelekhez van kódszó rendelve Pl: A={a,b,c,d,e,f},H(A)={10,11,01,0011,0010,000} Dekódolás: a bejövő bitektől függően gyalogolunk a fán. Minden prefix kódhoz lehet kódfát létrehozni. abc de f 01

9 Optimális kódok Legyen A egy adatforrás ábécéje, amely az egyes jeleket egymástól függetlenül adja ki. Legyen a P={p 1,p 2,…p n } a kibocsátott jelek valószínűségeinek halmaza. Világos, hogy p i <1, és i=1 Σ n p i =1. Pl: magyar szövegre: p e


10 Shannon-féle entrópia Tétel: Tetszőleges F forráshoz létezik optimális prefix kód L(K o ).  ???De melyik az??? Def: Az F forráshoz tartozó H(F)= i=1 Σ n p i *log(1/p i ) összeget az F forrás (Shannon-féle) entrópiájának nevezzük. Tétel: Az F forráshoz tartozó bármely felbontható K kódra L(K)>=H(F). Biz: H(F)-L(K)= i=1 Σ n p i *log(1/p i )- i=1 Σ n p i l i = i=1 Σ n p i (log(1/p i )-l i )= i=1 Σ n p i (log(1/p i )- log(2 li ))= i=1 Σ n p i (log(2 -li /p i )) ((ismert: ln(x)<=x-1  log(x)<=(x-1)/ln(2)))  H(F)-L(K)= i=1 Σ n p i (log(2 -li /p i ))<= i=1 Σ n p i /ln(2)*(2 - li /p i -1)= 1/ln(2)( i=1 Σ n 2 -li -1)<=0

11 Megjegyzés: Ha az eloszlás egyenletes (p i =1/n), akkor H(F)= i=1 Σ n 1/n*log(n)=log(n)  ilyenkor az optimális kódfa egyenletes, magassága a kód költsége=log(1/n) abcd 01

12 Egy kis filozófia Barkochba: kód: egy fogalom kitalálásához vezető kérdések száma. Mikor jók a kérdések?  egy halmaz elemeinek a kiválasztásához szükséges információmennyiség  szürke halmazokra (ha nincs előzetes információnk) költséges  egyéniséggel rendelkező halmazelemek esetén (ha van előzetes információnk) olcsóbb  ha nem készülünk fel (nem gyűjtünk előzetes infót), akkor többe kerül a kiválasztási művelet…  kódfageneráláskor az igen/nem vlszségnek közel 50-50% kell lennie.

13 Optimális kód konstrukciója (Shannon-Fanno szuboptimális) Állítsuk sorba az elemeket és a vlszségeket. A Shannon-Fanno kódfa „oldalra nyomott” lesz (rövidebb kódokat kapnak a nagyobb vlszségű elemek, hosszabbakat a kisebbek) Shannon-Fanno: A fát a gyökerénél kezdjük építeni, osszuk fel a vlszségi listát kb % arányban (stb. rekurzíve)

14 Az optimális kód Huffman féle konstrukciója Tétel: Az F jelforráshoz (A={a 1,a 2,…,a n } ábécéhez és P={p 1 >=p 2 >= … >= p n } eloszláshoz) létezik legalább egy K= {k 1, k 2,…, k n } optimális prefix kód, hogy l 1 <=l 2 <=…<=l n-1 =l n, és az utolsó két kódszó  ill.  , alakú. Biz: legyen K o egy olyan optimális kód, amelyre az állítás nem igaz, vagyis létezik i =p j, de l i >l j. - Ha éppen p i =p j lenne, akkor a két elemet kicserélve egy másik olyan optimális kódot kapunk, amelyre eggyel kevesebb l i >l j pár létezik. - Ha viszont p i >p j lenne, akkor ez és l i -l j >0 összeszorzásával p i *(l i -l j )>p j *(l i -l j )  p i *l i +p j *l j > p j *l i + p i *l j  vagyis a helycserével alacsonyabb költségű kódot kapnánk, ami viszont ellentmond a feltételnek  ÁLLÍTÁS első fele

15 Tfh. (indirekt) l n-1 =p 2 >= … >= p n } eloszlással), és K={k 1, k 2,…,k n } optimális prefix kód. Tfh. p i = q 1 +q 2. Ekkor a K’={k 1, k 2,…,k i-1,k i+1,…,k n,k i 0,k i 1} szintén optimális prefix kód lesz A={a 1,a 2,…,a n,a n+1 } ábécével és P={p 1 >=p 2 >=p i-1 >=p i+1 …>=p n >=q 1 >=q 2 } eloszlással. Biz: HF

16 Huffmann algoritmusa vlszlista sorbaállítása DO WHILE kételeműnél hosszabb a lista két legkisebb vlsz. összevonása összevont vlsz. Beillesztése LOOP a két elem a kódfa gyökere DO WHILE van összevont elem az összevont elemnél a kódfát felhasítjuk LOOP

17 0.2, 0.2, 0.19, 0.12, 0.11, 0.09, , 0.2, 0.19, 0.18, 0.12, , 0.2, 0.23, 0.19, , 0.23, 0.2, , 0.37, , HF: kiszámolni, hogy tényleg olcsóbb-e a Huffmann fa, mint a Shannon-Fanno.

18 Zajos csatorna. Hibajavító kódolás Fix méretű kódszavakat (blokkokat), felbontható (prefix) kódokat vizsgálunk.  a közlés mérete többszöröse a kódméretnek. Def: A csatorna legfeljebb t egyedi hibát okoz, ha a egy blokkban max ennyi hibás bit fordulhat elő. Pl: ha a legfeljebb 1 hiba fordulhat elő, akkor a kódolásban megduplázhatjuk a biteket  hibafelismerő kódolás. Ha megtriplázzuk  hibajavító kódolás… Def: Legyen K={k 1, k 2,…,k m } n blokkméretű kód. A log(m)/n arányt a kód sűrűségének nevezzük. Def: Az  és  n szélességű bitvektorok Hamming- távolságán  és  egymástól eltérő bitjeinek a számát értjük. Jelölése  ( ,  ). Példa:  ( ,  )=2

19 A Hamming távolság tulajdonságai 1.  ( ,  )>=0 2.  ( ,  )=0   =  3.  ( ,  )=  ( ,  ) 4.  ( ,  )<=  ( ,  )+  ( ,  ) Biz: Jelölje P( ,  ) azoknak a pozícióknak a halmazát, amelyekben  és  egymástól eltérnek. Ekkor P( ,  )=P( ,  ) U P( ,  )  ÁLLÍTÁS Az 1-4. Tulajdonságokat metrikának nevezzük. A Hamming távolság tehát metrika a bináris számok felett. Háromszög egyenlőtlenség

20 Def: Kódtávolságnak nevezzük és d(K)-val jelöljük egy K kód-beli szavak távolságának a minimumát. Példa: hibafelfedés nélkül: 1, hibafelfedéssel (dupla): 2, hibajavítással (tripla): 3. Tétel: Egy K kód akkor alkalmas t db. hiba felismerésére  ha d(K)>=t+1 Biz:  tfh. az  K kódszóban legfeljebb t db hiba keletkezik, és így a  szót kapjuk.  ( ,  ) t   Vagyis a hiba úgy ismerhető fel, hogy a beolvasott szó nem eleme a K kódnak.  Indirekt: Ha d(K)<=t, akkor létezhet  ( ,  )<=t. Ilyenkor viszont, ha a csatorna legfeljebb t hibát okoz, nem dönthető el, hogy  vételekor tényleg  -t adtak le, vagy  -ból változott azzá.

21 Példa: Álljon a B kód az n hosszú, páros számú 1-t tartalmazó kódokból. d(B)=2  1 hiba felfedésére alkalmas. Elnevezés: paritásellenőrző kód. Def: Jelölje S t (  ) azon  szavak halmazát, amelyekre  ( ,  )<=t. Ezt nevezzük  középpontú, t sugarú gömbnek. Ha S t (  )  S t (  )<>    ( ,  )<=2t. Tétel: a K kóddal akkor lehet hibát javítani,  ha d(K)>=2t+1. Biz:  Rajzoljunk a kódszavak köré t sugarú gömböt. Ezek nem metszhetik egymást. Legyen  egy olyan kódszó, amely  -ból legfeljebb t változtatással keletkezett. G mindenképpen beleesik egy S t (  ) gömbbe, és a diszjunktság miatt csak egybe eshet. A feladat tehát meghatározni a gömb középpontját.  Indirekt: tfh. d(K)<=2t. Ekkor van olyan S t (  ) és S t (  ), amelyek nem diszjunktak, legyen a közös pont . Ennek vétele esetén nem dönthető el, hogy a küldött szó a vagy b volt, vagyis nem tudjuk kijavítani a hibát.

22 Lineáris kódok Legyenek  {a 1,a 2,…,a n } és  {b 1,b 2,…,b n } bináris n- esek. Def: Az  és  vektorok összege alatt a  +  ={a 1 +b 1, a 2 +b 2,…,a n +b n } vektort értjük. Def: Az  és  vektorok skaláris szorzata alatt a a 1  b 1 +a 2  b 2 +…+a n  b n szorzatösszeget értjük. (az összeg mod 2 értendő) Def: Ha q bináris konstans (0 vagy 1), akkor az  vektor q-val vett szorzata alatt a q  {qa 1,qa 2,…,qa n } vektort értjük. (1*a=a, 0*a=0). Def: az  vektor w(  ) súlya alatt az  vektorban levő nem nulla elemek számát értjük. Példa: w({1,0,0,1,1})=3, w({0,0,1,0,1})=2

23 Látható, hogy a Hamming távolságra:  ( ,  )= w(  ) Def: Egy K kódot akkor nevezünk lineárisnak, ha   K esetén   K is teljesül. Köv: A 0 kódszó minden lineáris kódnak eleme. Biz: az  0-t ad ki. Def: Egy K kód w(K) súlya alatt a nem nulla kódszavainak a minimumát értjük. Tétel: Lineáris kódokra d(K)=w(K). Biz: Legyen  és  olyan kódszavak, amelyekre d(K)=  ( ,  )=w(  )>=w(K) Másrészt, legyen   K olyan kódszó, amelyre w(K)=w(  ). Ekkor: w(K)=w(  )=w(  +0)=  ( , 0 )>=d(K)

24 Egy kis lineáris algebra A lineáris kódok nem mások, mint a B n n dimenziós vektortér alterei a kételemű (0,1 Boolean) test felett, ahol az összeadás mod 2 érvényes, és a skalárszorzás a konjunkciónak felel meg. Ha K n hosszúságú lineáris kód, akkor létezik k<=n szám, és léteznek  1,  2,…,  k vektorok, hogy tetszőleges K-beli  kódszó felírható, mint az  i vektorok lineáris kombinációja, vagyis  =  1  1 +  2  2 +… +  k  k.  i -k helyett másik  i vektorrendszert választva a k szám nem változik. Biz: nélkül

25 Az ilyen tulajdonságú  i -k a K kód egy bázisát alkotják, k-t pedig a K kód dimenziójának nevezzük. Az ily módon kapott  i –k egyértelműek Az  i –k egymástól függetlenek, vagyis egyik sem írható fel a többi lineáris kombinációjaként. Ilyenkor |K|=2 k. A K kód sűrűsége=k/n A K kód egy bázisát alkotó  i vektorokból képzett G=(  1 /  2 /…/  k ) mátrixot a K kód generátormátrixának nevezzük. Tehát a K kód tetszőleges szava megkapható a generátormátrix alkalmas kombinációjaként.

26 Ha két vektor skaláris szorzata=0, akkor azt mondjuk, hogy merőlegesek (ortogonálisak) egymásra. Tétel: Legyen K egy m dimenziós, de n elemű lineáris kód. Ekkor léteznek olyan (  1,  2,…,  n-m ) egymástól független vektorok, hogy egy   B n pontosan akkor   K is, ha (  i )=0 a fenti vektorokra. Vagyis: K az n-dimenziós B n tér egy altere (síkja). Ilyenkor a síknak léteznek normálisvektorai, amelyek elemei a B n térnek, de nem elemei a K kódnak (mert merőlegesek rá).

27 Jelöljük K  -sel (K-duálissal) a (  1,  2,…,  n-m ) bázis által kifeszített kódot. K  dimenziója n-m K  független a (  1,  2,…,  n-m ) bázis konkrét megválasztásától Ha  i =(b i1,b i2,…, b in ), akkor a belőle felépíthető H=(  1 /  2 /…/  n-m )=((b i1,b i2,…,b in )/…/(b n-m1,b n-m2, …,b n-m n )) mátrix a K  kód generátormátrixa. Ezt (a duális kód generátormátrixát) a K kód ellenőrző mátrixának is hívjuk. Azért ellenőrző, mert ilyenkor egy   K  ha H*    ((b i1,b i2,…,b in )/…/(b n-m1,b n-m2,…,b n-m n )) *(a 1 /a 2 /…/b n )=(0/…/0)

28 H*      b 11 /b 21 /…/b n-m 1  …  n  b 12 /b 22 /…/b n-m 2  =(0  /…/0) Vagyis, ha az   K  <>0 kódszó súlya t, akkor a H mátrixban van t összefüggő oszlopvektor, és fordítva: ha van a H mátrixban t összefüggő oszlopvektor, akkor van t súlyú kódszó (ennek elemei: a kiválasztott pozíciókon 1, máshol 0). Ha ennél többet választunk ki, akkor azok már bizonyosan összefüggők lesznek. Vagyis: d(K)>t  ha a K kód ellenőrző mátrixából tetszőlegesen kiválasztva t oszlopot, ezek lineárisan függetlenek.

29 Hamming kódok Tétel: egy K lineáris kóddal pontosan akkor lehet t hibát kijavítani, ha a K ellenőrző mátrixában tetszőlegesen kiválasztva 2t oszlopot, ezek lineárisan függetlenek lesznek. Legyen a K kód blokkmérete n=2 l - 1. Álljon a K kód ellenőrző mátrixa az összes l hosszú, <>0 vektorból. Ilyenkor semelyik 2 oszlop nem lineárisan összefüggő, vagyis a kódtávolság d(K)>2, vagyis legalább 1 hibát javítani tudunk. Az ilyen kódokat Hamming kódoknak nevezzük. A Hamming kód dimenziója: n-l= 2 l -l- 1. A Hamming kód sűrűsége: (2 l -l- 1 )/=2 l =1-(l+1)/2 l  1-log(n)/n Ez lényegesen jobb, mint a korábbi példa

30 Példa: Legyen l=3, a blokkméret= =7 Az ellenőrző mátrix: H=(0/0/1,0/1/0,0/1/1,1/0/0,1/0/1,1/1/0,1/1/1) Kódtávolság: 2 oszlop mindig független 3 nem mindig, hiszen 0/0/1+0/1/0=0/1/1.  a legkisebb súlyú kódszó a legkevesebb számú összefüggő oszlopvektor  d(K)=3.  1 hibát javíthatunk vele. Dimenzió: n-l, az össz dimenzió-a duális kód dimenziója (=ellenőrző mátrix sorainak száma), =7-3=4 Kódsűrűség: log(|K|)/n=log(2 n-l )/n=(n-l)/n= (2 l -1-l)/(2 l -1)=( )/(2 3 -1)=4/7

31 Tfh   K, vagyis H*   =0. Változtassuk most meg az  kódszó egy bitjét. Tfh az eredmény  =  + , ahol  egyetlen 1 bitet tartalmaz a változtatás helyén. Ellenőrizzük, hogy  benne van- e K-ban? H*   =H*(  +  )  =H*   +H*   =H*   Ez utóbbi nem más, mint a H mátrix annyiadik oszlopa, mint ahol a változás történt. Pl. legyen  =(0,0,0,1,1,1,1),  =(0,0,0,1,0,0,0). H*   =H*(0/0/0/1/1/1/1)+H*(0/0/0/1/0/0/0)=(0/0/0) +(1/0/0)=(1/0/0) Vagyis: ha a beolvasott kódszót megszorozzuk az ellenőrző mátrixxal, az eredmény közvetlenül megadja a hibás bit sorszámát

32 Példa: legyen K egy l=4 dimenziójú Hamming kód: Adjuk meg a kód következő jellemzőit: kódszóhossz, ellenőrző mátrix, kódtávolság, hibajavító képesség, dimenzió, kódsűrűség


Letölteni ppt "Kódelmélet Adó-Információs csatorna-Vevő A={a 1,…,a n } ábécé (véges szimbólumkészlet) Elsődleges közlés: a i1,…,a in jelsorozat AdókészülékVevőkészülék."

Hasonló előadás


Google Hirdetések