Documente Academic
Documente Profesional
Documente Cultură
Coduri - tablou
18.1
Gp,p+1
1 0 0 ... 0 1
0 1 0 ... 0 1
=
..
(1)
0 0 0 ... 1 1
unde p = k1 , k2 .
Un astfel de (n1 n2 , k1 k2 ) - cod are distanta d = d1 d2 = 22 = 4, deci corecteaza
o eroare si detecteaza doua erori. Chiar daca n scrierea liniara a cuvintelor - cod
ultimul simbol de control se poate elimina (el este de fapt suma modulo 2 a bitilor
de control de pe ultima linie si coloana) distanta se reduce la 3, deci capacitatea de
corectare a unei erori ramane.
Exemplul
1 0 1 0 0 0 1 0 1
0 1 1 0 0 0 0 1 1
G0 = G G =
0 0 0 1 0 1 1 0 1
0 0 0 0 1 1 0 1 1
Daca a = 1001 este un mesaj de informatie, el se codific
a n
x = aG0 = 101011110, sau folosind forma matriciala:
1 0 1
x = 0 1 1 = 101011110
1 1 0
caracterele de control fiind subliniate, iar cuvantul - cod este transmis linie cu linie.
193
194
18.2
195
Nc = n2 + 1;
00
00/000
01/011
10/101
11/110
01
01/011
00/000
11/110
10/101
10
10/101
11/110
00/000
01/011
11
11/110
10/101
01/011
00/000
196
/000
H
00
00
6
@HH
J
*
J@ HH
HH
J@
HH
J@
J @
HH
H
@
J
H
H
J @
@
H
J
j
H
01/011
/011
- 01
- 01
@
J
H
@H
J @
@HH
@
J
H
@
H J
@
@ HHJ @
HH
00
@
@
@ JH
HH @
@
HH@
@
R
H
@ J
j
H
10/101
/101
- 10
10
@
HH
J
*
H
@
J
H
@
HH
J
HH @ J
@ J
H
HH
@
HH @J
J
H @
J
^
HH@
R
j
H
/110
? 11/110 - 11
11
00/000
00
6
-
00 Z
00 Q
: 00
ASQ
JZ
s
3
A J Z
@
AS
S
w
A J
@
AAU
Z
A
@
J Z
XXX
@
A J Z
Z
~
X
z
>
- 01
A J - 01 @
* 01
:
Z
XXX
J
Z
~
A
@
Z
J
>
XXX@
R
JJ
S Z A J
z
X
^. . .
Z
S
A
00 H
J
Z
1 00
S
J HH
AZ J
HH
J
^
S AZ
J
HH
j
1 XXH
~
Z
X
X
z 10
H
j 10 S A - 10
J
HH
:
j
J
Z S A
>
Z S
J
A
S A
J
QQ
Z
J
AU
Z S
PPQ
Q
s
S
w
P
q
Z
J
~
Z
* XXX
z
J
^ 11
- 11
11
18.3
197
198
Urmatorul submesaj primit este 0.3 0.1 0.9. Pentru nodurile de pe nivelul
2, valorile calculate ale metricilor (metrica nodului predecesor plus metrica arcului)
sunt:
(00)1
(01)1
(10)1
(11)1
(00)3
3.44
2.44
1.84
1.74
00
00
01
01 Z
01/011
Z 10/101
00
00
Z
3
Z
/110
10
10
Z
ZZ
~
11
11
18.4
Definitia codurilor - tablou se poate extinde pentru a cuprinde si alte clase de coduri
liniare (Hamming, Reed - Muller) sau ciclice (BCH, Reed - Solomon); ceea ce se
obtine este un cod - tablou generalizat (GAC - Generalized Array Codes).
Un GAC este o suma binara de doua sau trei coduri - tablou, completate eventual
cu linii nule. Procedura de constructie a unui astfel de (n, k) - cod C este:
A. Fie C1 un cod - produs prin nmultirea Kronecker GA1 GA2 , unde:
(i) GA1 este o matrice k1 (k1 + 1) de tipul (1);
199
(ii) GA2 = (Ik2 |Jk2 ,n2 k2 ) unde Ik2 este matricea unitate iar J este o matrice cu
toate elementele 1;
(iii) n = (k1 + 1) n2 , kA = k1 k2 .
B. Fie C2 un cod - produs prin nmultirea Kronecker GB1 GB2 , unde:
(i) GB1 este o matrice 1 nB1 cu toate elementele 1;
(ii) GB2 = (G3 |G4 ) este o matrice kB nB2 unde G3 este o matrice cu coloane 0
sau 1, iar G4 este o matrice de tipul (1) cu kB linii. Coloanele lui GB2 pot fi eventual
permutate.
(iii) n = nB1 nB2 .
C. Fie C3 un cod - produs prin nmultirea Kronecker GC1 GC2 , unde:
(i) GC1 = (00 . . . 01) are dimensiunea 1 nC1 ;
(ii) GC2 = (11 . . . 1) are dimensiunea 1 nC2 ;
(iii) n = nC1 nC2 .
D. Codul C este C1 + C2 sau C1 + C2 + C3 unde suma se efectueaza n Z2 ; el
are lungimea n, k = kA + kB respectiv k = kA + kB + 1 simboluri de informatie si
este generat de matricea
!
GA1 GA2
GA1 GA2
sau
GB1 GB2
GB1 GB2
GC1 GC2
In exemplele urmatoare vom prezenta sub forma de coduri GAC unele din cele
mai cunoscute coduri - bloc (liniare sau ciclice).
Exemplul 18.5 Sa consider
am
1 0 0 1
GA1 =
0 1 0 1 , GA2 = (1 1)
0 0 1 1
GB1 = (1 1 1 1), GB2 = (0 1).
Dimensiunile codului sunt
n = 4 2 = 8, k = 3 +
1 = 4. Matricea generatoare va fi
1 1 0 0 0 0 1 1
0 0 1 1 0 0 1 1
G=
.
0 0 0 0 1 1 1 1
0 1 0 1 0 1 0 1
Aceasta corespunde unui cod Reed - Muller RM(1, 3). Daca se ignora ultima
coloan
a (de control), se obtine un (7, 4) - cod Hamming binar.
Aranjarea sub forma de tablou a cuvintelor - cod din cele doua coduri - produs
componente este urmatoarea:
Fie a = a1 a2 a3 a4 un mesaj de informatie. Atunci cuvantul - cod x este dat prin:
0 a4
a1 p1
0 a4
a2 p2
,
x2 =
x1 =
0 a4
a3 p3
0 a4
p4 p5
a1 p1 + a4
a p + a4
= (a1 , a4 + p1 , a2 , p2 + a4 , a3 , p3 + a4 , p4 , p4 + a4 ),
x = x1 + x2 = 2 2
a3 p3 + a4
p4 p4 + a4
unde pi = ai (1 i 3) si p4 = a1 + a2 + a3 sunt simboluri de control.
200
1 0 0 1
GA1 = 0 1 0 1
GA2 = (1 1 1 1)
0 0 1 1
!
0 1 0 1
GB1 = (1 1 1 1)
GB2 =
.
0 0 1 1
Deci n = 4 4, k = 3 + 2 = 5 si
1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
G=
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 .
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
Elimin
and ultimul simbol de control (ultima coloan
a din matricea G) se ajunge
la un (15, 5) - cod binar cu d = 7, care este un cod BCH.
Fie a = a1 a2 a3 a4 a5 un mesaj de informatie. Reprezentarea tabelar
a a cuvintelor
- cod este:
a1 p1 p1 p1
0 a4 a5 a4 + a5
a p p p
0 a4 a5 a4 + a5
x1 = 2 2 2 2
x2 =
,
a3 p3 p3 p3
0 a4 a5 a4 + a5
p4 p4 p4 p4
0 a4 a5 a4 + a5
a1 p1 + a4 p1 + a5 p1 + a4 + a5
a p + a4 p2 + a5 p2 + a4 + a5
x = x1 + x2 = 2 2
,
a3 p3 + a4 p3 + a5 p3 + a4 + a5
p4 p4 + a4 p4 + a5 p4 + a4 + a5
unde pi = ai (1 i 3), p4 = a1 + a2 + a3 sunt simboluri de control.
Exemplul 18.7 Sa plec
am de la
atoarelematrici de baz
a:
urm
1 0 0 1
GA1 = GA2 = 0 1 0 1
0 0 1 1
GB1 = GC2 = (1 1 1 1), GB2 = GC1 = (0 0 0 1).
Se obtine un cod C = C1 + C2 + C3 cu n = 4 4 = 16, k = 3 3 + 1 + 1 = 11 si
matrice generatoare
1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1
0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1
0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1
0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1
G=
0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1
0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
El are d = 4 si este echivalent cu un cod RM(2, 4). Daca se elimina ultimul
simbol de control, se obtine un (15, 11) - cod Hamming binar.
201
este format din:
0
0
0
a11
a1
a2
a3
p1 + a10
a4
a5
a6
p2 + a10
x = x1 + x2 + x3 =
a7
a8
a9
p3 + a10
p4 + a11 p5 + a11 p6 + a11 p7 + a10 + a11
Exemplul 18.8 Pentru (24, 12) - codul Golay binar extins se poate da urmatoarea
reprezentare GAC:
1 0 0 0 1 1 1 1
!
0 1 0 0 1 1 1 1
1 0 1
GA1 =
GA2 =
0 0 1 0 1 1 1 1
0 1 1
0 0 0 1 1 1 1 1
1 1 1 0 1 1 0 1
GB1 = (1 1 1) GB2 = 1 0 1 1 1 1 0 1
1 0 1 0 1 1 1 1
GC1 = (0 0 1) GC2 = (1 1 1 1 1 1 1 1).
Fie a = a1 a2 . . . a12 un mesaj de informatie.
Pentru obtinerea cuvantului - cod, avem:
a1 a2 a3 a4 p1 p2 p3 p4
x1 = a5 a6 a7 a8 p5 p6 p7 p8
p9 p10 p11 p12 p13 p14 p15 p16
c1
x2 = c1
c1
0
x3 = 0
a12
a9 c2 a10 c3
a9 c2 a10 c3
a9 c2 a10 c3
0
0
0
0
0
0
a12 a12 a12
c4
c4
c4
0
0
a12
a11
a11
a11
0
0
a12
c5
c5
c5
0
0
0
0
a12 a12
deci
x = x1 + x2 + x3 =
a1 + c1
a2 + a9
...
a11 + p3
c5 + p4
a5 + c1
a6 + a9
...
a11 + p7
c5 + p8
a12 + p9 + c1 a12 + p10 + a9 . . . a12 + a11 + p15 a12 + p16 + c5
De remarcat maniera mult mai simpla de codificare, ea reduc
andu-se la adunari
de valori binare (pentru simbolurile de control) si adunari de matrici binare.
18.5
Pentru decodificare se poate folosi tot algoritmul lui Viterbi aplicat unei structuri
de retea sub care se pot reprezenta aceste coduri. Structura de retea se construieste
similar cu cea a codurilor - tablou, cu unele mici modificari datorate definitiei cuvintelor - cod, ca sume de doua sau trei alte secvente.
202
Vom considera reprezentarea cuvintelor unui cod GAC sub forma de tablou cu
n1 linii si n2 coloane. Fie ki numarul de simboluri noi de informatie care pot apare
pe linia i a cuvintelor - cod si t = max {ki }.
1in1
n1
Y
p=1
00 PP
00 X
00 H
:
:
HH
*
XX
P
X
X
PP
HH
X
X
z
q
P
:
- 10 X
Hj
10
10
X
XXX H
X
z 00
00 XX
:
HH XXXX
*
01 X
01
X
z 01 X
:
:
X
X
X
X
HH X
X
X
X
X
z
z
X
XX
H
j
H
11
11
11
203
aceast
In
a reprezentare, pe prima linie sunt doua simboluri de informatie (a1 si a4 ),
pe a doua si a treia cate unul (a2 respectiv a3 , a4 nefiind simbol nou), iar pe a patra
linie, nici unul. Deci numarul de stari al retelei este Ns = 22 = 4, fiecare stare fiind
reprezentat
a printr-o secvent
a de t = 2 caractere binare (00, 01, 10, 11).
Functia este definita prin
0 (00, B) = a1 a4 , 1 (A, B) = a2 , 2 (A, B) = a3 , 3 (A, 00) = .
Nodurile si arcele sunt marcate cu valorile date de tabelele urmatoare:
0 (A, B)/0 (A, B)
00
10
01
11
00
00/00 10/11 01/01 11/10
1 (A, B)/1 (A, B) 00
10
01
11
00
0/00 1/11
1/11 0/00
10
01
0/01 1/10
11
1/10 0/01
2 (A, B)/2 (A, B) 00
10
01
11
00
0/00 1/11
10
1/11 0/00
01
0/01 1/10
11
1/10 0/01
3 (A, B)/3 (A, B) 00
00
/00
pentru codul RM(1, 3),
10
/11
01
/01
11
/10
3 (A, B)/3 (A, B) 00
00
/0
pentru (7, 4) - codul Hamming
/1
10
01
/0
11
/1
Exemplul 18.10 Reprezentarea prin retea a codurilor RM(1, 4) si (15, 5) BCH
construite sub forma de GAC n Exemplul 18.6 se realizeaz
a astfel:
Ad
ancimea retelei (numarul de coloane) este Nc = 4 + 1 = 5. Numarul maxim
de simboluri de informatie noi se afla pe prima linie a cuvintelor - cod (a1 , a4 , a5 );
deci reteaua are Ns = 23 = 8 stari distincte.
Functia este definita
0 (000, B) = a1 a4 a5 , 1 (A, B) = a2 , 2 (A, B) = a3 , 3 (A, 000) = .
iar functia :
0 (000, B) = a1 (a1 + a4 )(a1 + a5 )(a1 + a4 + a5 )
1 (A, B) = a2 (a2 + a4 )(a2 + a5 )(a2 + a4 + a5 )
2 (A, B) = a3 (a3 + a4 )(a3 + a5 )(a3 + a4 + a5 )
3 (A, 000) = (a1 +a2 +a3 )(a1 +a2 +a3 +a4 )(a1 +a2 +a3 +a5 )(a1 +a2 +a3 +a4 +a5 )
pentru codul RM(1, 4). Pentru (15, 5) - codul BCH se elimina ultimul bit de control.
Nodurile si arcele sunt etichetate conform tabelelor:
0 /0
000
100
001
101
010
110
011
111
000
000/0000
100/1111
001/0011
101/1100
010/0101
110/1010
011/0110
111/1001
204
PRELEGEREA
18. CODURI - TABLOU
000 P
000 P
000
1
P
P
7
S
P
P
q
q
PP
PP
S
- 100
- 100
100
S
@ S
@ S
- 001
- 001
@
3 001 P
Q
PP
1 @S
1
PP
Q
P
S
q
q
Q @S
PP
PP
Q
: 101
101
101 XX
w
Q@
@
RS
XXX
s
Q
z
X
000 XX
: 000
HHXXX
*
- 010
- 010
X
z
010
@
S
H
>
PP
PP
PP
PP
S@ HH
P
q
H
P
P
q
j
H
@
S
- 110
- 110
110
S@
S @
- 011
- 011
S @
R 011
PP
PP
S
1
1
P
P
S
P
q
q
P
PP
PP
w
S
- 111
111
111
i /i
000
100
000
0/0000
1/1111
100
1/1111
0/0000
001
101
010
110
011
111
0/0011
1/1100
1/1100
0/0011
0/0101
1/1010
1/1010
0/0101
0/0110
1/1001
1/1001
0/0110
111
3 /3
0000
3 /3
0000
000
/0000
000
/000
100
/1111
100
/111
001
/0011
001
/001
101
/110
001
101
010
110
011
respectiv
101
/1100
010
/0101
010
/010
110
/1010
110
/101
011
/0110
011
/011
111
/1001
111
/100
(i=1,2)
- {
- {
-
- {
- {
- {
- {
- y
-
- y
-
- y
-
- {
-
- {
-
- {
-
--? - ??
? - {
-6 -6
66
-
Bibliografie
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] L. Bahl, J. Cocke, F. Jelinek, J. Raviv - Optimal decoding of linear codes for
minimizing symbol error rate, IEEE Inf. Theory, pp. 284-287, Martie 1974;
[3] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transactions on Information Theory, vol. 34, 1988, pp. 38-141;
[4] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[5] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[6] S. Guiasu - Teoria Codurilor, Tipografia Universitatii Bucuresti, 1976;
[7] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[8] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Practical Approach, Kluwer Academic Publ., 1997;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[10] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[11] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[12] W.E.Ryan - A Turbo Code Tutorial, IEEE Trans. comm. pp. 1261-1271, Oct.
1996;
205