Professional Documents
Culture Documents
Információelmélet
Információelmélet
Schuster György
schuster.gyorgy@kvk.uni-obuda.hu
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.
0-3
Definı́ció: Információelméleti szempontból az információ az, amit
továbbı́tani kell.
✓ ✏
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
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 ✲
X = {x1 , x2 , . . . , xn }
|X| véges (véges szimbólum rendszer)
0-7
.
Ahol:
X véges szimbólum halmaz, vagyis a forrás-ABC.
. . . , xti , . . . a diszkrét időpontokban kiküldött jelek.
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 ).
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.
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
0-12
Célszerű választás egy logaritmus függvény. Ennek oka:
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”:
.
Példa:
Legyen az X = {0, 1} és az p0 = p1 = 21 .
0-14
1.3. Entrópia, hatásfok, redundancia
n
X
H(X) = − pi loga pi
i=1
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
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ő.
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
0-19
Definı́ció: Redundanciának nevezzük az 1 − e kifejezést.
Hmax − H(X)
R = 1 − e, R=
Hmax
0-20
1.4. Illesztő kódolás
X = {A, B, C, D, E, F }, és
pA = 21 , pB = 14 , pC = 81 , pD = 1
16
, pE = 1
32
, pF = 1
32
1.9375
Ebből a hatásfok e = 2.585
= 0.7495 és a redundancia R = 0.2505.
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.
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
0-23
.
Ahol:
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 )
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
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
0-30
Tehát H(X) = H(X|Y ) egyenlőség akkor és csak akkor áll fenn, ha X
és Y függetlenek.
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.
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:
0-33
Az összefüggések ”független” adó és vevő esetén:
A vevő csak azt tudja, hogy vennie kell valamit de, hogy mit vesz, az
független az adótól.
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
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.
T (X, Y )
Definı́ció: A relatı́v csatornakapacitás: c = .
H(X)
0-37
2. Kódelmélet
0-38
2.1. Forrás kódok
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:
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
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
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
0-46
2.1.2. Pozı́ció kódok
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.
0-50
2.2. Illesztő kódolás
0-51
2.2.1. Shannon-Fano kódolás
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.
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 .
Ebből: H(X) = 12 ∗log2 (2)+ 41 ∗log2 (4)+ 81 ∗log2 (8)+ 81 ∗log2 (16) = 1.875 betu
bit
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
1.75
Ha ebben az S-F kód hatásfoka e = 1.875
= 0.933. Látható, hogy a
hatásfok javult.
0-55
Az ábrán látható a két kód gráfja.
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:
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.
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.
0-61
2.2.3. Aritmetikai kódolás
0-62
Az alapelv az, hogy a bájtsorozatot egyetlen számmal, egy valós
számmal ábrázolunk.
0-63
2.3. ábra: Aritmetikai kódolás
0-64
2.2.4. Futamhossz kódolás
0-65
2.2.5. LZW kódolás
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ő
0-67
A hiba jellegét tekintve 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
0-69
2.3.2. Ismétléses kód
Példa:
0-70
2.3.3. Konvoluciós kód
3
0-71
2.5. ábra: (3, 1, 3) kódolás
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.
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.
0-75
u=1, t=0, mem=000, v=11 u=0, t=1, mem=100, v=11
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
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:
• szekvenciális dekódolás,
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.
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
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,
0-83
Maximum-likelihood és Viterbi dekódolás:
0-84
N bites bitsorozatra az összes lehetséges vett bitsorozat száma
2N . Ezek közül csak 2kL darab érvényes.
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:
0-86
2. a második lépésben a bemeneti bit ”11”, lehetséges négy
állapot:
0-87
3. a harmadik 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.
0-89
A legnagyobb metrikájú utat megtartjuk, a többit töröljük. Az
eredmény:
0-90
5. 6. 7. a többi lépés
0-91
2.4. Test
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).
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.
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
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.
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
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.
Bizonyı́tás:
0-103
Definı́ció: Adott egy c és egy v vektor. A v = c + e. Az e vektort
hibavektornak nevezzük.
vH T = (c + e)H T = cH T +eH T .
|{z}
0
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
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
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
0-108
2.4.1. Ciklikus kódok
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.
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.
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
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:
ez az üzenet polinom.
0-112
Vevő oldal
R(X) R′ (X)
= Q(x) + + ⇒
P (x) P (x)
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
0-114
Vevő oldal:
1101001:1011=1111
-1011
----
1100
-1011
----
1110
-1011
----
1011
-1011
----
R(x)=0
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
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
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
0-118
A generátor polinom választásának kritériumai:
0-119
RSA algoritmus
1976
• Ron Rivest
• Adi Shamir
• Len Adleman
0-120
3. Moduloaritmetika
3.2. Kongruencia
Kongruencia, másnéven moduloegyenlőség
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.
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
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
Ha p prı́m ϕ(p) = p − 1.
0-125
4. RSA algoritmus
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 .
0-127
Példa:
ϕ(315) = 2 ∗ 2 ∗ 4 ∗ 6 = 96.
0-128
Próba:
ϕ(N ) + 1 = e ∗ d, de a 3 prı́m.
0-129
T ϕ(N ) mod N = 1
K-adik hatványát:
T K∗ϕ(N ) ≡ 1 ∗ 1 ( mod N ).
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.
0-131
Publikus kulcs: e = 3, N = 15.
Becsomagolás: 83 mod 15 = 2.
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:
0-133
4.1. Mersenne-prı́mek
0-134