Download as pdf or txt
Download as pdf or txt
You are on page 1of 135

Információ elmélet

Schuster György

schuster.gyorgy@kvk.uni-obuda.hu

tel: 6665037, 6665161


fax: 6665169

0-0
1. Az információ
1.1. Az információ megközelı́tése
Az információ megközelı́tése tudományáganként különbözik:
Filozófia:
alapvetően az igaz és hamis kijelentések és következtetések
formájában jelenik meg.
Klasszikus logika hasonlóan az előzőekhez a kijelentések és
következtetéseket vizsgálja.
Döntéselmélet az információból származó nyereséggel és vesz-
teséggel foglalkozik.
Tudásmenedzsment az információ alapján történő döntések
relatı́v következményeivel foglalkozik. Pl.: (Infomáció → befek-
tetés → megtérülés.)

0-1
Információ elmélet:
az információt valamilyen egyedi eseményhez
rendeli hozzá az esemény valószı́nüsége alapján.

0-2
Definı́ció: Az információ hétköznapi, vagy általános értelemben
vett előfordulása a hı́r. Szemantikai tartalma van.

A hétköznapi értelemben az információhoz minden esetben


valami jelentést rendelünk.
Például: az út meredek a hegyoldalon.

0-3
Definı́ció: Információelméleti szempontból az információ az, amit
továbbı́tani kell.

Az információ jelentés tartalma ilyen szempontból lényegtelen.


A megjelenési forma a lényeges.

✓ ✏
Adó ✲ Csatorna ✲ Vevő
✒ ✑
1.1. ábra: Az információ továbbı́tás vázlata

0-4
Adó feladata:
• a hı́rek közlemények kialakı́tása,
• a közlemények kódólása.
Vevő feladata:
• a közlemények dekódolása,
• a visszaalakı́tása.
Csatorma feladata:
• az információ (biztonságos) továbbı́tása.

0-5
✓ ✏
Forrás ✲ Kódoló ✲Csatorna✲Dekódoló✲ Nyelő
✒ ✑
1.2. ábra: Az előző ábra részletesebben

Definı́ció: Kódolásnak nevezzük azt a műveletet, amikor a forrás által


szolgáltatott információt a egy kódrendszerré alakı́tják.

A kódolás folyamatában a forrás által szolgáltatott információt az


úgynevezett forrás-ABC ”betűiből” álló sorozattá alakı́tjuk.

0-6
1.2. Diszkrét valószı́nűségi modell
Az információ tárgyalásánál célszerűen a diszkrét valószı́nűségi modellt
használjuk.

Forrás ✲

{xt1 , xt2 , . . . , xti , . . . }


ti diszkrét időpillanatok

X = {x1 , x2 , . . . , xn }
|X| véges (véges szimbólum rendszer)

1.3. ábra: A diszkrét információ forrás vázlata

0-7
.
Ahol:
X véges szimbólum halmaz, vagyis a forrás-ABC.
. . . , xti , . . . a diszkrét időpontokban kiküldött jelek.

Az xti jelek kibocsájtását ei eseményeknek tekintjük.

Az ei , ej ∈ E i < j események egymást követő független események.


Vagyis:
• p(ei ej ) = p(ei )p(ej ),
• p(ei + ej ) = p(ei ) + p(ej ).

0-8
Az ei események teljes eseményrendszert alkotnak. Ha az ei eseményhez
tartozik egy xi kód és az esemény bekövetkezési valószı́nűsége pi . Akkor
a következő sémát ı́rhatjuk le:

e1 → x1 → p1
e2 → x2 → p2 A teljes eseményrendszer miatt a
.. .. .. .. ..
. . . . .
n
ei → xi → pi P
pi = 1.
.. .. .. .. .. i=1
. . . . .
en → xn → pn

0-9
Egy szimbólum által hordozott információ mennyisége függvénye a
szimbólumhoz tartozó esemény előfordulási valószı́nűségének.

Vagyis Ik = f (pk ).

Ik a k-adik esemény bekövetkezésének információ tartalma.

Spekulatı́v úton belátható, hogy egy esemény bekövetkezéséről szóló


hı́r annál értékesebb, minél ritkábban fordul elő a kérdéses esemény.
Másképp megfogalmazva az Ik annál értékesebb minél kisebb pk . Célszerűen:

 
1
Ik = f
pk

0-10
Példa:
Vegyünk három alakzatot, legyenek ezek: kör, négyzet és háromszög.
Ezek az alakzatok legyenek szı́nesek: piros, zöld, kék.
Mindhárom alakzatból van mindhárom szı́n.

Válasszunk az alakzatok közül: Válasszunk szı́nek közül:

kör → pa 1 piros → psz1

négyzet → pa 2 zöld → psz2

háromszög → pa 3 kék → psz3

   
1 1
Tehát: Iak = f és Iszk = f .
pa k pszk

0-11
A szı́n és az alakzat együttes választásának információ tartalma:
   
1 1
Iegyuttes = Iak + Iszi = f +f
pa k pszi
A két választás — belátható —, hogy független, ı́gy a választás együttes
valószı́nűsége:

     
1 1 1 1
pegyuttes = pak pszi =⇒ Iegyuttes = f +f =f
pa k pszi pak pszi

Az f függvénynek a következő feltéteket kell teljesı́tenie:


• legyen az f függvény monoton függvénye a bekövetkezési valószı́nűség
reciprokának,
• az együttesen beközvetkező események információ tartalmának
meg kell egyeznie az események egyedi információjának összegével.

0-12
Célszerű választás egy logaritmus függvény. Ennek oka:

loga (pk pi ) = loga (pk ) + loga (pi )

Ekkor viszont loga (p) negatı́v, mert 0 ≤ p ≤ 1. Ezért:

Ik = −loga (pk )

Következmények:
• pk > 0, mert a pk = 0 a diszkrét valószı́nűségi eloszlásban nem
értelmezhető,
• a biztos valószı́nűségi esemény információ tartalma 0,
• minél kisebb egy esemény valószı́nűsége, annál nagyobb az in-
formáció tartalma.

0-13
Felmerül a kérdés mi legyen a logaritmus függvény alapja. A meg-
szokott logaritmusok és az hozzájuk tartozó ”mértékegységek”:

2 −log2 (pk ) bit,


10 −log10 (pk ) hartley,
e −ln(pk ) nat.

.
Példa:
Legyen az X = {0, 1} és az p0 = p1 = 21 .

I0 = − log2 (0.5) = 1, I1 = − log2 (0.5) = 1

Tehát egy ”bit” pontosan egy bit(nyi) információt tartalmaz.

0-14
1.3. Entrópia, hatásfok, redundancia

Vegyünk egy hı́rközlési folyamatot. A hı́rközlési folyamat egyedi hı́rek


egymásutáni szekvenciális közléséből áll.

Ekkor a folyamatra inkább jellemző az egyes hı́rek információ tartalma


helyett a folyamat hı́reinek átlagos információ tartalma.

Ha adott egy jelforrás X szimbólumkészlettel és |X| = n, akkor X


összes szimbólumának átlagos információtartalma:

n
X
H(X) = − pi loga pi
i=1

A H(X) mennyiséget információelméleti entrópiának nevezzük.

0-15
Nézzük a ?? példában lévő rendszer entrópiáját mondjuk p0 függvényében.

X = {0, 1}, p0 ∈ (0, 1), p1 = 1−p0 , H(X) = −p0 log2 (p0 )−(1−p0 ) log2 (1−p

1.4. ábra: H(x) = f (p0 )

Figyeljük meg, hogy: lim H(X) = 0 és lim H(X) = 0


p0 →0 p0 →1

0-16
A példa alapján könnyű belátni az entrópia függvény tulajdonságait,
ezek:
• Az entrópia függvény a teljes értelmezési tartományában folytonos
függvény.
• Az entrópia függvény minden pk változójában szimmetrikus.
• A entrópia függvény maximuma ott van, ahol az összes pk változó
értéke egyenlő, mert
Pn 1
H(X) = − pi loga pi , ha azonban pi = , i ∈ {1, . . . , n}, akkor
i=1 n
 
1 1
Hmax = −n loga = loga (n).
n n
• Az entropia függvény additı́v, azaz a részeseményekhez tartozó
részinformációk összege legyen egyenlő az összetett esemény tel-
jes információjával.

0-17
Megjegyzés:
A H(X) függvény maximuma ott van, ahol minden Ek esemény valószı́nűsége
egyenlő.

Vagyis ekkor az Ek események bekövetkezéséről semmit nem tudunk


mondani csak azt, hogy valamelyik esemény bekövetkezik (és be fog,
mert teljes esemény rendszerünk van).

Ez alapján az entrópia a bizonytalanság mértéke. Ezt termodinamkából


már tudtuk.

0-18
A H(X) és a Hmax ismeretében definiálhatjuk a hatásfokot.

H(X)
Definı́ció: A hányadost hatásfoknak (e) nevezzük.
Hmax
H(X)
e= , e ∈ (0, 1).
Hmax

Az e jelentése az, hogy az átlagos információ milyen mértékben közelı́ti


meg az optimumot.

0-19
Definı́ció: Redundanciának nevezzük az 1 − e kifejezést.

Hmax − H(X)
R = 1 − e, R=
Hmax

Ha a hatásfok maximális a redundancia minimális. Ez alapján a re-


dundancia úgy értelmezhető, mint az az információ többlet, amit a forrás
nem használ ki.

0-20
1.4. Illesztő kódolás

Vegyük a következő esetet1 : Adott egy hat elemű forrás-ABC, amelnek


jellemzői:

X = {A, B, C, D, E, F }, és

pA = 21 , pB = 14 , pC = 81 , pD = 1
16
, pE = 1
32
, pF = 1
32

Az entrópia értéke: H(X) = 12 log2 (2)+ 41 log2 (4)+ 81 log2 (8)+ 16


1
log2 (16)+
1 1
32
log2 (32) + 32 log2 (32) = 1.9375.

A maximális entrópia Hmax = log2 (6) = 2.585.

1.9375
Ebből a hatásfok e = 2.585
= 0.7495 és a redundancia R = 0.2505.

1A példát Dr. Tóth Mihály 1-Alapfogalmak.pdf prezentációjából vettük.

0-21
Ha azonos hosszúságú kódokra konvertáljuk a forrás-ABC-t, akkor nem
nyerünk semmit. Logikus, hogy a kódhosszal játszunk. A legrövidebb
kódot a legnagyobb valószı́nűségű, a leghosszabb kódot a legkisebb
valószı́nűségű ”betűhöz” rendeljük.
Legyen: A = 0, B = 10, C = 110, D = 1110, E = 11110, F =
111110
Készı́tsük el az új kód jellemzőit leı́ró táblázatot.

betű valószı́nűség kódszó 0-ák száma 1-ek száma 0 átlaga 1 átlaga


1 1
A 2
0 1 0 2
0
1 1 1
B 4
0 1 1 4 4
1 1 2
C 8
0 1 2 8 8
1 1 3
D 8
0 1 3 16 16
1 1 4
E 16
0 1 4 32 32
1 1 5
F 16
0 1 5 32 32

Az csatornakód átlagos szóhosszúsága: W = pA ∗ 1 + pB ∗ 2 + pC ∗ 3 +


pD ∗ 4 + pE ∗ 5 + pF ∗ 6 = 1.9687bit/kódszó (2.585).
H(X)
A csatornakód hatásfoka: e′ = = 0.9841 (0.7495).
W
A csatornakód redundanciája: R′ = 0.0159 (0.2505).

0-22
1.5. Adó — vevő kapcsolat
Vegyünk egy egyszerűsı́tett modellt, amely egy adóból egy vevőből és
egy zajtalan csatornából áll.

Adó ✲ Vevő

E, X, P F, Y, Q

1.5. ábra: Az adó vevő kapcsolat vázlata

0-23
.
Ahol:

E az adó oldal eseménytere,


X az adó oldal szimbólumkészlete,
p az adó oldal valószı́nűségi modellje,
F a vevő eseménytere,
Y a vevő oldal szimbólumkészlete,
Q a vevő valószı́nűségi modellje.

Az ábra alapján látható, hogy itt tulajdonképpen két egydimenziós


modellt kell egyesı́teni, ı́gy jutunk el a rendszer két dimenziós modelljéhez.

0-24
A kétdimenziós eseménytér, jelőljük ρ-val az E és F eseménytér mint
halmaz direkt szorzatából keletkezik, vagyis ρ = E × F .
Vagyis:

f1 f2 f3 ··· fj ··· fm
e1 e1 , f1 e1 , f2 e1 , f3 ··· e1 , fj ··· e1 , fm
e2 e2 , f1 e2 , f2 e2 , f3 ··· e2 , fj ··· e2 , fm
e3 e3 , f1 e3 , f2 e3 , f3 ··· e3 , fj ··· e3 , fm
.. .. .. .. .. .. .. ..
. . . . . . . .
ei ei , f1 ei , f2 ei , f3 ··· ei , fj ··· ei , fm
.. .. .. .. .. .. .. ..
. . . . . . . .
en en , f1 en , f2 en , f3 ··· en , fj ··· en , fm

0-25
A táblázat (vagy ha jobban tetszik mátrix) minden cellájába beı́rhatók
az adott eseményekhez tartozó valószı́nűségek:

 
p(e1 , f1 ) p(e1 , f2 ) p(e1 , f3 ) ··· p(e1 , fj ) ··· p(e1 , fm )

 p(e2 , f1 ) p(e2 , f2 ) p(e2 , f3 ) ··· p(e2 , fj ) ··· p(e2 , fm ) 


 p(e3 , f1 ) p(e3 , f2 ) p(e3 , f3 ) ··· p(e3 , fj ) ··· p(e3 , fm ) 


 .. .. .. .. .. .. .. 

P (E, F ) =  . . . . . . . 
 
 p(ei , f1 ) p(ei , f2 ) p(ei , f3 ) ··· p(ei , fj ) ··· p(ei , fm ) 
 
 .. .. .. .. .. .. .. 
 . . . . . . . 
p(en , f1 ) p(en , f2 ) p(en , f3 ) ··· p(en , fj ) ··· p(en , fm )

Ezt nevezzük az együttes valószı́nűségek mátrixának.

0-26
Mivel mind az E, mind az F eseménytér eseményei teljes eseményteret
alkotnak, ezért a

X m
n X n
X n
X
p(ei , fj ) = 1, illetve: p(ei |fj ) = 1 és p(fj |ei ) = 1.
i=1 j=1 i=1 j=1

Jelölés:
• p(ei ) = p(xi ), mivel ei esemény bekövetkezése azonos az ei eseményhez
tartozó kód megjelenésével,
• p(fj ) = p(yj ),
• p(ei , fj ) = p(xi , yj ),
• p(ei |fj ) = p(xi |yj ),
• p(fj |ei ) = p(yj |xi ).

0-27
A kétdimenziós modellel kapcsolatos entrópiák:
H(X) adó oldali információ bizonytalansága,
H(Y ) vevő oldali információ bizonytalansága,
H(X, Y ) a forrás oldalon elküldött és a vevő oldalon vett (az egész rend-
szer) szimbólumpáronkénti átlagos információ bizonytalansága,
P
H(X, Y ) = − p(x, y) loga p(x, y)
(x,y)∈X×Y

H(Y |X) a jel továbbı́tásakor mekkora bizonytalanság lépett fel (csatornára


utal),
!
P P
H(Y |X) = − p(y) p(y|x) loga p(y|x)
x∈X y∈Y

H(X|Y ) ha ismerjük a kimenetet akkor mennyire ”biztosan” tudjuk meg-


határozni a bemenetet (leı́rás: lásd előző).

0-28
Összefüggések:
Tétel: H(X, Y ) = H(X|Y ) + H(Y ) továbbá H(X, Y ) = H(Y |X) + H(X).

Bizonyı́tás:
Induljunk ki az entrópia definı́ciójából:

P P p
1. H(A) = −pk log(pk ) = − log (pkk ) és
k k

p(a, b)
2. p(a|b) = , p(a, b) = p(a|b) p(b), ebből:
p(b)
  
3. log p(a, b) = log p(a|b) + log p(a) felhasználva az 1. sort:

p(a,b)
 p(a|b)
 p(a)

4. log p(a, b) = log p(a|b) + log p(a)

A tétel bizonyı́tott!

0-29
Tétel: [Shanon] Igazak a következő összefüggések: H(X) ≥ H(X|Y ),
H(Y ) ≥ H(Y |X).

Bizonyı́tás:
Elegendő csak 1-et bizonyı́tani.
Az általános eset bizonyı́tásához használjuk az entrópia valószı́nűségi
definı́cióját.
Használjuk fel, hogy H(X|Y ) = H(X, Y ) − H(Y ). Ebből adódik
P p(x|y) P p(x|y) p(y)
H(X)−H(X|Y ) = p(x, y) loga = p(x, y) loga =
(x,y)∈X×Y p(x) (x,y)∈X×Y p(x) p(y)
P
! p(x, y)
P p(x, y) P (x,y)∈X×Y
= p(x, y) loga ≥ p(x, y) loga P
(x,y)∈X×Y p(x) p(y) (x,y)∈X×Y p(x) p(y)
(x,y)∈X×Y
mivel a logaritmus függvény konkáv

Amennyiben x ∈ X és y ∈ Y független események, akkor p(x, y) =


p(x,y)
p(x) p(y). Ebben az esetben a hányadosuk p(x) p(y)
= 1.

0-30
Tehát H(X) = H(X|Y ) egyenlőség akkor és csak akkor áll fenn, ha X
és Y függetlenek.

Megjegyzés: ha E és F eseményei függetlenek, akkor az események


feltételes valószı́nűsége:
p(e, f )
P (e|f ) = mivel x és y független események, ezért p(e, f ) =
p(f )
p(e) p(f )
p(e) p(f ) ⇒ p(e|f ) = = p(e).
p(f )
A tétel bizonyı́tott!

Tehát e esemény bekövetkezése feltéve, hogy f esemény bekövet-


kezett megegyezik e esemény bekövetkezési valószı́nűségével. Vagyis e
és f függetelenek.

Ha e és f függetlenek tehát p(e|f ) = p(e), akkor az entrópia de-


finı́ciójából következik, hogy H(X|Y ) = H(X).

0-31
1.6. Tranzinformáció
Az eddigiekben az adót és a vevőt vizsgáltuk. Most arra vagyunk kı́váncsiak,
hogy az adó oldalon egy xi kódot elküldve és a vevő oldalon egy yj jelet
véve az xi -hez rendelt I(xi ) információból mennyi jutott át a vevőre.

Ha ezt nem egy egyedi információra alkalmazzuk, hanem az előforduló


információ halmaz valószı́nűségekkel megszorzott összegét vesszük, ak-
kor egy entrópia jellegű mennyiséget kapunk.

Ezt a mennyiséget nevezzük tranzinformációnak. Képelettel:


XX pX,Y (x, y)
T (X, Y ) = pX,Y (x, y) loga
x∈X y∈Y
pX (x) pY (y)

0-32
T (X, Y ) tulajdonságai:
• T (X, Y ) folytonos függvénye p(x|y),
• szimmetria: I(xi , yj ) = I(yj , xi ), ebből: T (X, Y ) = T (Y, X),
• T (X, Y ) = H(X) + H(Y ) − H(X, Y ).
Az összefüggések ”zajmentes” csatorna esetén:

H(X) = H(Y ) mivel nincs veszteség,


H(X, Y ) = H(X) = H(Y ) mert a két információ azonos,
H(X|Y ) = 0 mivel nincs ”feltételes bizonytalanság,
H(Y |X) = 0,
T (X, Y ) = H(X, Y ) = H(X) = H(Y ).

0-33
Az összefüggések ”független” adó és vevő esetén:

H(X, Y ) = H(X) + H(Y ) mivel statisztikailag függetlenek,


H(X|Y ) = H(X) -”-
H(Y |X) = H(Y ) -”-
T (X, Y ) = 0 mivel T (X, Y ) = H(X) + H(Y ) − H(X, Y ).

A vevő csak azt tudja, hogy vennie kell valamit de, hogy mit vesz, az
független az adótól.

Ennek természetesen csak elméleti jelentősége van.

0-34
1.7. Csatornakapacitás
Az előzőekből nyilvánvaló, hogy egy adatátviteli csatorna nem képes
átvinni tetszőleges mennyiségű információt, hanem csak annyit, amennyit
a csatorna átviteli képessége megenged.
A kétdimenziós modell felhasználásával egy csatornára megadható
egy mérőszám, amely megmondja a csatorna ”átbocsájtó” képességét.
A gondolatmenet a következő:
• Az adó elküld valamilyen információt, amelynek statisztikai jellemzőit
ismerjük.
• A vevő az előző esemény hatására vesz valamilyen információt. Ez
sajnos nem feltétlenül azonos az adott információval.
• Összevetjük a két információ tulajdonságait, az előzőekben megis-
mert módon.

0-35
Összevetve a csatorna ”elején” és a ”végén” lévő információ statisz-
tikai tulajdonságait, a következő megállapı́tásokat tehetjük:
1. ha a csatorna zajtalan, vagyis az információ nem torzul, akkor a
csatornakapacitás maximális,
2. ha a csatorna adó és vételi oldali információja független, akkor a
csatornakapacitás célszerűen 0.
A fenti megfigyelések csak akkor jellemzőek a csatornára, ha az forrásinformáció
redundancia mentes. Ez azt jelenti, hogy a forrásinformációt H ′ (X) op-
timális csatorna információvá H(X) alakı́tjuk.

T (X, Y )
H ′ (X)

H(X)

H(Y )
Adó ✲Csatorna ✲ Vevő
kódoló Csatorna

1.6. ábra: Modell a csatornakapacitás vizsgálatához

0-36
Definı́ció: Csatornakapacitás az az átlagos maximális információ egység,
amelyet a csatorna egy esemény bekövetkezésekor továbbı́tani
tud.

C = max (H(X) − H(X|Y )) = max (T (X, Y )) ez n bitre: C = loga (n).

T (X, Y )
Definı́ció: A relatı́v csatornakapacitás: c = .
H(X)

Megjegyzés: a redundancia nem okvetlenül káros. Ha egy adott in-


formációhoz célszerű redundanciát adunk, akkor a csatorna átviteli za-
varaiból keletkező hibák hatását csökkenthetjük.

0-37
2. Kódelmélet

Definı́ció: Egy adott ci kódszó Hamming súlya a kódszóban lévő egyesek


száma, jelölése w(ci ).

Definı́ció: Egy kód Hamming távolsága az a legkisebb Hamming súly


különbség, amely kódhoz tartózó két tetszőleges kódszó között van.

0-38
2.1. Forrás kódok

Az előző fejezetben láttuk, hogy az információ forrás oldalán bekövet-


kezett esemény hatására annak kimenetén megjelenik egy kód. Az a
kérdés, hogy ez a kód milyen jellegű lehet.
Természetesen a kód függ az információ jellegétől és attól, hogy mi-
lyen alkalmazásban használjuk.

A kódok lehetnek:
• numerikus kódok,
• pozı́ció kódok,
• karakter kódok.

0-39
2.1.1. Numerikus kódok
BCD kódolás:
BCD (Binary Coded Decimal) binárisan kódolt decimális kód.
A következő táblázat néhányat BCD kódot összefoglal:

Szám. 8421(BCD) Stiblitz Aiken 84-2-1 IBM8421 Johnson Ötből ket


0 0000 0011 0000 0000 1010 00000 00011
1 0001 0100 0001 0111 0001 00001 00101
2 0010 0101 0010 0110 0010 00011 00110
3 0011 0110 0011 0101 0011 00111 01001
4 0100 0111 0100 0100 0100 01111 01010
5 0101 1000 1011 1011 0101 11111 01100
6 0110 1001 1100 1010 0110 11110 10001
7 0111 1010 1101 1001 0111 11100 10010
8 1000 1011 1110 1000 1000 11000 10100
9 1001 1100 1111 1111 1001 10000 11000

0-40
A klasszikus 8421 súlyozású BCD (ezután NBCD) egyszerű a kı́vánt de-
cimális értéket úgy kapjuk meg, hogy a szám értékét binárisan adjuk
meg.

3
P
n= 2i , ahol n ∈ {0, . . . , 9} és i ∈ {0, 1, 2, 3}.
i=0

0-41
A Stiblitz kód a NBCD-ből úgy kapható meg, hogy hozzáadunk 3-at
(binárisan), tehát:

0d → 0011s
1d → 0100s
2d → 0101s
3d → 0110s
.. .. ..
. . .
9d → 1100s

0-42
Az Aiken kód 0-4-ig megegyezik a NBCD-vel, viszont ezen érték felett
a BCD-hez egy hatos bináris értéket adunk. Tehát az 5-ös érték kódja
1011, a 6 kódja 1100 és ı́gy tovább.

0d → 0000Aiken
1d → 0001Aiken
2d → 0010Aiken
3d → 0011Aiken
4d → 0100Aiken
5d → 1011Aiken
6d → 1100Aiken
7d → 1101Aiken
8d → 1110Aiken
9d → 1111Aiken

Az Aiken kód úgynevezett önkomplementáló kód. Ha egy adott számjegy


bitjeit negáljuk, akkor a kérdéses szám 9-es komplemensét kapjuk. Tehát
4d = 0100Aiken → 1011Aiken = 5d és 4 + 5 = 9.

0-43
A 8 4 (-2) (-1) kód szintén önkomplementáló.

0d → 000084−2−1
1d → 011184−2−1 mert 4-2-1=1
2d → 011084−2−1 mert 4-2=2
3d → 010184−2−1 mert 4-1=3
4d → 010084−2−1
5d → 101184−2−1 mert 8-2-1=5
6d → 101084−2−1
7d → 100184−2−1
8d → 100084−2−1
9d → 111184−2−1 mert 8+4-2-1=9

0-44
A Johnson kód szintén BCD kód, de itt öt bitet használunk a tı́z számjegy
ábrázolására.

0d → 00000Johnson
1d → 00001Johnson
2d → 00011Johnson
3d → 00111Johnson
4d → 01111Johnson
5d → 11111Johnson
6d → 11110Johnson
7d → 11100Johnson
8d → 11000Johnson
9d → 10000Johnson

A Johnson kód inkább a pozı́ció kódok közé tartozik, mert az egymást


követő számjegyek csak egy bitben különböznek egymástól.

0-45
Az ötből-kettő kódolás kombinatórikai alapon készı́tett kód. Az ismétlés
nélküli kombinációt alkalmazva 5 elemből
 választunk ki kettő elemet úgy,
hogy a sorrend nem számı́t. Ezt 52 módon tehetjük meg és ez pontosan
tı́z.
0d → 00011(5)
2
1d → 00101(5)
2
2d → 00110(5)
2
3d → 01001(5)
2
4d → 01010(5)
2
5d → 01100(5)
2
6d → 10001(5)
2
7d → 10010(5)
2
8d → 10100(5)
2
9d → 11000(5)
2

A bitek hozzárendelése itt önkényes volt, tehát az irodalomban találhatunk


más hozzárendelést is. 
n n!
k
= (n−k)!k!

0-46
2.1.2. Pozı́ció kódok

Az előzőekben már emlı́tettük, hogy léteznek pozı́ció kódok. Ezeknél a


kódoknál nagyon lényeges az, hogy az egymást követő kódszavak csak
egy bitben különbözzenek egymástól.

A pozı́ció kódok neve onnan származik, hogy a pozı́cionáló érzékelőkben


ilyen jellegű kódokat alkalmaznak. Mivel az egymást követő kódszavak
egyetlen bitben különböznek az olvasó jelátalakı́tó kis geometriai hibája
maximum egy bitnyi hibát okoz.

0-47
Szám Bináris kód dh Gray kód dh
0 0000 x 0000 x
1 0001 1 0001 1
2 0010 2 0011 1
3 0011 1 0010 1
4 0100 3 0110 1
5 0101 1 0111 1
6 0110 2 0101 1
7 0111 1 0100 1
8 1000 4 1100 1
9 1001 1 1101 1
10 1010 2 1111 1
11 1011 1 1110 1
12 1100 3 1010 1
13 1101 1 1011 1
14 1110 2 1001 1
15 1111 1 1000 1
A táblázatból látható, hogy a Gray kód az adott tartományban, az
egymást követő kódokat tekintve állandó egy értékű Hamming távolsággal
rendelkezik. A bináris kódra ez nem igaz.

0-48
2.1.3. Karakter kódok
Kódokkal nem csak numerikus információt kell ábrázolnunk. Néhány szem-
pont, amit az ilyen kódok tervezésénél figyelembe kell venni:
• a szöveg elemek legyenek lexikografikusan rendezhetők,
• a számjegyek könnyen átkódolhatók legyenek karakter kódról nu-
merikus kódra.
Ismert karakter kódok:
• Lyukkártya kód, már elavult kódrendszer.
• EBCDIC, az IBM fejlesztette ki, gyakorlatilag elavult.
• ASCII, a legyakrabban használt kódrendszer.
• UNICODE 16 bites kódrendszer ami arra törekszik, hogy a világ összes
karakterét le tudja ı́rni. Lehet saját karaktereket is definiálni.
• UTF-8 az alap ASCII karaktereket megtartja, a speciális karaktereket
két vagy három bájton ábrázolja.
Alapgondolata az, hogy egy karakter minél speciálisabb, annál
hosszabb.

0-49
Az ASCII jellemzői:
• 7 bites kód,
• a számok: 0 → 30h , 1 → 31h , . . . , 9 → 39h ,
• a nagybetűk megelőzik a kisbetűket,
• a nagybetűk és a kisbetűk távolsága szigorúan 20h , tehát nagyon
könnyű a konvertálás.
• a karaktekódok folytonosak, tehát A+1=B,
• hibája, hogy csak az angol ABC-re igazak a fenti állı́tások.
ANSI (kibővı́tett ASCII), 128 alatti kódok megegyeznek az ASCII-vel, 128
és e feletti kódok ékezetes karakterek és pszeudografikus jelek.

Probléma az, hogy az ékezetes karakterek nem rendezhetők egy-


szerűen kód alapján és több kódtáblázat létezik.

0-50
2.2. Illesztő kódolás

A forrás kódokban láthattuk, hogy szinte egyáltalán nem törődtünk a re-


dundancia fogalmával. A csatorna fölösleges terhelésének csökkentésére
célszerű a forráskódot egy megfelelő csatornakóddá vagy valamilyen
optimálisabb köztes kóddá alakı́tani.

A forráskód statisztikai jellemzőinek felhasználásával egy olyan kódot


próbálunk felállı́tani, amely a redundanciát a lehető legjobban csökkenti.
Ez a gyakorlatban valamiféle tömörı́tést jelent.

0-51
2.2.1. Shannon-Fano kódolás

Állı́tsuk előfordulásuk alapján valószı́nűségi sorrendbe2 a forrásszimbólumokat


és rendeljünk hozzájuk új kódokat.

A hozzárendelés legyen olyan, hogy a legsűrűbben előforduló szimbólumhoz


a legrövidebb kódot, majd a következőhöz hosszabb és a legritkábban
előfordulóhoz a leghosszabb kódot rendeli.

Az új kód legyen irreducibilis.

2 Ez a gyakorlatban relatı́v gyakorisági sorrend.

0-52
Definı́ció: Egy kód irreducibilis, ha az egyértelműen megfejthető akkor
is, ha a kódszavak nincsennek semmilyen megkülönböztető jellel
elválasztva.
Az kód irreducibilitásának szükséges feltétele, hogy ne legyen a
kódszókészletben olyan kódszó, amely egy másik kódszó prefixuma.

A Shannon-Fano (SF) kódolás nem eredményez két egyforma hosszú


kódszót.

0-53
Példa:
Legyen egy négy kódszóból álló kódkészlet: X = {A, B, C, D},
a relatı́v gyakoriságuk: p(A) = 21 , p(B) = 41 , p(C) = 18 és p(D) = 18 .

X p(x) SF kód kód hossz


1
A 2
0 1
1
B 4
10 2
1
C 8
110 3
1
D 8
1110 4

Ebből: H(X) = 12 ∗log2 (2)+ 41 ∗log2 (4)+ 81 ∗log2 (8)+ 81 ∗log2 (16) = 1.875 betu
bit

Ez a kód nem optimális, ha a D betűhöz nem 4-bites kódot rendelünk,


bit
hanem csak 3-bitest, akkor H(X) = 1.75 betu lenne az entrópia.

Azt azonban könnyű belátni, hogy ha az adó folyamatosan ad és a


vevő egy véletlen időpillantban rákapcsolódik a vonalra a kapcsolódási
időponttól csak egy karaktert veszı́thet el, vagy értelmezhet félre.

0-54
A forrás négy különböző karaktert küld el, ez optimális esetben 2 biten
ábrázolható. Számı́tsuk ki a forrásentrópiát.

H ′ (X) = 1
2
∗ log2 (2) + 1
4
∗ log2 (4) + 1
8
∗ log2 (8) + 1
8
bit
∗ log2 (8) = 1.75 betu

Ebben az esetben a forrás hatásfoka e′ = 1.75


2
= 0.875.

1.75
Ha ebben az S-F kód hatásfoka e = 1.875
= 0.933. Látható, hogy a
hatásfok javult.

Javı́tsunk még a kódon! Ha egy kicsit eltérünk az S-F kód szabályaitól,


és a D karakterhez nem az 1110 kódot, hanem az 111 kódot rendeljük,
akkor az ı́gy keletkezett kód entrópiája H(X) = 1.75 lesz, ami 100%-os
hatásfokot jelent.

0-55
Az ábrán látható a két kód gráfja.

2.1. ábra: S+F kód (szabályos) és S+F kód (optimális)

0-56
2.2.2. Huffman kód

Az S-F kód nem minden esetben optimális, ezért Huffman javasolt egy
olyan algoritmust, amely a lehető legrövidebb átlagos szóhosszúságot
adja.
Az eljárás egy példán mutatjuk be.

Példa:
Legyen egy hat kódszóból álló kódkészlet: X = {A, B, C, D, E, F },
a relatı́v gyakoriságuk:

P (A) = 0.30, P (B) = 0.20, P (C) = 0.20, P (D) = 0.15, P (E) = 0.10,
P (F ) = 0.05.

0-57
Ezeket rendezzük a valószı́nűsegek szerint csökkenő sorrendbe!

1. 2. 3. 4.
A 0.30 A 0.30 A 0.30 BC 0.40
B 0.20 B 0.20 DEF 0.30 A 0.30
C 0.20 C 0.20 B 0.20 DEF 0.30
D 0.15 D 0.15 C 0.20
E 0.10 EF 0.15
F 0.05

5.
ADEF 0.60
BC 0.40

Az 1. számú táblázat utolosó két sorát adjuk össze és az összeget ı́rjuk
be a táblázatba az utolsó két sor helyett. Majd rendezzük a táblázatot.
És ezt ismételjük, mı́g csak két sora nem lesz az eredő táblázatnak.

0-58
A kapott bináris fa:

2.2. ábra: Huffman gráf

A jobb oldali élekre ı́rjunk egyeseket, a bal odali élekre ı́rjunk nullákat!
A kapott kód a gyökér és az adott levél közötti út.

0-59
Az ı́gy kapott kód a következő:
Az átlagos szóhosszúszág a kapott kódra:
bit
H(X) = 2.45 betu
A 11 Az eredeti kód entrópiája:
B 00 H ′ (X) = 2.4087 betu
bit
C 01 Az maximális entrópia az adott feladatra:
D 100 bit
Hmax = 2.58 betu
E 1010
F 1011
Az eredeti kód hatásfoka: e′ = 0.933.
A Huffman kód hatásfoka: e = 0.949.
Láthatóan a hatásfok javult és ezzel együtt a redun-
dancia csökkent.

Kérdés, hogy a kód optimális-e és irreducibilis-e. Ha a H(X) = Hmax


megegyezne, akkor a kérdés meg lenne válaszolva, de sajnos ebben az
esetben ez nem áll fenn.

Az irreducibilitás könnyen belátható, ha kódot megnézzük egytelen


karakter Huffman kódja sem prefixuma másik kódnak.

0-60
A Huffman kódolással csaknem 1 bitet veszthetünk karakterenként a
tömörı́tés elméleti korlátjához képest, ezért célszerű blokkonként kódolni.

Ez viszont azt jelenti, hogy egy Huffman kódszót csak a teljes blokk
beolvasása után lehetséges elküldeni, ami nagy blokkhossz esetén már
jelentős késleletetést jelenthet.

A kódoló-dekódoló táblák mérete, akód fejlécének hossza a blokk-


hossz növelésével exponenciálisan nő, ami gyakorlati szempontból jelent
korlátot.

0-61
2.2.3. Aritmetikai kódolás

Az aritmetikai kódolással a Huffman kódolás korlátait meghaladó tömörı́tést


lehetett elérni, valós idejű működési mód mellett.

Az aritmetikai kódolást főként blokkokra alkalmazzák, valós időben


történik a kódszó előállı́tása - és visszafejtése is - nincsen tehát jelentős
késleltetés.

A kódolási eljárás alaplve, hogy a [0, 1) intervallumot úgy osztjuk fel,


hogy a forrásábécé minden eleméhez egy részintervallumot rendelünk
úgy, hogy
• a részintervallumok a teljes intervallumot lefedjék
• a részintervallumok diszkjunktak legyenek
• méretük arányos legyen a hozzá rendelt forráskarakter előfordulási
valószı́nűségével.

0-62
Az alapelv az, hogy a bájtsorozatot egyetlen számmal, egy valós
számmal ábrázolunk.

1. a [0, 1) intervallumot fel kell osztani az adatelemek megoszlása sze-


rint,
2. a kódolandó szekvencia szerint az egyes résztartományokat tovább
kell osztani,statisztikai előfordulás szerint,

Az adatelemek sorrendje tulajdonképpen mindegy. Az a lényeg, hogy


a résztartományok felosztása is mindig az eredeti sorrendben történjen.

Így egy adott bájtszekvencia egyetlen valós számmal ábrázolható.

0-63
2.3. ábra: Aritmetikai kódolás

0-64
2.2.4. Futamhossz kódolás

Ez az egyik legegyszerűbb tönörı́tési eljárás. Az ismétlődő szekvenciákat


(praktikusan ez bájt) úgy ı́rja le, hogy megadja a kérdéses szekvencia
számosságát és megadja magát a szekvenciát.

A probléma, hogy az egyedül álló szekvenciák ne foglajanak túl nagy


helyet.

Ezt a problémát speciális un. ESC (escape) szekvenciák alkalmazásával


lehet megoldani.

Példa: (ESC nélkül)


Tömörı́tendő adat: 22233333344444555
Tömörı́tett adat:32635435

0-65
2.2.5. LZW kódolás

A LZW kódolás (Lempel-Ziv Welch) jellemzője, hogy a többször ismételt


adatoknak nem szükséges azonosnak lennie, az algoritmus képes az eltérő
bájtokból álló szekvenciák tömörı́tésére is.

A tömörı́tésnél használt kódtáblázat külön tárolása nem szükséges,


mivel a tömörı́tett adatfolyam azt tartalmazza.

Ez úgy lehetséges, hogy betömörı́téskor a szekvenciák első előfordulásakor


nem a neki megfelelő kód, hanem maga a szekvencia és egy jelzés kerül
a kimenetre. A kicsomagoló a szekvenciát és a jelzést olvasva automati-
kusan felépı́ti a saját kódtáblázatát.

Az algoritmus teljesen szekvenciális adatfolyamra is használható, ami


azt jelenti, hogy az algoritmus a működése folyamán csak a bemenetén
érkező adatokat és a kódtábla információkat használja fel, ı́gy a bementi
adatra a későbbiekben nem lesz már szüksége.

Ilyen tömörı́tés például a GIF és a TIFF.

0-66
2.3. Hibajavı́tó karakter kódok
Az eddigiekben arra törekedtünk, hogy a kód redundanciáját csökkentsük,
hogy a csatorna kihasználtsága javuljon. Ez abban az esetben nagyon
jó, ha a csatorna ”zajtalan”, tehát az elküldött kódok nem torzulnak az
átvitel során. Ez a valóságban nagyon ritkán teljesül.

Zaj
c v
Adó ✐
✲ ❄ ✲ Vevő

2.4. ábra: Zajos csatorna

0-67
A hiba jellegét tekintve lehet:

bithiba ebben az esetben a ”bitfolyamban” egy bit értéke megváltozik,


hibacsomó ebben az esetben az átvitel során az átvitel egy része, tehát
nem egy bit, sérül.

A továbbiakban azt vizsgáljuk meg, hogyan tudunk a kódhoz olyan


célszerű redundanciát rendelni, amelynek segı́tségével a keletkezett hibát
detektálni esetleg javı́tani lehet.

0-68
2.3.1. Egyszerű paritáselemes kód
Az egyik legegyszerűbb hibaellenőrzés karakteres átvitelre. Minden egyes
átviendő karakterhez hozzáteszünk egy úgynevezett paritásbitet. Ez a
paritásbit lehet páros és páratlan.
Páros paritás esetén a karakterben a paritásbittel együtt páros számú
bit van.
páratlan páros
z }| { z }| {
01100100
| {z 1} vagy 01100101
| {z 0}
páros páros

Páratlan paritás esetén a karakterben a paritásbittel együtt páratlan


számú bit van.
páratlan páros
z }| { z }| {
01100100
| {z 0} vagy 01100101
| {z 1}
páratlan páratlan

A paritásbit egy hiba jelzésére alkalmas. A magyarázat triviális, bár


matematikai magyarázatát később láthajuk.
Az egyszerű paritáselemes kód esetén a kód Hamming távolsága 2.

0-69
2.3.2. Ismétléses kód

Ez az eljárás nagyon egyszerű. Ha egy karaktert át szeretnénk vinni a csa-


tornán, ezt nem egyszer, hanem kétszer tesszük meg. Ha a két egymást
követő karakter nem azonos, akkor átviteli hiba történt.

Példa:

Kódolatlan szöveg: Hello

Kódolt szöveg: HHeelllloo

0-70
2.3.3. Konvoluciós kód
3

A konvoluciós kód felhasználási területei például:


• digitális video adatátvitel,
• mobil kommunikáció,
• műholdas komunikáció (GPS)
• ...
A konvoluciós kódot egy számhármassal jellemezhetjük: (n, k, m), ahol:
n a kimeneti bitek száma,
k a bemeneti bitek száma,
m a memória rekeszek száma.
Néhány esetben ez a számhármas: (n, k, L), ahol L = k (m − 1). Az L
kényszer korlátnak nevezik.
Az L korlát azt mutatja, hogy az enkóder memóriában hány bit vesz
részt a kieneti bitek előállı́tásában.
Az L paraméter mellett még gyakran használják a k/n jelőlést.
3 Charan Lengton: Tutorial 12 Coding and Decoding Convolutional Codes

0-71
2.5. ábra: (3, 1, 3) kódolás

A kimeneti bitek számı́tása a követekező:


v1 = (u1 + u0 + u−1 ) mod 2,
v2 = (u0 + u−1 ) mod 2,
v3 = (u1 + u−1 ) mod 2.
A vi kódokban szereplő egyenleteket generátor polinomnak nevezzük.

0-72
Fontos szempont a helyes generátor polinom választás. Nem minden
generátor polinom rendelkezik jó hibavédelmi tulajdonsággal.
A következő táblázat receptet ad 1/2 tı́pusú kódok generátor poli-
nomjaihoz4 .

L G2 G2
3 110 111
4 1101 1110
5 11010 11101
6 110101 111011
7 110101 110101
8 110111 1110011
9 110111 111001101
10 110111001 1110011001

4 W. W. Peterson and E. J. Weldon, Jr., Error Correcting Codes, 2nd ed. Camb-
ridge, MA: The MIT Press, 1972.

0-73
A kód állapotai:
Az ábrán egy (2, 1, 4) kódoló látható. A korlát L = 3, ebből következik,
hogy a kódoló lehetséges állapotai N = 23 = 8, nevezetesen: 000, 001,
010, 011, 100, 101, 110, 111.

2.6. ábra: (2, 1, 4) kódolás

A kimeneti bitek állapota a aktuális bemenettől és az előző bemeneti


állapotoktól függ.

0-74
Definı́ció: Egy konvolúciós kódolás szisztematikus, ha kimeneti bit szek-
venciában könnyen és egyértelműen meghatározható a beme-
neti bit szekvencia.
m
P
vij = ul−i gij 5
i=0
A szisztematikus kódolás előnye:
• a kód egyből látható,
• a dekódoló hardver egy-
szerű,
• a keletkezett hiba nem ka-
2.7. ábra: Szisztematikus (4, 3, 3) tasztrofális terjedésű,
kódolás
• semmivel nem nyújt kisebb
védelmet, mint a nem szisz-
tematikus kódolás.

5m a generátor polinóm hossza, i a bit száma, j a kimenti bit száma l a beme-


neti szekvencia hossza.

0-75
u=1, t=0, mem=000, v=11 u=0, t=1, mem=100, v=11

u=1, t=2, mem=010, v=01 u=1, t=3, mem=101, v=11

u=0, t=4, mem=110, v=01 u=0, t=5, mem=011, v=01

u=0, t=5, mem=001, v=11 u=0, t=7, mem=000, v=00

A bemeneti szekvencia: 10110000, a kimeneti kód:11 11 01 11 01 01 11 00.

0-76
Ugyanez táblázatosan:

t u v mem
0 1 11 000
1 0 11 100
2 1 01 010
3 1 11 101
4 0 01 110
5 0 01 011
6 0 11 001
7 0 00 000

2.8. ábra: Állapotgépként

0-77
2.9. ábra: Fa diagramm

0-78
2.10. ábra: Trellis diagramm

0-79
A konvolúciós kód dekódolása:

A dekódolásra két alapvető kategória létezik, ezek:

• szekvenciális dekódolás,

• maximum likeli-hood dekódolás.

Mindkét eljárás ugyanazt az alapötletet képviseli, de különböző


megközelı́tésben.

0-80
A dekódolás alapötlete

Tegyük fel, hogy adott egy (1/2) arányú kódolás és három bit
került a kódoló bementére.

A kimeneti bitek száma 6 (nem vesszük figyelembe a memória


kiürı́tésére szolgáló 0 értékű biteket).

Feltételezzük, hogy a kódolás jó, ı́gy egy adott bemeneti bit


szekvenciára egyértelműen meghatározott kimeneti bit szekven-
cia a válasz. Tehát a hozzárendelés kölcsönösen egyértelmű.

Azonban hiba esetén a kimeneten a hat bit tetszőleges kom-


binációját megkaphatjuk.

Tegyük fel hiba történt és nem jó eredményt kaptunk (111100).
A 8 lehetséges bemenetre vizsgáljuk a kérdést.

0-81
Bemenet Kimenet Vett Egyezés
000 000000 111100 2
001 000011 111100 0
010 001111 111100 2
011 001100 111100 4
100 111110 111100 5
101 111101 111100 5
110 110001 111100 3
111 110010 111100 3

Az 111100 bitsorozat nem fele meg egyetlen bementi ”állapotnak”


sem. Két lehetőség van:
1. összehasonlı́tjuk a kapott bitsorozatot a lehetsége kimeneti
bitsorozatokkal és azt választjuk, amely a legkisebb Ham-
ming távolságra van a kapott értéktől,
2. korrelációs vizsgálatot végzünk, és azt választjuk, amely a
legjobban korrelál.
Ha a bemeneti bitek száma növekszik, akkor a lehetséges ki-
meneti kódszavak száma is jelentősen növekszik. Az összehasonlı́táson
alapuló (brute force) eljárás nem hatékony.
Ha a bemeneti bitek száma s a lehetséges kódszavak száma
2s . Egy hatékonyabb eljárást kell találni.

0-82
Szekvenciális dekódolás lépései:

1. A dekoder megnézi az első két bitet (ez lehet 00 és 11), ekkor
látja, hogy mi az első bit,

2. veszi a következő két bitet és vizsgálja, hogy lehetséges-e az


értékük, illetve merre megy tovább a dekodolás,

3. ez a szekvencia megy addig, amı́g - vagy végetér a bitsoro-


zat, vagy hibás értékbe futunk.

2.11. ábra: Szekvenciális dekódolás

0-83
Maximum-likelihood és Viterbi dekódolás:

A Viterbi dekódolás a Maximum-likelihood dekódolási eljárások


közül a leginkább ismert. A következő feltételezésekből indul ki:

1. egy bithiba valószı́nűsége kicsi,


2. két bithiba valószı́nűsége sokkal kisebb, mint egy bithibáé.

A dekódoló a teljes vett szekvenciát (átvonalat) vizsgálja. Min-


den egyes útvonalra kiszámı́t egy értéket (nevezzük metrikának,
ez egyfajta súlytényező).

Minden útvonalat két útvonal követ egy adott csomóponton.


Azt az utat tartjuk meg, amelynek a magasabb az értéke. Az ala-
csonyabb metrikájút eldobjuk (a megmaradó útvonalat túlélőnek
hı́vjuk).

0-84
N bites bitsorozatra az összes lehetséges vett bitsorozat száma
2N . Ezek közül csak 2kL darab érvényes.

A Viterbi algoritmus csak ezt a 2kL utat viszgálja az összes le-


hetséges helyett.

A leggyakrabban használt metrika a Hamming távolság két


kódszó között. Az elemi utak metrikái természetesen összeadódnak.

0-85
Példa:
Legyen a vett bitsorozat: 01 11 01 11 01 01 11
A dekóder mindig a ”000” állapotról indul. A lépések:
1. A vett bitek értéke ”01”, a dekóder értéke ”000”. Két útvonal
lehetséges, de egyik sem fele meg a bejövő biteknek. A
dekóder két döntést hozhat:

2.12. ábra: 1. lépés

0-86
2. a második lépésben a bemeneti bit ”11”, lehetséges négy
állapot:

2.13. ábra: 2. lépés

0-87
3. a harmadik lépés:

2.14. ábra: 3. lépés

0-88
4. A harmadik lépés után a Trellis diagram teljesen fel van töltve.
Minden csomópont legalább egy bemeneti utvonallal ren-
delkezik. Így a negyedik lépésben már biztosan lesznek olyan
útvonalak, amelyek azonos csomópontba futnak be.

2.15. ábra: 4. lépés több úttal

0-89
A legnagyobb metrikájú utat megtartjuk, a többit töröljük. Az
eredmény:

2.16. ábra: 4. lépés a túlélőkkel

0-90
5. 6. 7. a többi lépés

0-91
2.4. Test

Definı́ció: Testnek nevezzük azt a legalább két elemet tartalmazó


halmazt (Q), amelyben két művelet van értelmezve:

I. a Q az összeadásra nézve kommutatı́v csoport

1. a, b ∈ Q és a + b ∈ Q (Q-ra zárt),


2. a, b, c ∈ Q és (a + b) + c = a + (b + c) (asszociativitás,)
3. ∃0 ∈ Q, hogy 0 + a = a + 0 = a (0 a null elem),
4. ∀a ∈ Q-hoz ∃b ∈ Q úgy, hogy a + b = 0 (b a additı́v inverze,
szokásos jelölése −a),
5. ∀a, b ∈ Q-ra a + b = b + a (kommutativitás).
6. a Q \ {0} a szorzásra kommutatı́v csoport

0-92
II. 1. a, b ∈ Q \ {0} esetén a · b ∈ Q \ {0}, (zárt Q \ {0}-ra)
2. a, b, c ∈ Q \ {0} esetén (a · b) · c = a · (b · c) (asszociativitás),
3. ∃1 ∈ Q \ {0}, amelyre 1 · a = a · 1 = a (az 1-et egységnek
nevezzük),
4. ∀a ∈ Q \ {0}-ra ∃b ∈ Q \ {0}, hogy a · b = b · a = 1 (b a
multiplikatı́v inverze, szokásos jelölése a−1 ),
5. ∀a, b ∈ Q \ {0}-ra a · b = b · a, (kommutativitás).

Definı́ció: Egy q elemszámú testet Q testnek nevezzük és GF (q)-


val jelöljük.

0-93
Számunkra a GF (2) = {0, 1} érdekes, ezért nézzük át az aritme-
tikai műeleteket!

Összeadás
a + b
0 0 0
a szabály:(a + b) mod 2
0 1 1
1 0 1
1 1 0

Szorzás
a · b
0 0 0
a szabály: (a · b) mod 2
0 1 0
1 0 0
1 1 1
Megjegyzés: figyeljük meg, hogy az összeadás nem más, mint
a Bool algebrából ismert kizáróvagy, a szorzás pedig egy és kap-
csolat.

0-94
Legyen c vektor az adó által adott és v a vevő álatal vett bit-
sorozat.
d : c, v → {0, 1, 2, · · · , n} ahol c ∈ {0, 1}n bemeneti és v ∈ {0, 1}n
kimeneti vektorok. A d(c, v) függvény a két vektor Hamming távolságát
adja meg.
Definı́ció: Egy C kódot lineárisnak nevezünk, ha ∀c, v ∈ C-re igaz
az, hogy c + v ∈ C.

Definı́ció: A g1 , g2 , . . . , gk ∈ C vektorok lineárisan függetlenek, ha


Pk
αi gi = 0 csak akkor lehetséges, ha minden αi = 0 =
i=1
1, 2, . . . , k-ra.

Definı́ció: A g1 , g2 , . . . , gk vektorok a lineáris tér egy bázisát képezik,


ha lineárisan függetlenek és minden v ∈ C vektor előállı́tható
Pk
v= u i gi .
i=1

0-95
Vegyük észre, ha a bázist alkotó gi vektorok lineárisan függet-
lenek (azok), akkor ennek az a következménye, hogy a v vektor
előállı́tása egyértelmű. Írjuk át az egyenleteket mátrixos fomába
k
X
ui gi ⇒ c = uG, ahol u = (u1 , u2 , . . . , uk ) és
i=1
 
g1

 g2 

G= ..  gi -kből álló mátrix.
 . 
gk
Ezt a Gn×k mátrixot nevezzük a C kód generátor mátrixának.

0-96
Legyen a G mátrix olyan, hogy a ha ezt egy u vektorral meg-
szorozzuk, akkor az c vektor első k eleme megegyezzen az u vek-
torral.
c
z }| {
c = uG ⇒ (u1 , u2 , . . . , uk , ck+1 , . . . , cn )
| {z } | {z }
üzenet rész paritás rész

Ez úgy valósı́tható meg, hogy a G mátrix első fele egy Ek×k


egységmátrix. A második fele egy Pk×(n−k) mátrix.
Tehát Gk×n = (Ek×k , Pk×(n−k) ).
Keressünk egy olyan n − k sorú és n oszlopú H mátrixot, hogy

HcT = 0, hogy c ∈ C.
Ekkor H mátrixot a C paritásellenőrző mátrixának nevezzük. H
segı́tségével eldönthetjük, hogy egy adott kód C eleme-e.

0-97
Ha G C generátor mátrixa és H C paritásellenőrző mátrixa, ak-
kor:

H GT = 0.

Minden lineáris kódnak van paritásmátrixa.

Mivel G = (E P ) alakú ezért H-t H = (QEn−k ) alakban keressük.

0-98
Példa:
Készı́tsünk egy generátormátrixot:

 
1 0 0 0 0 1 1  
 0 0 1 1 1 1 0 0
1 0 0 1 0 1 
G=
 0
 H= 1 0 1 1 0 1 0 
0 1 0 1 1 0 
1 1 0 1 0 0 1
0 0 0 1 1 1 1

0-99
A generált kód: A hibakód:
i ui ∈ U ci ∈ C Hibás s
0 0000 0000000 bit
1 0001 0001111 0 011
2 0010 0010110 1 101
3 0011 0011001 2 110
4 0100 0100101 3 111
5 0101 0101010 4 100
6 0110 0110011 5 010
7 0111 0111100 6 001
8 1000 1000011
9 1001 1001100
10 1010 1010101
11 1011 1011010
12 1100 1100110
13 1101 1101001
14 1110 1110000
15 1111 1111111

0-100
A kód Hamming távolsága:

i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
j
0
1 4
2 3 3
3 3 3 4
4 3 3 4 4
5 3 3 4 4 4
6 4 4 3 3 3 3
7 4 4 3 3 3 3 4
8 3 3 4 4 4 4 3 7
9 3 3 4 4 4 4 7 3 4
10 4 4 3 3 3 7 4 4 3 3
11 4 4 3 3 7 3 4 4 3 3 4
12 4 4 3 7 3 3 4 4 3 3 4 4
13 4 4 7 3 3 3 4 4 3 3 4 4 4
14 3 7 4 4 4 4 3 3 4 4 3 3 3 3
15 7 3 4 4 4 4 3 3 4 4 3 3 3 3 4

A fenti táblázatból láthatjuk, hogy a legkisebb Hamming távolság d(ci , cj ) = 3,


ha i 6= j.

0-101
Az előzőekbe láthattuk, hogy a négybites kódunkból képeztünk
egy hétbites kódot, illetőleg a példánkban az adott G mátrixra fel
is soroltuk ezeket.
Ha megfigyeljük példánkban minden megengedett ci kódszóra
hét olyan nem megengedett vi,j kódszó van, amelynek Hamming
távolsága a megengedetthez viszonyı́tva egy. Vagyis
d(ci , vi,j ) = 1.
Vegyük példának az 5 reprezentációját:
Ha a problémát a lineáris
algebra fogalomrendszere
c5 0101010
szerint vizsgáljuk, akkor ci
v5,0 0101011 megengedett kódszavakat
v5,1 0101000 egy gömb középpontjának
v5,2 0101110 tekintjük az egy Hamming
v5,3 0100010 távolságra lévő vi,j vekto-
v5,4 0111010 rok pedig az adott gömb
v5,5 0001010 palástján helyezkednek el.
v5,6 1101010

0-102
Definı́ció: Egy adott C kód minimális súlya: wmin = min w(c), ha
c ∈ C és c 6= 0.

Tétel: A C kód minimális kódtávolsága megegyezik a a kód mi-


nimális súlyával. Vagyis dmin = wmin .

Bizonyı́tás:

dmin = min d(ci , cj ) = min w(ci , cj ) = wmin i 6= j.


A tétel bizonyı́tott!

0-103
Definı́ció: Adott egy c és egy v vektor. A v = c + e. Az e vektort
hibavektornak nevezzük.

Definı́ció: Az s = eH T vektort szindrómának hı́vjuk.

A szindróma kiszámı́tható az e segı́tségével.

vH T = (c + e)H T = cH T +eH T .
|{z}
0

Tehát vH T csak a hibavektortól függ.

A szindróma alapján készı́thető egy hibajavı́tó táblázat.

0-104
 
dmin − 1
Tétel: Egy C lineáris kód t = hibát képes javı́tani.
2

Bizonyı́tás:
Induljunk ki a Hamming gömbökből. Adott egy Hamming gömb középpontja
ci megengedett kódszó. Adott egy ettől különböző cj . Ezek távolsága d(ci , cj ) ≥
dmin .
Ha adott egy e vektor, amelyre igaz, hogy w(e) = k. Ha k < dmin 2
az azt jelenti,
hogy:

min d(ci + e, cj + e) ≥ 1
i6=j

Abban az esetben, ha

min d(ci + e, cj + e) = 0
i6=j

akkor a kód csak a hiba detektálására használható. Ennek oka az, hogy a
hibát észrevesszük, de nem tudjuk megmondani melyik kódszóhoz tartozik a hibás
kódszó, mert a Hamming gömbök összeérnek.
A tétel bizonyı́tott!

0-105
Tétel: Egy N kódszóból álló, n hosszúságú és dmin kódtávolságú
(bináris) kódra N ≤ 2n−dmin +1 .

Bizonyı́tás:
Legyen k egy természetes szám, amelyre 2k−1 < N ≤ 2k .
A k −1 hosszúságú egymástól különböző sorozatok száma 2k−1 .
Ebből következik, hogy 2k−1 < M miatt létezik két kódszó c és c′ ,
amelyek első k − 1 koordinátája (bit-je) megegyezik. Ezekre

dmin ≤ n − k + 1, vagyis N ≤ 2k ≤ 2n−dmin +1 .


Abban az esetben, ha N = 2k a Singleton-korlát alaja

dmin ≤ n − k + 1
A tétel bizonyı́tott!
Definı́ció: Egy kódot maximális távolságúnak nevezünk, ha igaz
rá, hogy dmin = n − k + 1.

0-106
Tétel: Ha egy (n, k) paraméterű kód t hibát tud javı́tani, akkor

t  
X n
≤ 2n−k
i=0
i

Ezt nevezzük Hamming-korlátnak.

Bizonyı́tás:
Egy adott kódszó közepű gömb álljon azokból a vektorokból,
amelyek legfeljebb t hibával keletkeznek a kérdéses kódszóból.
A kód akkor tud hibát javı́tani, ha több kódszóra konstruált
gömbök diszjunktak. Ekkor viszont az összes gömbben lévő vek-
torok száma kisebb vagy egyenlő, mint 2n , tehát
t  
X n
2k ≤ 2n
i=0
i

A tétel bizonyı́tott!

0-107
Definı́ció: Egy kódot tökéletesnek (perfektnek) nevezünk, ha bináris
esetben

t  
X n
= 2n−k .
i=0
i

A bináris Hamming-kód (7, 4) tökéletes kód, mert t = 1 és


   
7 7
+ = 27−4 = 8.
0 1
|{z} |{z}
1 7

0-108
2.4.1. Ciklikus kódok

Definı́ció: Adott egy c ∈ C. A c = (c0 , c1 , . . . , cn−1 ). Ennek a vektor-


nak a ciklikus eltoltja c′ = (cn−1 , c0 , . . . , cn−2 ).

Definı́ció: Rendeljünk a c vektorhoz egy polinomot a következő


módon:

c = (c0 , c1 , . . . , cn−1 ) → c(x) = c0 + c1 x + · · · + cn−1 xn−1 .

Ezt a c(x) polinomot kódpolinomnak nevezzük. Jelöljük a


kódpolinomok halmazát C(x)-el.

0-109
A fent emlı́tett polinómokat szintén a bináris Galois testen kell
értelmezni.
A Galois testen a műveleteket az adott helyiértékeken végezzük
el, de nincsennek átvitelek és nincsennek áthozatok.

Összeadás és kivonás


a + b
0 0 0
a szabály:(a + b) mod 2
0 1 1
1 0 1
1 1 0

Szorzás
a · b
0 0 0
a szabály: (a · b) mod 2
0 1 0
1 0 0
1 1 1

0-110
Jelölje:
M (x) az elküldendő bináris információt,
P (x) az úgynevezett generátor polinom,
Q(x) a hányados polinom,
R(x) a maradék polinom,
T (x) az üzenet polinom.
Amennyiben egy polinomban a bitek száma k a polinom fokszáma
k − 1.
Definı́ció: A generátor polinom egy n-ed fokú polinom (n + 1 bi-
tes), amely irreducibilis.

Definı́ció: Irreducibilis az a polinom, amely 1-el és önmagán kı́vül


nem osztható más polnommal (másnéven prı́m-modulusú po-
linom).

0-111
Adó oldal:
1. A küldendő információt egészı́tsük ki a generátor polinom
fokszámának megfelelő számú értékü bittel, vagyis algebrai
eljárással szorozzuk be xn -nel:

M (x) · xn

2. Az ı́gy kapott polinomot osszuk el a P (x) polinommal:

M (x) · xn R(x)
= Q(x) +
P (x) P (x)
3. Az R(x) polinomot adjuk helyiértékeknek megfelelően az M (x)·
xn polinomhoz:

T (x) = M (x) · xn + R(x)

ez az üzenet polinom.

0-112
Vevő oldal

1. A vett T (x) polinomot osszuk el a generátor polinommal:

T (x) M (x) · xn + R(x)) M (x) · xn R(x)


= = + =
P (x) P (x) P (x) P (x)

R(X) R′ (X)
= Q(x) + + ⇒
P (x) P (x)

R(X) R′ (X) R(X) + R′ (X)


+ = =0
P (x) P (x) P (x)

2. Ha az R(x) + R′ (x) 6= 0 hiba keletkezett.

Az R(x) + R′ (x) a GF (2) miatt nulla egyenlőségük esetén.

0-113
Példa:6
Az adat legyen:1101, tehát az M (x) = x3 + x2 + 1. Legyen a
generátor polinom: 1011, tehát P (x) = x3 + x + 1. P (x) fokszáma
3, ezért T (x) = M (x) · x3 + R(x), vagyis 1101000.
Adó oldal:
1101000:1011=1111
-1011
-----
1100
-1011
-----
1110
-1011
-----
1010
-1011
-----
R(x)=1

Tehát R(x)001. Ebből T (x) =1101001.

6 Kiss József: CRC kódolás anyaga alapján

0-114
Vevő oldal:

1101001:1011=1111
-1011
----
1100
-1011
----
1110
-1011
----
1011
-1011
----
R(x)=0

A vett adaton elvégzett osztás maradéka 0. Tehát az adat


nem sérült.

0-115
Bithiba detektálása:
Egy bit eltérés az adatban.

1001001:1011=1111
-1011
----
1011
-1101
----
1100
-1011
----
1111
-1011
----
R(x)=100

Az R(x) 6= 0, tehát hiba történt.

0-116
Hibacsomó detektálása:
Két bit eltérés az adatban.

1110001:1011=11000
-1011
----
1010
-1011
----
0010
-0000
----
R(x)=101

Az R(x) 6= 0, tehát hiba történt.


A CRC alkalmas a hibacsomók detektálásara is.

0-117
A CRC kód generálása leggyakraban visszacsatolt shift regisz-
terrel történik.

p0 p1 pn-2 pn-1

0
2.17. ábra: CRC generálás

1. a shift regisztert 0-val töltjük fel,

2. az összes adatbitet beléptetjük a fenti struktúrába,


3. az utolsó bit beléptetése után a maradék a shift regiszterben
van.

0-118
A generátor polinom választásának kritériumai:

• P (x) legyen irreducibilis, vagy prı́m tulajdonságú polinom.


• Ha n a P (x) fokszáma, akkor egy 2n − 1 hosszúságú blokk
esetén minden 1, illetve 2 bit hibát jelez a CRC.
• Ha n a P (x) fokszáma, akkor egy 2n−1 − 1 hosszúságú blokk
esetén minden 1, 2 illetve 3 bit hibát jelez a CRC.

Néhány generátor polinom:


CRC-1 x + 1 (paritás bit),
CRC-5 USB x5 + x2 + 1
CRC-15 CAN x15 + x14 + x10 + x8 + x7 + x4 + x3 + 1
CRC-32 Ethernet x32 + x28 + x27 + x26 + x25 + x23 + x22 + x20 + x19 + x18 + x14 +
x13 + x11 + x10 + x9 + x8 + 1

0-119
RSA algoritmus
1976
• Ron Rivest
• Adi Shamir
• Len Adleman

- Csak játszanak, nem csinálnak semmi komolyat.


- Tényleg.......?

0-120
3. Moduloaritmetika

3.1. Modulo képzés


127 mod 21 = 1
Vagy ahogy megszoktuk: 127%21.

3.2. Kongruencia
Kongruencia, másnéven moduloegyenlőség

127 ≡ 1 ( mod 21)

0-121
A titkosı́tási eljáráshoz olyan függvényeket keresünk,
amelyek nem működnek visszafelé.

Pl:
127 mod 21 = 1 alpján a 21 és az 1 ismeretében nem
találjuk ki egyértelműen a 127-et.

Lehetne pl.: 22, 43, 64, ...

0-122
3.3. Előzmények
Kis Fermat tétel:
a(p−1) mod p = 1, illetve ap mod p = a, ha a, p ∈ Z,
p > a és p prı́mszám.

Általánosı́tva:

p−1 0 ha p|a
a ( mod p) ≡
1 ha (a, p) = 1

Megjegyzés: tehát p nem okvetlenül kell, hogy prı́m


legyen, elegendő (p, a) = 1, vagyis p és a relatı́v prı́mek.

0-123
Bizonyı́tás:
A tétel kicsit másképpen: ha p prı́m és a egy tetszőleges
egész szám, akkor p|an − a.
Definı́ció: Azt mondjuk, hogy a H számhalmaz teljes
maradékrendszer mod n, ha H elemeinek n-es ma-
radékai minden lehetséges n-es maradékot egyszer és
csakis egyszer adnak ki.
Ha a osztható p-vel, akkor az állı́tás nyilvánvalóan
igaz. Ha a nem többszöröse p-nek, akkor (a, p) = 1,
mivel p prı́m. Tekintsük az {a, 2a, 3a, ..., (p − 1)a, pa} tel-
jes maradékrendszert mod p. A legutolsó elem, a pa
szám p-s maradéka 0, a többié valamilyen sorrendben
1, 2, 3, . . . , p − 1. Szorozzuk össze a vizsgált teljes ma-
radékrendszer elemeit a pa kivételével!

0-124
Euler-Fermat tétel:

aϕ(m) ≡ 1 ( mod m)
Ahol ϕ(m) az un. Euler függvény és

ϕ(m) = {k ∈ Z|0 < k ≤ m és (m, k) = 1}

Ha p prı́m ϕ(p) = p − 1.

Az Euler függvény additı́v és multiplikatı́v.

0-125
4. RSA algoritmus

T e mod N = R és Rd mod N = T , ahol N = e ∗ d.

Ha viszont N prı́m, akkor N = e ∗ d nem megy az


egész számok hamazán másként csak ha e = 1, illetve
d = 1.

Akkor most ???????

0-126
• A kitevő valójában N relatı́v prı́mjeinek száma plusz
egy.

• Ez prı́m számoknál
ϕ(N ) = N − 1. Így a kitevő N − 1 + 1 = N .

• Nem prı́m számok esetén ?????????

0-127
Példa:

315 prı́mtényezői: 315 = 3 ∗ 3 ∗ 5 ∗ 7.


Kihasználva az Euler függvény multiplikativitását

ϕ(315) = 2 ∗ 2 ∗ 4 ∗ 6 = 96.

Próba: 151(96+1) mod 315 = 151


Működik!
Megjegyzés: 151 prı́m volt.
(Nem volt kedven relatı́v prı́met keresni).

0-128
Próba:

T (ϕ(N )+1) ≡ T ( mod N )

T = 5, N = 6, (N, T ) = 1, ϕ(6) = 2, 5(2+1) mod 6 = 5

ϕ(N ) + 1 = e ∗ d, de a 3 prı́m.

A természetes számok esetén egy prı́m egyben fel-


bonthatatlan is. Tehát 3 = 3 ∗ 1, vagy 3 = 1 ∗ 3.

Első hatványra nem érdemes emelni.

0-129
T ϕ(N ) mod N = 1

Képezzük mindkét oldal négyzetét:

T ϕ(N ) ∗ T ϕ(N ) ≡ 1 ∗ 1 ( mod N ).

K-adik hatványát:

T K∗ϕ(N ) ≡ 1 ∗ 1 ( mod N ).

Ezután K ∗ ϕ(N ) + 1 = e ∗ d már felbontható.

0-130
Titkosı́tás: T e mod N = R.

Megfejtés: Rd mod N = T .

Példa:
T = 8, N = 15, (8, 15) = 1, ϕ(15) = 8.

Milyen kulcsot válasszunk?


• 1 ∗ 8 + 1 = 9 = 3 ∗ 3 nem jó a kulcsok azonosak,
• 2 ∗ 8 + 1 = 17 prı́m,
• 3 ∗ 8 + 1 = 25 = 5 ∗ 5 nem jó a kulcsok azonosak,
• 4 ∗ 8 + 1 = 3 ∗ 11 ez jó.

0-131
Publikus kulcs: e = 3, N = 15.

Titkos kulcs: d = 11, N = 15.

Becsomagolás: 83 mod 15 = 2.

Kibontás: 211 mod 15 = 8.

0-132
N legyen:

1. nagy szám,
2. az lnko-ja legyen tetszőleges számmal 1,
3. könnyű legyen meghatározni az Euler függvényét.

Megoldás:

1. vegyünk két nagy prı́met P és Q, ekkor N = P ∗ Q.


2. P > T és Q > T , ı́gy ez rendben van.
3. ϕ(P ) = P − 1 és ϕ(Q) = Q − 1, ekkor ϕ(N ) = (P − 1) ∗
(Q − 1).

Ezután K ∗ ϕ(N ) = e ∗ d. Készen vannak a kulcsok.

0-133
4.1. Mersenne-prı́mek

Mersenne-prı́m az a szám, amelyre igaz, hogy:


pm = 2p − 1, ahol p, pm ∈ P.
Ez a formula nem okvetlenül eredményez prı́met.
Pl:211 − 1 = 2047, de 2047 = 89 ∗ 23.
2008. augusztus 23-án fedezték fel a 45-ödik Mersenne-
prı́met, ez a 243112609 -1 szám, amely 12 978 189 számjegyű.
Ez egyben a jelenleg ismert legnagyobb prı́mszám.
2008. szeptember 6-án találták meg a 46-odik Mersenne-
prı́met, ez a 237156667 -1 szám, amely 11 185 272 számjegyű.

0-134

You might also like