Documente Academic
Documente Profesional
Documente Cultură
Pentru a determina o relaţie ı̂ntre ele, ţinem seama că B este o bază şi deci vectorii noii baze
se pot exprima ca o combinaţie liniară a vectorilor e1 , e2 , . . . , en :
1
2 Cursul 4, Algebră liniară
c E. Petrişor, octombrie 2007
adică:
f1 f2 fn
↓ ↓ ↓
a11 a21 . . . an1
a12 a22 . . . an2 (4.2)
TBB′ = .. .. ..
. . ... .
a1n a2n . . . ann
În mod analog se defineşte matricea de trecere de la baza B ′ la baza B. Adică dacă exprimăm
vectorii vechii baze ei , i = 1, n, ca şi combinaţii liniare a vectorilor noii baze, ei = ci1 f1 +
ci2 f2 + · · · cin fn , matricea de trecere de la baza B′ la baza B este:
e1 e2 en
↓ ↓ ↓
c11 c21 . . . cn1
c12 c22 . . . cn2 (4.3)
TB′ B = .. .. ..
. . ... .
c1n c2n . . . cnn
Pe de altă parte, vectorii f1 , f2 , . . . , fn fiind liniar independenţi ei nu se pot exprima unii ı̂n
funcţie de ceilalţi, singura exprimare fiind
sau matricial:
f1 1 0 ... 0 f1
f2
0 1 ... 0
f2
.. = .. .. .. .. (4.8)
. . . . .
fn 0 0 ... 1 fn
sau aplicând transpunerea ı̂n fiecare membru al acestei ultime egalităţi matriciale, obţinem:
−1
TBB′ TB′ B = In ⇔ TB′ B = TBB ′
adică matricea de trecere de la baza B′ la baza B este inversa matricii de trecere de la baza B
la baza B′ şi evident că matricile de trecere sunt nesingulare.
Vom arăta ı̂n continuare că matricea de trecere dintre două baze intervine ı̂n relaţia dintre
coordonatele aceluiaşi vector ı̂n cele două baze. Mai precis:
f1
f2
4.5
v = y1 f1 + y2 f2 + · · · yn fn = y1 y2 . . . yn .. =
.
fn
(4.11)
a11 a12 . . . a1n e1
a21 a22 . . . a2n
e2
y1 y2 . . . yn .. .. .. ..
. . . .
an1 an2 . . . ann en
Pe de altă parte v = x1 e1 + x2 e2 + · · · xn en , adică
e1
e2
v= x1 x2 . . . xn .. (4.12)
.
en
Ultimul membru din (4.11) reprezintă de asemenea exprimarea vectorului v ı̂n baza B. Deoarece
exprimarea unui vector ı̂ntr-o bază este unică, rezultă că:
a11 a12 . . . a1n
a21 a22 . . . a2n
x1 x2 . . . xn = y1 y2 . . . yn .. .. .. (4.13)
. . .
an1 an2 . . . ann
Aplicând transpunerea ı̂n ambii membri ai relaţiei (4.13) matricile linie devin matrici coloană
şi conform proprietăţii (AB)T = B T AT , obţinem:
x1 a11 a21 . . . an1 y1
x2 a12 a22 . . . an2 y2
.. = .. .. .. .. (4.14)
. . . ... . .
xn B a1n a2n . . . ann yn B ′
| {z }
TBB′
Observaţia 4.1.1 Relaţia dintre coordonatele vectorului v ı̂n bazele B, B′ se exprimă concen-
trat astfel:
[v]B = TBB′ [vB′ ] (4.15)
respectiv:
[v]B′ = TB′ B [vB ] (4.16)
Cursul 4, Algebră liniară
c E. Petrişor, octombrie 2007 5
Exemplul 1. În spaţiul vectorial R3 considerăm baza canonica B = (e1 , e2 , e3 ) şi baza B′ =
(f1 = (−1, 2, 1), f2 = (3, 0, −4), f3 = (2, 5, −1))
a) Să se determine matricile de trecere ı̂ntre cele două baze: TBB′ , TB′ B .
b) Să se determine coordonatele vectorului v = (0, 4, −3) relativ la baza B′ .
Rezolvare: a) Observăm că vectorii bazei B′ sunt exprimaţi ca triplete de numere reale, deci
ı̂n baza canonică:
f1 = (−1, 2, 1) = −1e1 + 2e2 − 4e3
f2 = (3, 0, −4) = 3e1 + 0e2 − 4e3
f3 = (2, 5, −1) = 2e1 + 5e2 − 1e3
Astfel, fără nici un calcul prealabil putem da matricea de trecere de la baza B la baza B ′ :
−1 3 2
TBB′ = [[f1 ]B | [f2 ]B | [f2 ]B ] = 2 0 5
−4 −4 −1
Matricea de trecere de la baza nouă la baza veche, TB′ B este inversa matricii TBB′ . Pentru
determinarea inversei calculăm:
• transpusa matricii TBB′ :
−1 2 −4
T
TBB ′ = 3 0 −4
2 5 −1
• adjuncta:
20 −5 15
∗
TBB ′ = −18 9 9
−8 −16 −6
v = (0, 4, −3) = y1 (−1e1 + 2e2 − 4e3 ) + y2 (3e1 + 0e2 − 4e3 ) + y3 (2e1 + 5e2 − 1e3 )
= (−1y1 + 3y2 + 2y3 )e1 + (2y1 + 0y2 + 5y3 )e2 + (−4y1 − 4y2 − 1y3 )e3
sau matricial:
−1 3 2 y1 0
2 0 5 y2 = 4
−4 −4 −1 y3 −3
Observăm că matricea sistemului este TBB′ . Această matrice fiind nesingulară, rezultă că
sistemul are o unică soluţie:
y1 0 0 20 −5 15 0
y2 = TBB−1 −1
′ 4 = TB′ B 4 = −18 9 9 4 =
90
y3 −3 −3 −8 −16 −6 −3
−65 65/90
−1
9 = −1/10
90
−46 46/90
2. Metoda a doua se bazează pe relaţia dedusă ı̂ntre coordonatele aceluiaşi vector ı̂n două
baze:
[v]B′ = TB′ B [v]B ,
adică:
y1 0 20 −5 15 0
y2 = TB′ B 4 = −1 −18 9 9 4
90
y3 −3 −8 −16 −6 −3
Observăm că relaţia dintre coordonatele unui vector relativ la două baze este algoritmică şi evită
calcule suplimentare (comparativ cu metoda directă, 1).
Exemplul 2. În spaţiul vectorial real R2 se consideră baza canonică B = (e1 = (1, 0), e2 =
(0, 1)) şi bazele B′ = (u1 = (2, −3), u2 = (−1, 4)), B′′ = (f1 = (1, 3), f2 = (−1, 5)).
a) Să se determine matricea de trecere de la baza B′ la baza B′′ , TB′ B′′ .
b) Să se determine descompunerea vectorului v = 2u1 − 7u2 după vectorii bazei B′′ .
Rezolvare a) Vectorii celor două baze sunt exprimaţi ı̂n baza canonică. Prin urmare, din
datele problemei putem determina matricile de trecere TBB′ şi TBB′′ :
Din
u1 = 2e1 − 3e2 u1 2 −3 e1
⇔ = (4.17)
u2 = −1e1 + 4e2 u2 −1 4 e2
rezultă că
2 −1
TBB′ = ,
−3 4
Cursul 4, Algebră liniară
c E. Petrişor, octombrie 2007 7
iar din
f1 = 1e1 + 3e2 f1 1 3 e1
⇔ = (4.18)
f2 = −1e1 + 5e2 f2 −1 5 e2
avem că:
1 −1
TBB′′ = .
3 5
Pentru a determina matricea de trecere de la baza B′ la B′′ trebuie să exprimăm vectorii bazei B′′
ı̂n funcţie de vectorii bazei B′ . Din relaţia matricială (4.17), rezultă că vectorii bazei canonice
se exprimă ı̂n funcţie de vectorii bazei B′ prin:
−1
e1 2 −3 u1
= (4.19)
e2 −1 4 u2
Din (4.18) şi (4.19) rezultă exprimarea matricială a vectorilor bazei B′′ ı̂n funcţie de vectorii
bazei B′ :
−1
f1 1 3 2 −3 u1 1 7 9 u1
= = (4.20)
f2 −1 5 −1 4 u2 5 1 7 u2
Deci
7 9
f1 = u1 + u 2
5 5
1 7
f2 = u1 + u 2
5 5
şi prin urmare matricea TB′ B′′ este:
1 7 1
TB′ B′′ = (4.21)
5 9 7
Matricea TB′′ B′ = TB−1 ′ B ′′ . Prin urmare rămâne doar să calculăm inversa matricei TB ′ B ′′ şi să
Propoziţia 4.2.1 O submulţime nevidă S a spaţiului vectorial V peste corpul K este subspaţiu
vectorial dacă şi numai dacă următoarele două condiţii sunt verificate:
SSV1. ∀ s1 , s2 ∈ S ⇒ s1 + s2 ∈ S,;
SSV2. ∀ α ∈ K şi ∀ s ∈ S ⇒ αs ∈ S.
Evident, că ı̂n aceste condiţii (S, +) este grup comutativ şi ı̂n plus sunt satisfăcute cele 4 condiţii
din axiomele de spaţiu vectorial, relativ la ı̂nmulţirea cu scalari.
Exemplul 3. Fie θ vectorul nul din spaţiul vectorial V /K. Submulţimea S = {θ} ⊂ V este
subspaţiu vectorial al lui V , numit subspaţiul nul, sau trivial al lui V .
Orice subspaţiu vectorial S 6= {θ}, conţine vectorul nul θ, deoarece dacă s ∈ S, atunci −1s =
−s ∈ S şi deci θ = s − s ∈ S.
Exemplul 4. Mulţimea soluţiilor S ale unui sistem liniar şi omogen de m ecuaţii cu n necunos-
cute, de matrice A(aij ) ∈ Km×n , este un subspaţiu vectorial al lui Kn /K.
Într-adevăr, fie sistemul liniar şi omogen exprimat ı̂n forma matricială:
a11 a12 . . . a1n x1 0
a21 a22 . . . a2n x2 0
.. .. = ..
. . .
am1 am2 . . . amn xn 0
sau mai concis Ax = 0, unde x este vectorul coloană al necunoscutelor. Să arătăm că S = {x ∈
Kn |Ax = θ} este subspaţiu vectorial al lui Kn .
SSV1: Fie x, y două soluţii, adică Ax = θ şi Ay = θ. Atunci A(x + y) = Ax + Ay =
θ + θ = θ, deci x + y este soluţie a sistemului.
SSV2: Fie α ∈ K şi x o soluţie, adică Ax = 0. Atunci A(αx) = α(Ax) = αθ = θ, deci
αx este soluţie şi prin urmare S, mulţimea soluţiilor sistemului liniar şi omogen, de matrice A,
formează un subspaţiu vectorial al lui Kn , numit subspaţiul nul al matricii A sectioşi notat
Null(A).
Mulţimea vectorilor (x, y, z)T din S coincide cu mulţimea vectorilor (x, y, z)T pentru care sis-
temul:
−2α + 3β = x
α + 2β = y
4α = z
este compatibil (⇔ există α, β ∈ R, astfel ı̂ncât v = αv1 + βv2 ). Condiţia de compatibilitate se
obţine impunând condiţia ca rangul matricii sistemului să coincidă cu rangul matricii prelungite.
Rangul matricii A a sistemului este 2. Pentru ca şi rangul matricii
−2 3 x
A= 1 2 y
4 0 z
şi astfel condiţia de compatibilitate devine: −8x + 12y − 7z = 0. Deci subspaţiul generat de
cei doi vectori este mulţimea vectorilor v(x, y, z)T din R3 ale căror coordonate verifică relaţia
−8x+12y−7z = 0, adică mulţimea soluţiilor unui sistem liniar şi omogen cu o singură ecuaţie.
10 Cursul 4, Algebră liniară
c E. Petrişor, octombrie 2007
span(S) = {w ∈ R2 |w = α1 v1 + α2 v2 , α1 , α2 ∈ R}
Înlocuind vectorii v1 , v2 cu cuplurile de numere reale ce ı̂i reprezintă şi efectuând operaţiile
avem:
span(S) = {w = (x, y)T ∈ R2 | (x, y)T = (α1 − 2α2 , −2α1 + 4α2 )T }
Deci span(S) = {w = (x, y) ∈ R2 | y = −2x ⇔ 2x + y = 0}. Din punct de vedere
geometric, subspaţiul generat de cei doi vectori coincide cu dreapta ce trece prin origine, de
ecuaţie y = −2x.
S = {v(x, y, z)T ∈ R3 | x − 3y − 5z = 0}
S este conform definiţiei mulţimea soluţiilor sistemului format dintr-o ecuaţie liniară şi omogenă:
x − 3y − 5z = 0. Pentru a determina mulţimea soluı̂ tiilor observăm că matricea sistemului este
A = [1 − 3 − 5]. ∆p = |1| este un determinant principal. Deci x este necunoscută principală,
iar α := y, β := z sunt necunoscute secundare. Deci x = 3α + 5β. Prin urmare S, mulţimea
soluţiilor se poate exprima astfel:
3α + 5β 3 5
3
S = {v ∈ R | v = α = α 1 + β 0 , α, β ∈ R}
β 0 1
Prin urmare subspaţiul S este generat de vectorii s1 = (3, 1, 0)T , s2 = (5, 0, 1)T . Deoarece
acesţi vectori sunt liniar independenţi, rezultă că o bază ı̂n S este BS = (s1 , s2 ), deci dimensi-
unea subspaţiului S este 2 (numărul de vectori din bază).
Să studiem relatia dintre vectori (liniar dependenţi sau independenţi?). Asociem vectorilor ma-
tricea
1 1 5
A = [v1 |v2 |v3 ] = 2 0 6
1 2 7
Prin transformări elemntare pe linie obţinem forma scară redusă:
1 0 3
SA = 0 1 2
0 0 0
Rezultă că matricea SA , şi deci şi A au rangul 2, diferit de numărul de vectori (3). Prin ur-
mare vectorii sunt liniar dependenţi, şi anume coloana 3, se exprimă ca o combinaţie liniară a
coloanelor 1 şi 2, adică v3 = 3v1 + 2v2 . Vectorii v1 , v2 sunt liniar independenţi.
Prin definiţie S este generat de (v1 , v2 , v3 ), deci:
S = {v ∈ R3 | v = α1 v1 + α2 v2 + α3 v3 = α1 v1 + α2 v2 + α3 (3v1 + 2v2 )
= (α1 + 3α3 )v1 + (α2 + 2α3 )v2 }
| {z } | {z }
β1 β2
Prin urmare o bază ı̂n S este constituită din vectorii (v1 , v2 ), şi astfel dimensiunea subspaţiului
S este dim(S) = 2.
Din exemplele prezenate deducem că orice subspaţiu vectorial al lui Kn este dat fie ca
mulţimea soluţiilor unui sistem liniar şi omogen, fie prin sistemul de generatori. Şi ı̂n al doilea
caz subspaţiul poate fi descris de soluţiile unui sistem liniar şi omogen. Ecuaţiile sistemului se
numesc ecuaţiile subspaţiului.
Exemplul 10. Să se determine o bază ı̂n subspaţiul vectorial S = {x ∈ R5 |Ax = θ} adică o
bază ı̂n subspaţiul vectorial al soluţiilor sistemului Ax = θ:
x1
2 −2 4 0 −10 0
x2
3 −3 −1 7 6 0
x3 =
−1 1 7 −9 −22 0
x4
7 −7 2 12 1 0
x5
Cum prin transformări elementare pe linie mulţimea soluţiilor nu se schimbă, S coincide cu
mulţimea soluţiilor sistemului ce are ca matrice forma scară redusă a lui A, adică a sistemului:
1
Cunoaşterea algoritmului nu este obligatorie. Este util doar dacă doriţi să implementatţi constituirea bazei
direct din forma scară a matricii sistemului, fără a rezolva efectiv sistemul.
12 Cursul 4, Algebră liniară
c E. Petrişor, octombrie 2007
x1
1 −1 0 2 1 0
0 x2
0 1 −1 −3 0
0
x3 =
0 0 0 0 0
x4
0 0 0 0 0 0
x5
Rangul matricii sistemului este 2 si pivoţii se află in poziţiile (1, 1), (2, 3). Deci un determinant
principal se obţine din elementele de intersecţie a liniilor 1,2 cu coloanele 1,3. Prin urmare
necunoscutele x1 şi x3 sunt necunoscute principale, iar x2 , x4 , x5 renotate respectiv, α, β, γ sunt
necunoscute secundare. Rezolvând ecuaţiile principale 2 şi 3:
x1 − α + 2β + γ = 0
x3 − β − 3γ = 0
Deci orice soluţie se exprimă ca o combinaţie liniară a vectorilor soluţie u1 , u2 , u3 ( cei trei
vectori constituie un sistem de generatori pentru subspaţiul soluţiilor. Dacă cei trei vectori sunt
liniar independenţi, atunci ei formează o bază.
Dacă presupunem că αu1 + βu2 + γu3 = θ atunci din relaţia de mai sus citită de la dreapta
spre stânga rezultă că:
α − 2β − γ 0
α 0
β+γ = 0
β 0
γ 0
adică α = β = γ = 0 şi deci vectorii sunt liniar independenţi.
Oricare ar fi sistemul Ax = θ, A ∈ Km×n , reducând matricea A la forma scară redusă, şi
identificând necunoscutele principale şi secundare, se poate arăta ca mai sus că orice soluţie
se exprimă ca o combinaţie liniară a n − r vectori din Kn , unde r este numărul de pivoţi
(sau echivalent, rangul matricii), coeficienţii combinaţiei liniare fiind necunoscutele secundare
(α, β, γ, ı̂n exemplul de mai sus).
Pentru a evita rescrierea sistemului ce are matricea SA să analizăm pe exemplul de mai sus
cum se deduce din coloanele formei scară baza din spaţiul soluţiilor sistemului.
Observăm că rezolvând sistemul având matricea scara redusă, vectorii bazei de mai sus
u1 , u2 , u3 se deduc din coloanele formei scară astfel:
4.3. Codul Hamming de detectare şi corectare a erorilor 13
• se defineşte un tablou int princ[r] şi unul int sec[n-r]. princ[i] stochează
indicele celei de-ai i-a necunoscute principale, iar sec[i] stochează indicele celei de-a i-a
necunoscute secundare.
În cazul nostru princ[2]={1, 3}, iar sec[3]={2, 4, 5}.
Din faptul că soluţia generală a sistemului este de forma:
x 2 u 1 + x 4 u2 + x 5 u 3
• În spaţiul vectorial Zn2 /Z2 suma (modulo 2) a unui vector cu el ı̂nsuşi este vectorul nul:
v + v = 0, ∀ v ∈ Zn2 . Cu alte cuvinte opusul unui vector este el ı̂nsuşi. De eemplu dacă
v = (1, 1, 0, 1, 0, 0, 1), atunci v + v = (0, 0, 0, 0, 0, 0, 0), deoarece 0 ⊕ 0 = 0 şi 1 ⊕ 1 = 0
(⊕ semnifică adunarea modulo 2).
Codul Hamming de tip (7,4)
14 Cursul 4, Algebră liniară
c E. Petrişor, octombrie 2007
Informaţia binară ce trebuie transmisă este divizată ı̂n blocuri de câte patru biţi. Înainte de
a transmite un bloc v = (b1 , b2 , b3 , b4 ) acesta este codificat, de un vector w din Z72 , adică de un
vector de 7 biţi. Cei trei biţi ce apar ı̂n plus se numesc biţi de verificare. Modul de asociere a
codului w, blocului reprezentat de v este următorul:
◮ Se constituie matricea binară H, de tip 3 × 7 (unde 3 este numărul biţilor de verificare)
ce are drept coloane vectorii nenuli din spaţiul Z32 . Plasarea acestor vectori ı̂n diferite coloane
conduce la coduri diferite. Fie de exemplu matricea:
c1 c2 c3 c4 c5 c6 c7
↓ ↓ ↓ ↓ ↓ ↓ ↓
0 0 0 1 1 1 1
H= 0 1 1 0 0 1 1
1 0 1 0 1 0 1
◮ Observăm că fiecare coloană cj se obţine ca produsul:
b1 b1
b2 b2
w = Ev = E
b3 = [u1 |u2 |u3 |u4 ]
= b 1 u1 + b 2 u 2 + b 3 u 3 + b 4 u 4
b3
b4 b4
rezultă că vectorul w, numit vector cod, este o combinaţie liniară a vectorilor din baza spaţiului
Null(H), a soluţiilor sistemului omogen de matrice H, cu alte cuvinte w este o soluţie a sis-
temului Hx = 0, adică Hw = 0.
◮ Vectorul cod w ∈ Z72 se transmite printr-un canal de comunicaţie si este receptat vec-
torul w′ ∈ Z72 . Orice vector cod receptat este testat de eroare ţinând seama că vectorii cod
transmişi corect sunt vectori din subspaţiul Null(H).
Pentru a identifica erorile să caracterizăm ı̂n prealabil vectorii din Null(H). În acest scop definim distanţa
Hamming ı̂ntre doi vectori binari w1 , w2 :
d(w1 , w2 )=numărul poziţiilor ı̂n care biţii din w1 şi w2 diferă.
De exemplu distanţa dintre w1 = (1, 1, 0, 1, 0, 0, 1)T şi w2 = (1, 0, 0, 1, 0, 1, 1)T este 2, pentru că diferă biţii
din poziţiile 2 şi 6.
Deoarece Null(H) este subspaţiu vectorial al lui Z72 , rezultă că dacă w1 , w2 ∈Null(H), atunci şi w = w1 −
w2 ∈Null(H). Deci distanţa Hamming dintre w1 , w2 este egală cu distanţa Hamming d(w1 −w2 , θ) dintre diferenţa
celor doi vectori şi vectorul nul. Cunoscând această proprietate se poate demonstra că distanţa dintre orice două
coduri w1 , w2 ∈Null(H) este mai mare sau egală cu 3. Pentru aceasta se arată că distanţa dintre w şi θ este mai
mare sau egală cu 3, d(w, θ) ≥ 3, oricare ar fi w ∈ Null(H).
Având această informaţie să ilustrăm cum poate acţiona codul Hamming dacă distanţa dintre vectorul transmis,
w, şi vectorul recepţionat, w′ , este 1,2 sau mai mare sau egală cu 3 (cu alte cuvinte ı̂n cursul transmiterii s-a eronat
un bit, doi biţi sau mai mult de doi).
Deoarece vectorul transmis w ∈Null(H), rezultă că Hw = 0 sau echivalent, dacă w = (d1 , d2 , . . . , d7 )T ,
atunci:
Hw = d1 c1 + d2 c2 + · · · + dk ck + · · · + d7 c7
unde ı̂nmulţirea şi adunarea se efectuează modulo 2, iar ck sunt coloanele matricii H. Presupunem că ı̂n cursul
transmiterii este eronat bitul dk , adică este recepţionat ca dk + 1 (dk = 0 ⇒ dk + 1 = 1, iar dk = 1 ⇒ dk + 1 =
0). Fie w′ = (d1 , d2 , . . . , dk + 1, . . . d7 )T . Atunci
Prin urmare ı̂n cazul unei singure erori codul Hamming este capabil ca ı̂n etapa de testare (calcul al produsului
Hw′ ) să identifice exact poziţia erorii, şi anume este poziţia k indicată de indicele coloanei ck = Hw′ .
În mod analog, dacă sunt eronaţi doi biţi, de exemplu din poziţiile j, k, j 6= k atunci:
Hw′ = cj + ck
Deoarece cj , ck sunt vectori nenuli din Z32 , suma lor este tot un vector nenul din Z32 , adică o coloană a matricii
Hamming, H.
Astfel testarea unui cod recepţionat w′ constă ı̂n a calcula produsul Hw′ :
Dacă un singur bit a fost eronat prin transmitere, atunci aşa cum arătat mai sus Hw′ =
cj , unde j este poziţia bitului eronat. Să arătăm că ı̂n acest caz eroarea de un singur bit poate
16 Cursul 4, Algebră liniară
c E. Petrişor, octombrie 2007
fi corectată. Şi anume dacă Hw′ = cj , atunci adunând la vectorul cod recepţionat vectorul
ej ∈ Z72 (adică adunând un 1 ı̂n poziţia celui de-al j-lea bit al lui w′ )avem
H(w + ej ) = Hw′ + Hej
Deoarece Hw′ = cj şi conform relaţiei (4.24) avem Hej = cj rezultă că H(w′ + ej ) =
cj + cj = 0 (deoarece ı̂n Zn2 suma unui vector cu el ı̂nsuşi este 0). Prin urmare w′ + ej este
soluţie a sistemului liniar şi omogen de matrice H, deci un cod admisibil, care corectează bitul
din poziţia j a codului w′ , eronat.
. Dacă ı̂n vectorul w′ există 2 biţi eronaţi, ı̂n poziţiile j, k, j 6= k, atunci Hw′ =
cj + ck 6= 0. Prin această ı̂nmulţire se deduce că vectorul recepţionat w′ este eronat dar nu poate
fi corectat corespunzător, deoarece dacă cj + ck = cℓ , atunci operaţia w′ + eℓ corectează bitul
din poziţia ℓ, nu din poziţia j, sau k. În concluzie codul Hamming, pe lângă codificare permite
şi corectarea unui singur bit transmis eronat. Dacă ı̂nsă w′ ar conţine doi biţi eronaţi, aceeaşi
metodă aplicată la corectarea unui singur bit conduce la o corectare eronată.
În concluzie codul Hamming poate detecta si corecta o singură eroare, dar nu poate face
distinţie ı̂ntre un cod cu o singură eroare sau cu două erori.
Un cod Hamming general este definit de o pereche (2k + m, 2k ), unde 2k este lungimea
unui block de biţi ce se codifică, iar 2k + m este lungimea vectorului cod obţinut după codifi-
carea blocului (cu alte cuvinte se folosesc m biţi de verificare). Codul Hamming de tip (7, 4)
corespunde cazului k = 2, m = 3. De interes particular pentru sistemele de memorie ale cal-
culatoarelor este codul Hamming de tip (72, 64) = (26 + 8, 26 ), numit SECDED (Single Error
Correction, Double Error Detection).
Decodificarea codurilor receptionate şi corectate se va discuta după ce parcurgem partea
teoretică pe care se bazează.
Exemplul 11. Pentru a evidenţia capabilitatea codului Hamming de tip (7, 4) ı̂n cazul ı̂n care ı̂n
cursul transmiterii se produc una, două, trei sau mai multe erori, considerăm un bloc de 4 biţi
reprezentat de vectorul v = (0, 1, 1, 0)T . După codificare obţinem vectorul
1
1
0
w = Ev = 0
1
1
0
a) Presupunem că s-a recepţionat
1
1
1
′
w =
0
1
1
0
Cursul 4, Algebră liniară
c E. Petrişor, octombrie 2007 17
care diferă de w ı̂n poziţia 3, adică distanţa Hamming ı̂ntre cele două coduri este 1. Calculând
Hw′ obţinem vectorul:
1
Hw′ = 1 6= 0
0
Deci w′ este identificat ca fiind eronat. Deoarece Hw′ = c3 (coloana a 3-a din matricea H,)
rezulta că prin adunarea w′ + e3 este corectat codul recepţionat, ı̂n mod corespunzător.
b) Dacă ı̂nsă se recepţionează
1
1
1
′
w = 0
0
1
0
care diferă de w prin biţii din poziţiile 3 şi 5, atunci calculând Hw′ obţinem c6 . Cum ”sistemul”
de testare ”nu ştie” care biţi au fost eronaţi, ı̂n acest caz se identifică doar că există eroare, dar
corectarea w′ + e6 este nepotrivită, deoarece nu bitul 6 a fost eronat. Deci codul Hamming
identifică erorile cauzate de modificarea a doi biţi, dar nu le corectează.
c) Dacă prin canalul de comunicaţie au fost eronaţi biţii din poziţiile 3,5,6, atunci se recepţionează:
1
1
1
′
w = 0
0
0
0
care este prima coloană din matricea E, adică un vector din Null(H) şi la testarea Hw′ se obţine
θ, deci codul recepţionat, w′ , este interpretat corect, deşi ı̂n realitate este eronat.
d) Dacă au fost eronaţi biţii din poziţiile 3, 5,7, se recepţionează
1
1
1
′
w = 0
0
1
1
Cum Hw′ = c1 sistemul identifică că este eronat codul recepţionat, dar nu ı̂l corectează ”corect”
prin operaţia H(w′ + e1 ).