1 / 32

Kódelmélet

Kódelmélet. Adattovábbító csatorna. Adókészülék. Vevőkészülék. 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. Adatátviteli csatorna. Kapacitása (Jelkészlete): K={k 1 , k 2 ,…k n }, általában |K|<|A|

wells
Download Presentation

Kódelmélet

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Kétirányú adattovábbítás Adókészülék+kódoló+modulátor Vevőkészülék+dekódoló+demodulátor Vevőkészülék+dekódoló+demodulátor Adókészülék+kódoló+modulátor • 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 Ka=<ka1, ka2,…, kan,> sorozatot rendel, akkor azt betű szerinti kódolásnak nevezzük. • Bináris modell: K={0,1}

  4. Def: Ka=<ka1, ka2,…, kan> sorozat: kódszó, {Ka} 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  10100100 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= {k1, k2,…, kn} kód nem felbontható. Ekkor létezik egy olyan S=<s1,s2,…,sn> sorozat, ami kétféleképpen <ak1,ak2,…,akn> és <al1,al2,…,alm> módon felbontható (dekódolható). Tfh. a két sorozat első különböző tagja az aki ill. az alj elemek, amelyekhez tehát ugyanaz a kód tartozik. A |H(aki)|<|H(alj)|, akkor aki alj valódi kezdőszelete, egyébként fordítva  ellentmondás…

  6. McMillan-féle egyenlőtlenség • Tétel: Ha a K={k1,k2,…,kn} kód felbontható i=1Σn2-li<=1, ahol li a ki kódszó hossza. • Biz: Emeljük fel az összeget a t-ik hatványra.(i=1Σn2-li)t=(i1=1Σn2-li1)*(i2=1Σn2-li2)*…*(it=1Σn2-lit)=(i1,i2,…,it=1Σn 2 –(li1+li2+…+lit))…, ahol 1<=ij<=n és 1<=j<=tAz li1+li2+…+lit hossz-sorozat nem más, mint az {ai1,ai2,…,ait} t hosszú elsődleges közlés kódolásának hossza. Jelöljük ezt L(ai1,ai2,…,ait)-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(ai1,ai2,…,ait)=r (kódhossz), és legyen M a K beli kódszavak hosszának a maximuma. Ekkor • t<=L(ai1,ai2,…,ait)<=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)<=2r, hiszen 2r-nél több szimbólum felbontható módon nem kódolható le r bittel. Ezért: • …<=(r=tΣM*t 2r*2–r)=(r=tΣM*t 1)=(r=tΣM*t 1)=(M-1)*t+1 • Vagyis tetszőleges t-re: (i=1Σn2-li)t<=(M-1)*t+1 • Ha (i=1Σn2-li)>1 lenne igaz, akkor eléggé nagy t-re a fenti egyenlőtlenség nem állhatna fenn. • Tehát (i=1Σn2-li)<=1 áll fenn.

  8. 0 1 c a b f e d 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.

  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={p1,p2,…pn} a kibocsátott jelek valószínűségeinek halmaza. Világos, hogy pi<1, és i=1Σn pi=1. • Pl: magyar szövegre: pe<pq.Az e-t elég lenne kevesebb bittel kódolni, mint a q-t. • Legyen L={l1,l2,…ln} a K kódkészlet kódhosszainak a vektora. • (Csökkenthető-e) egy m hosszú közlés átlagos hossza: • Lm=m*p1l1+m*p2l2+…+m*pnln=m*i=1Σm pi li • Def: a L(K)=i=1Σm pi li összeget a K kód F forrás melletti költségének nevezzük. • Rögzített F forrás mellett többféle K kód is létrehozható. • Def: optimálisnak nevezzük a Ko kódot a F forrásra nézve, ha L(Ko)<=L(K)

  10. Shannon-féle entrópia • Tétel: Tetszőleges F forráshoz létezik optimális prefix kód L(Ko). ???De melyik az??? • Def: Az F forráshoz tartozó H(F)=i=1Σn pi*log(1/pi) ö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Σnpi*log(1/pi)-i=1Σnpili=i=1Σnpi(log(1/pi)-li)=i=1Σnpi(log(1/pi)-log(2li))=i=1Σnpi(log(2-li/pi)) • ((ismert: ln(x)<=x-1 log(x)<=(x-1)/ln(2))) • H(F)-L(K)=i=1Σnpi(log(2-li/pi))<= i=1Σnpi/ln(2)*(2-li/pi-1)=1/ln(2)(i=1Σn 2-li-1)<=0

  11. 0 1 d c a b • Megjegyzés: Ha az eloszlás egyenletes (pi=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)

  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. 0 1 0.2 0.2 0.19 0.12 0.11 0.09 0.09 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. 50-50% arányban (stb. rekurzíve).

  14. Az optimális kód Huffman féle konstrukciója • Tétel: Az F jelforráshoz (A={a1,a2,…,an} ábécéhez és P={p1>=p2 >= … >= pn} eloszláshoz) létezik legalább egy K= {k1, k2,…, kn} optimális prefix kód, hogy l1<=l2<=…<=ln-1=ln, és az utolsó két kódszó a0, ill.a1, alakú. • Biz: legyen Ko egy olyan optimális kód, amelyre az állítás nem igaz, vagyis létezik i<j pár, hogy pi>=pj, de li>lj.- Ha éppen pi=pj lenne, akkor a két elemet kicserélve egy másik olyan optimális kódot kapunk, amelyre eggyel kevesebb li>lj pár létezik.- Ha viszont pi>pj lenne, akkor ez és li-lj>0 összeszorzásával pi*(li-lj)>pj*(li-lj)  pi*li+pj*lj> pj*li+ pi*lj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) ln-1<ln, vagyis a 2 leghosszabb kód nem egyforma hosszú. Legyen b az an ln-1 hosszú kezdőszelete. b nem lehet a kezdőszelete egyetlen más kódszónak, mert nem rövidebb. Ezek sem lehetnek b kezdőszeletei, mert akkor an kezdőszeletei is lennének. Ha ekkor kicserélnénk an-t b-ra, akkor egy olcsóbb kódot kapnánk, ami ellentmond a feltételnek  a két leghosszabb kód egyforma hosszú, és csak az utolsó bitben tér el. • Tétel: Legyen F jelforrás (A={a1,a2,…,an} ábécével és P={p1>=p2 >= … >= pn} eloszlással), és K={k1, k2,…,kn} optimális prefix kód. Tfh. pi= q1+q2. Ekkor a K’={k1, k2,…,ki-1,ki+1,…,kn,ki0 ,ki1} szintén optimális prefix kód lesz A={a1,a2,…,an,an+1} ábécével és P={p1>=p2>=pi-1 >=pi+1…>=pn>=q1>=q2} eloszlással. • Biz: HF

  16. Huffmann algoritmusa • vlszlista sorbaállításaDO WHILE kételeműnél hosszabb a lista két legkisebb vlsz. összevonása összevont vlsz. BeillesztéseLOOPa két elem a kódfa gyökereDO WHILE van összevont elem az összevont elemnél a kódfát felhasítjukLOOP

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

  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={k1, k2,…,km} n blokkméretű kód. A log(m)/n arányt a kód sűrűségének nevezzük. • Def: Az a és b n szélességű bitvektorok Hamming-távolságán a és b egymástól eltérő bitjeinek a számát értjük. Jelölése r(a, b). • Példa: r(001, 111)=2

  19. A Hamming távolság tulajdonságai Háromszög egyenlőtlenség • 1. r(a,b)>=0 • 2. r(a,b)=0  a=b • 3. r(a,b)=r(b,a) • 4. r(a,b)<=r(a,g)+r(g,b) Biz: Jelölje P(a,b) azoknak a pozícióknak a halmazát, amelyekben a és b egymástól eltérnek. Ekkor P(a,b)=P(a,g) U P(g,b)Á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.

  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 aÎK kódszóban legfeljebb t db hiba keletkezik, és így a b szót kapjuk. r(a,b)<=t, viszont a d(K)>t  bÏK. Vagyis a hiba úgy ismerhető fel, hogy a beolvasott szó nem eleme a K kódnak.Indirekt: Ha d(K)<=t, akkor létezhet r(a,b)<=t. Ilyenkor viszont, ha a csatorna legfeljebb t hibát okoz, nem dönthető el, hogy b vételekor tényleg b-t adtak le, vagy a-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 St(a) azon b szavak halmazát, amelyekre r(a,b)<=t. Ezt nevezzük a középpontú, t sugarú gömbnek. • Ha St(a)ÇSt(b)<>Æ  r(a,b)<=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 g egy olyan kódszó, amely a-ból legfeljebb t változtatással keletkezett. G mindenképpen beleesik egy St(a) 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 St(a) és St(b), amelyek nem diszjunktak, legyen a közös pont g. 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={a1,a2,…,an} és b={b1,b2,…,bn} bináris n-esek. • Def: Az a és b vektorok összege alatt a a+b={a1+b1, a2+b2,…,an+bn} vektort értjük. • Def: Az a és b vektorok skaláris szorzata alatt a a1Çb1+a2Çb2+…+anÇbn szorzatösszeget értjük. (az összeg mod 2 értendő) • Def: Ha q bináris konstans (0 vagy 1), akkor az a vektor q-val vett szorzata alatt a qa={qa1,qa2,…,qan} vektort értjük. (1*a=a, 0*a=0). • Def: az a vektor w(a) súlya alatt az a 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: r(a,b)= w(a+b) • Def: Egy K kódot akkor nevezünk lineárisnak, ha a,bÎK esetén a+bÎK is teljesül. • Köv: A 0 kódszó minden lineáris kódnak eleme. • Biz: az a+a 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 a és b olyan kódszavak, amelyekre d(K)=r(a,b)=w(a+b)>=w(K)Másrészt, legyen gÎK olyan kódszó, amelyre w(K)=w(g). Ekkor:w(K)=w(g)=w(g+0)=r(g,0)>=d(K)

  24. Egy kis lineáris algebra • A lineáris kódok nem mások, mint a Bn 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 a1,a2,…,ak vektorok, hogy tetszőleges K-beli a kódszó felírható, mint az ai vektorok lineáris kombinációja, vagyis a=g1a1+ g2a2+… +gkak . ai-k helyett másik bi vektorrendszert választva a k szám nem változik. • Biz: nélkül

  25. Az ilyen tulajdonságú ai-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 gi–k egyértelműek • Az ai–k egymástól függetlenek, vagyis egyik sem írható fel a többi lineáris kombinációjaként. • Ilyenkor |K|=2k. • A K kód sűrűsége=k/n • A K kód egy bázisát alkotó ai vektorokból képzett G=(a1/a2/…/ak) 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 (b1,b2,…,bn-m) egymástól független vektorok, hogy egy aÎBnpontosan akkor aÎK is, ha (a, bi )=0 a fenti vektorokra. • Vagyis: K az n-dimenziós Bn tér egy altere (síkja). Ilyenkor a síknak léteznek normálisvektorai, amelyek elemei a Bn térnek, de nem elemei a K kódnak (mert merőlegesek rá).

  27. Jelöljük K^-sel (K-duálissal) a (b1,b2,…,bn-m) bázis által kifeszített kódot. • K^ dimenziója n-m • K^ független a (b1,b2,…,bn-m) bázis konkrét megválasztásától • Ha bi=(bi1,bi2,…,bin), akkor a belőle felépíthetőH=(b1/b2/…/bn-m)=((bi1,bi2,…,bin)/…/(bn-m1,bn-m2, …,bn-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 aÎK  ha H*aT=((bi1,bi2,…,bin)/…/(bn-m1,bn-m2,…,bn-m n)) *(a1/a2/…/bn)=(0/…/0)

  28. H*aT=a1*(b11/b21/…/bn-m 1)+…+an*(b12/b22/…/bn-m 2) =(0/…/0) • Vagyis, ha az aÎK a<>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=2l-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= 2l-l-1. • A Hamming kód sűrűsége: (2l-l-1)/=2l=1-(l+1)/2l»1-log(n)/n Ez lényegesen jobb, mint a korábbi példa

  30. Példa: Legyen l=3, a blokkméret=23-1=7Az 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(2n-l)/n=(n-l)/n=(2l-1-l)/(2l-1)=(23-3-1)/(23-1)=4/7

  31. Tfh aÎK, vagyis H*aT=0. Változtassuk most meg az a kódszó egy bitjét. Tfh az eredmény b=a+e, ahol e egyetlen 1 bitet tartalmaz a változtatás helyén. Ellenőrizzük, hogy b benne van-e K-ban?H*bT=H*(a+e)T=H*aT+H*eT=H*eTEz utóbbi nem más, mint a H mátrix annyiadik oszlopa, mint ahol a változás történt. • Pl. legyen a=(0,0,0,1,1,1,1), e=(0,0,0,1,0,0,0).H*bT=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

More Related