3. ELEMENTE INTRODUCTIV - csit-sun.pub.rocpop/Calculatoare_Numerice_CN I/CN I_Book/CN I_3... ·...
Transcript of 3. ELEMENTE INTRODUCTIV - csit-sun.pub.rocpop/Calculatoare_Numerice_CN I/CN I_Book/CN I_3... ·...
81
3. ELEMENTE INTRODUCTIVE PRIVIND INFORMAŢIA [1][2][3]
În acest capitol vor fi examinate câteva dintre aspectele importante ale informaţiei în contextul tratării
acesteia cu ajutorul calculatorului numeric. Astfel, vor fi abordate următoarele subiecte:
- definirea şi măsurarea informaţiei;
- codificarea informaţiei: coduri de lungime fixă, coduri de lungime variabilă şi eficienţa
codificării;
- detectarea şi corectarea erorilor.
3.1 MĂSURAREA INFORMAŢIEI
Memorarea, regăsirea şi prelucrarea informaţiei reprezintă operaţii de bază întâlnite în studiul oricărui
capitol al ştiinţei calculatoarelor.
Din punct de vedere lexicografic, informaţia reprezintă cunoştinţe transmise sau recepţionate, care se
referă la circumstanţe sau fapte particulare. Sub aspect filosofic informaţia se află în următoarea relaţie
cu entităţile: data, cunoştinţa, înţelepciune: data < informaţie < cunoştinţă < înţelepciune.
Domeniul ingineriei consideră că informaţia înlătură/elimină incertitudinea. Astfel, informaţia nu are nici
o legătura cu cunoştinţa sau semnificaţia. Informaţia este, în mod natural, “ceea ce nu se poate prezice”.
În cadrul procesului de edificare a domeniului teoriei informaţiei s-au dat şi precizat o serie de definiţii
formale privind conţinutul informaţional al unui mesaj (Hartley - 1928, Kolmogorov - 1942, Wiener -
1948, Shannon - 1949 ). Sub forma cea mai generală, informaţia este considerată ca o
înlăturare/eliminare a incertitudinii.
Se consideră un sistem, care reprezintă o mulţime formată din n obiecte, având proprietatea că fiecare
obiect i posedă o probabilitate independenta pi de apariţie. Incertitudinea H, asociată acestui sistem,
este definită ca:
∑
82
Se presupune existenţa unei urne cu bile numerotate de la 1 la 8. Probabilitatea de a extrage o cifră
dată, în urma unei trageri, este egală cu
. Incertitudinea/informaţia medie asociată cu numărul selectat
poate fi calculată cu ajutorul formulei de mai sus:
∑(
(
))
(
)
Pentru a măsura incertitudinea asociată sistemului s-a folosit o unitate de măsură numită bit. Un bit este
o măsură a incertitudinii sau a informaţiei asociate unei condiţii cu două stări: fals/adevărat,
închis/deschis etc.
Cantitatea de informaţie care se câştigă este egală cu cantitatea de incertitudine înlăturată (în cazul de
faţă, prin aflarea numărului extras din urnă). În situaţia numărului selectat din urna, s-a calculat că sunt
necesari trei biţi de informaţie pentru a afla numărul de pe bila extrasă. Din punctul de vedere al
definiţiei bitului, aceasta înseamnă că este permisa punerea a trei întrebări cu răspuns de tipul Da - Nu,
pentru a cunoaşte numărul extras:
Figura 3.1. Exemplu de interogări şi răspunsuri binare privind selectarea unei bile numerotate dintr-o urnă care conţine 8 bile.
În exemplul anterior, cei trei biţi de informaţie, asociaţi cu aflarea numărului înscris pe bilă, pot fi
asamblaţi în coduri cu lungimea de trei simboluri 0 sau 1, unde 1 reprezintă simbolul asociat răspunsului
"Da", în timp ce 0 este simbolul asociat cu răspunsul "Nu". În tabelul de mai jos se prezintă două
scheme posibile de codificare reprezentând cele opt numere înscrise pe bilele din urnă:
83
Tabelul 3.1. Schemele posibile de codificare pentru cele opt numere înscrise pe bilele din urnă.
Se constată că, pentru a specifica identitatea unui număr înscris pe bila extrasă, se pot folosi mai multe
scheme de codificare. În orice schemă de codificare, care reprezintă o mulţime cu n elemente, cu
probabilităţi egale de selectare, cel puţin unul din coduri trebuie să aibă o lungime egală sau mai mare
decât măsura informaţiei asociată mulţimii date, adică:
n
i
ii ppH1
2 )(log
Astfel, în cazul unui sistem fizic, care se poate afla în 13 stări distincte, codificarea stărilor se va realiza cu
mesaje având lungimea de 4 biţi. Mesajele de 4 biţi lungime vor putea codifica 16 stări distincte.
Selectarea celor 13 mesaje, pentru codificarea stărilor sistemului, se va face pe baza unor criterii legate
de: creşterea fiabilităţii, simplitatea implementării etc.
În teoria comunicaţiilor se consideră că mesajele recepţionate, dar incomplet înţelese, conţin zgomot.
Diagrama transmiterii semnalelor, după Shannon, este următoarea:
Figura3.2. Diagrama Shannon care reliefează transmiterea semnalelor
Numărul bilei Schema 1 Schema 2
a mesajului a mesajului
1 000 001
2 001 010
3 010 011
4 011 100
5 100 101
6 101 110
7 110 111
8 111 000
Stimului
la sursăSursă Emiţător
Mesaj Mesaj transformat
Canal
Receptor
Mesaj transformat (în timp, spaţiu sau ca putere a semnalului)
Mesaj transformat
Destinaţie
Răspuns
84
Pentru a asigura transferul informaţiei între sursă şi destinaţie trebuie considerate trei aspecte: sintactic,
semantic şi pragmatic. Aspectul sintactic este legat de forma fizică de reprezentare a informaţiei
transmise, în timp ce semantica se referă la semnificaţia ataşată reprezentării sintactice. Aspectul
pragmatic implică acţiunea întreprinsă, ca urmare a interpretării (sensului ataşat) informaţiei. O
comunicaţie corectă trebuie să considere toate cele trei aspecte mai sus menţionate.
***
Dacă un sistem se caracterizează prin n evenimente cu probabilităţi egale de apariţie, în condiţiile în
care s-au obţinut informaţii, care au redus cele n evenimente la m evenimente s-au obţinut: (
)
biţi de informaţie. Când, la aruncarea unei monede se află că s-a obţinut “pajura”, s-a comunicat
(
) = 1 bit de informaţie. Adesea se pune problema cantităţii medii de informaţie conţinută într-un
şir de date. Aceasta poartă numele de entropie şi poate fi calculată cu ajutorul următoarei formule:
unde:
(
) reprezintă probabilitatea mesajului i, iar
(
) constituie informaţia din mesajul i.
Entropia este o măsură a incertitudinii medii asociate cu o variabilă aleatoare.
3.2 CODIFICAREA INFORMAŢIEI
Codificarea informaţiei se referă la reprezentarea acesteia. O codificare corespunzătoare şi eficientă se
reflectă pe mai multe niveluri. Astfel, la nivelul echipamentelor de calcul şi de memorare influenţa se
manifestă în legătură cu numărul de componente. În ceea ce priveşte nivelul eficienţei, influenţa se
referă la numărul de biţi utilizaţi. Sunt influenţate, de asemenea, nivelul fiabilităţii, sub aspectul
zgomotului şi nivelul securităţii, în ceea ce priveşte criptarea.
3.2.1 CODIFICAREA CU LUNGIME FIXĂ
În cazul în care evenimentele au aceeaşi probabilitate de apariţie, se pot utiliza codurile de lungime fixă.
Un asemenea cod trebuie să folosească un număr suficient de biţi pentru a putea reprezenta conţinutul
informaţional. De exemplu, în cazul cifrelor zecimale {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} se foloseşte un cod de 4
biţi (binar-zecimal), denumit în engleza BCD (Binary Coded Decimal). Lungimea codului (numărul de biţi)
rezultă ca fiind 3,322 conform relaţiei:
N
i i
i
M
N
N
Mentropia
1
2log
85
∑(
)
Numărul de biţi este mai mic decât 4 de unde rezultă că lungimea codului va fi 4.
De asemenea, pentru cele 84 de caractere din Engleză: A-Z (26), a-z (26), 0-9 (10), punctuaţie (9),
matematice (9), financiare (4) se foloseşte un cod binar de 7 biţi, denumit ASCII (American Standard
Code for Information Interchange). Lungimea codului ASCII rezultă din expresia de mai jos:
392,6)84(log84
12
10
1
i
biţi 7 biţi
3.2.2 CODIFICAREA NUMERELOR
Numerele pozitive se pot codifica direct, sub forma unei secvenţe de biţi, cărora li se asociază ponderi
diferite. De la dreapta la stânga, aceste ponderi reprezintă, în ordine crescătoare, puteri ale lui 2.
Valoarea v a unui număr de n biţi, codificat în acest mod, este dată de expresia:
1
0
2n
i
i
i bv
unde bi constituie rangul i (bitul i) al reprezentării.
Pentru numărul binar:
se va obţine valoarea 1721 în zecimal.
Adesea, reprezentarea numerelor în sistemul binar este greoaie, datorită numărului mare de ranguri.
Reprezentări cu lungimi mai scurte se obţin în cazul utilizării unor baze, care sunt puteri ale lui 2, de
exemplu: 8 şi 16. În aceste situaţii trecerea de la reprezentarea binară la cea octală/hexazecimală şi
invers se realizează mecanic, împărţind numărul binar, de la dreapta la stânga, în triade/tetrade binare,
cărora li se pun în corespondenţă cifrele octale/hexazecimale corespunzătoare.
211 210 29 28 27 26 25 24 23 22 21 20
0 1 1 0 1 0 1 1 1 0 0 1
1
0
2n
i
i
i bv
86
Tabelul 3.2. Codificări în bazele 8 şi 16.
Astfel, numărul binar 011010111001(2) va avea următoarele reprezentări:
octală: şi
hexazecimală:
care sunt de trei ori şi, respectiv, de patru ori mai scurte.
3.2.3 NUMERE CU SEMN, REPREZENTAREA ÎN COMPLEMENT FAŢĂ DE 2
Un număr cu semn, în reperezentarea pe n biţi, complementară faţă de 2, va avea următoarea structură
Figura 3.1. Reprezentarea unui număr cu semn
Astfel, numerele zecimale şi vor avea următoarele reprezentări binare, pe 8 biţi, în
complementul faţă de 2:
Baza 8 Baza 16
Triada binară Cifra octală Tetrada binară Cifra hexa Tetrada binară Cifrahexa
000 0 0000 0 1000 8
001 1 0001 1 1001 9
010 2 0010 2 1010 a
011 3 0011 3 1011 b
100 4 0100 4 1100 c
101 5 0101 5 1101 d
110 6 0110 6 1110 e
111 7 0111 7 1111 f
-2n-1 2n-2 ... ... ... 23 22 21 20
n biţi
Bit de semn
0 pentru ≥ 0;
1 pentru < 0
Gama de reprezentare
[-2n-1, 2n-1 - 1]
Poziţia virgulei
87
Reprezentarea numerelor întregi cu semn, în complementul faţă de 2, permite utilizarea aceleiaşi
proceduri , atât pentru adunare, cât şi pentru scădere. De asemenea, procedura se utilizează şi
în cazul numerelor fără semn.
Deplasând virgula zecimală spre stânga, se pot reprezenta şi numere fracţionare, ca în exemplul
următor:
3.2.4 CODIFICAREA CU LUNGIME VARIABILĂ
În situaţiile când evenimentele au probabilităţi diferite de apariţie se obţine mai multă informaţie
atunci când se produce un eveniment cu probabilitate mică de apariţie, decât în cazul producerii unui
eveniment cu probabilitate mare de apariţie.
Informaţia furnizată de apariţia evenimentului (
) biţi
Entropia informaţiei este ∑ (
)
Fie 4 evenimente A, B, C, D şi probabilităţile lor de apariţie pi , conform următorului tabel:
Eveniment (
)
A
1 bit
B
2,58 biţi
C
2,58 biţi
D
2,58 biţi
Cantitatea medie de informaţie biţi.
În cazul unei codificări cu lungime fixă, de câte 2 biţi, pentru fiecare eveniment, la producerea a 1000 de
evenimente trebuie folosiţi 2000 de biţi, pentru transmiterea acestor informaţii.
S-ar putea găsi o altă modalitate de codificare, care ar conduce în medie, la utilizarea a 1540 biţi?
88
În cazul unor evenimente cu probabilităţi diferite de apariţie, se vor folosi secvente mai scurte pentru
codificarea evenimentelor mai frecvente, în timp ce pentru codificarea evenimentelor mai puţin
frecvente se vor folosi secvenţe mai lungi.
Exemplul 1 Se consideră 4 evenimente A,B,C,D, cu probabilităţile de apariţie şi cu codurile asociate,
conform tabelei de mai jos:
Eveniment A B C D
Prob. Apariţie (pi)
Codificare 0 11 100 101
Informaţia medie biţi
Transmiterea informaţiei privind 1000 de evenimente necesită, în medie, 1750 biţi.
O schema de decodificare a unui mesaj ce conţine codurile unei secvenţe de evenimente A, C, D, A, B, C
etc, se conformează următoarei structuri arborescente (arborele de decodificare Huffman):
Figura 3.4. Exemplu de arbore de decodificare Huffman
Pentru a realiza o codificare mai eficientă, în mod curent, se codifică secvenţe de evenimente şi nu
evenimente individuale. Această abordare este întâlnită în algoritmii de compresie a fişierelor.
Exemplul 2 În cadrul acestui exemplu se consideră suma a două zaruri, în sensul evaluării conţinutului de
informaţie existent în suma obţinută la o aruncare. Rezultatele înregistrate în cadrul mai multor aruncări
au probabilităţi diferite. Posibilităţile de obţinere a diferitelor sume sunt prezentate mai jos:
0 1
0 1A
B0 1
C D
89
Tabelul 3.3. Posibilităţi de obţinere a diverselor sume.
Suma Posibilităţi
2 1+1
3 1+2, 2+1
4 1+3, 2+2, 3+1
5 1+4, 2+3, 3+2, 4+1
6 1+5, 2+4, 3+3, 4+2, 5+1
7 1+6, 2+5, 3+4, 4+3, 5+2, 6+1
8 2+6, 3+5, 4+4, 5+3, 6+2
9 3+6, 4+5, 5+4, 6+3
10 4+6, 5+5, 6+4
11 5+6, 6+5
12 6+6
MIT 6371
biţi;
biţi
biţi
biţi
biţi
biţi
biţi
biţi
biţi
biţi
biţi
Informaţia medie, la o aruncare, furnizată de către suma celor două zaruri este următoarea:
∑(
(
)) ∑( (
))
În continuare se pune problema codificării sumelor obţinute în cadrul aruncărilor a două zaruri.
Coduri de lungime fixă
Cel mai mare întreg după 3,274 este 4. Astfel, cu 4 biţi se pot codifica cele 11 valori ale sumelor. Vor mai
rămâne 5 coduri neutilizate, corespunzătoare lui: 0, 1, 13, 14 şi 15.
90
Coduri de lungime variabilă
Se poate găsi o soluţie de codificare mai bună, utilizând coduri de lungime variabilă, plecând de la
conţinuturile informaţionale diferite, ale diferitelor combinaţii obţinute la aruncarea celor două zaruri.
Astfel, se poate construi un arbore binar, selectând recursiv cele două simboluri cu cea mai mică
probabilitate, combinându-le apoi într-un nod şi inserând acest nod ca un nou simbol a cărui
probabilitate de apariţie este egală cu suma probabilităţilor de apariţie ale celor doi copii.
MIT 6371
Figura 3.6. Arborele de decodificare Huffman (2 - 10011; 3 – 0101; 4 – 011; 5 – 001; 6 – 111; 7 – 101; 8 – 110; 9 – 000; 10 – 1000; 11 – 0100; 12 - 10010).
Procesul continuă până când se ajunge la un singur simbol. Rezultatul acestei proceduri este arborele de
mai sus, în cadrul căruia au fost atribuite coduri fiecărui simbol, prin etichetarea fiecărui copil, din
extrema dreaptă cu “1” şi a fiecărui copil din stânga cu eticheta “0”.
Codificarea pentru fiecare simbol particular se obţine prin parcurgerea arborelui pe o cale ce porneşte
de la rădăcina acestuia până la simbolul care interesează. Această formă de codificare cu lungime
variabilă poarta numele de codificare Huffman
3.3. EFICIENŢA CODIFICĂRII
Eficienţa unei metode de codificare poate fi măsurată prin diferenţa între conţinutul informaţional
(entropia) al unui şir de simboluri şi dimensiunea medie a codului.
91
Dimensiunea medie a codului stabilit pentru sumele obţinute la aruncarea a două zaruri se calculează
astfel:
Rezultatul obţinut: se apropie destul de mult de
În continuare se pune problema găsirii unor metode mult mai eficiente de codificare. Schemele de
codificare, care îşi propun să corespundă conţinutului informaţional al unei secvenţe de date, se bazează
pe reducerea redundanţei. Acestea, în esenţă, sunt tehnici de compresie a datelor.
În multe cazuri se urmăreşte creşterea redundanţei în vederea creşterii rezistenţei la zgomot a şirului de
date sau a simplificării manipulării datelor, prin stabilirea unor coduri de lungime fixă ( coduri detectoare
şi corectoare de erori).
3.4 DETECTAREA ŞI CORECTAREA ERORILOR
Se presupune că se doreşte să se transmită sigur rezultatul aruncării unei monede, ceea ce corespunde
unei informaţii de un bit. Dacă pe parcursul transmisiei a apărut o eroare de un singur bit, un rezultat
“0” va fi recepţionat ca”1” şi invers. Ambele coduri sunt valide şi nu se poate stabili, la recepţie, faptul că
a apărut o eroare în timpul transmisiei.
În acest context se pune problema numărului de poziţii binare în cadrul cărora biţii corespunzători
pentru două coduri valide, de aceeaşi lungime, sunt diferiţi. Aceasta mai poartă numele de distanţa
Hamming. Astfel, într-un caz particular, modificarea unui bit într-un rang dat al unui cod să nu-l
transforme pe acesta într-un alt cod valid. În cazul aruncării unei monede codurile celor două rezultate
posibile au o distanţă Hamming egală cu unu.
3.4.1 DETECTAREA ERORILOR
În mod natural se doreşte un sistem de codificare în cadrul căruia o eroare de un singur bit să nu
producă un alt cod valid. Pentru a asigura detectarea unei erori de un singur bit, într-un cod de lungime
oarecare, se adaugă un bit de paritate. Astfel, distanţa Hamming între două coduri valide devine egală
cu 2. Ca exemplu, mai jos, se prezintă o diagramă de codificare a rezultatului aruncării unei monede,
92
folosind un bit suplimentar de paritate pară, ceea ce înseamnă ca bitul de paritate va fi astfel ales încât
numărul total de unităţi din cuvântul cod final să fie par.
Figura 3.7. Diagrama de codificare a rezultatului aruncării unei monede.
Dacă D este distanţa Hamming minimă între două cuvinte cod, atunci se pot detecta până la
(D-1) erori la nivel de bit.
3.4.2 CORECTAREA ERORILOR
Mărind distanţa Hamming între două cuvinte – cod valid la 3, se poate garanta faptul că seturile de
cuvinte generate de erori la nivelul unui singur bit nu se suprapun. În cazul în care se detectează o
eroare, aceasta se poate corecta, întrucât poziţia bitului eronat poate fi localizată.
Aceasta rezultă din diagrama-hipercub de mai jos:
Figura 3.8. Localizarea poziţiei bitului eronat folosind o diagrama-hipercub.
Dacă D este distanţa Hamming minimă între două cuvinte-cod valide, se pot corecta ⌊
⌋ biţi eronaţi.
93
Întrebări:
(1) Se pot detecta în mod sigur doi biţi eronaţi în timp ce se corectează o eroare de un bit ?
(2) Este necesară întotdeauna triplarea numărului de biţi ?
(3) X este un număr binar de 8 biţi necunoscut. Se dă un alt număr Y, de 8 biţi, despre care se
spune că are o distanţă Hamming faţă de X egală cu unu. Câţi biţi de informaţie despre
numărul X s-au dat ?
Răspuns (3): Numărul X poate avea 256 de valori şi poate fi pus în corespondenţă cu apariţia tot atâtor
evenimente. Numărul dat Y va diferi de X printr-un bit în cele 8 ranguri, astfel, pentru X vor exista 8
posibilităţi de apariţie. În concluzie, s-au furnizat: (
) biţi de informaţie.
3.5 SCHEMA DE CODIFICARE CU 4 BIŢI A ERORILOR
Prin folosirea a 4 biţi, pentru 3 biţi de informaţie, se pot genera 8 coduri cu distanţa Hamming egală cu
1, ceea ce permite detectarea unei erori la nivelul unui singur bit. Formatele de biţi, care conţin o
eroare, diferă de formatele codurilor valide prin paritate, numărul de unităţi fiind impar. Aceasta rezultă
din diagrama de mai jos, care constituie o reprezentare plană a hipercubului corespunzător codificării.
MIT 6371
Figura 3.9. Reprezentarea plană a hipercubului generat pentru codificare.
Din punctul de vedere al numărului de coduri separate printr-o distanţă Hamming egală cu 3, schema de
codificare cu 4 biţi nu este mai bună decât schema de codificare cu 3 biţi.
94
După cum se vede din diagrama de mai jos, există doar două coduri, care sunt separate printr-o distanţă
Hamming egală cu 4. Aceasta va permite corectarea erorilor de 1 bit, cât şi detectarea erorilor de 2 biţi.
MIT 6371
Figura 3.10. Două coduri separate printr-o distanţă Hamming egală cu 4.
3.6 SCHEMA DE CODIFICARE CU 5 BIŢI A ERORILOR
Această schemă asigură obţinerea a mai mult de două coduri separate printr-o distanţă Hamming egală
cu 3. Hipercubul de mai jos conţine 4 coduri de câte 5 biţi {00000, 01111, 10101, 11010} separate
printr-o distanţă Hamming ≥3
MIT 6371
Figura 3.11. Hipercubul cu 4 coduri de câte 5 biţi.
În aceste condiţii se poate corecta o eroare de 1 bit şi se pot detecta unele dintre erorile de 2 biţi, dar nu
toate.
95
3.7 APLICAŢII ALE TEORIEI CODURILOR
Codificarea permite soluţionarea multor probleme:
detectarea erorilor multi-bit: verificarea redundanţei ciclice (CRC);
corectarea erorilor în rafală: coduri Reed-Solomon;
îmbunătăţirea raportului semnal/zgomot (S/Z): codificări/decodificări Viterbi, PRML.
În practică se utilizează combinaţii de coduri diferite. De exemplu, în canalul numeric receptor-satelit
(DBS TV):
Figura 3.12. Canalul numeric receptor-satelit.
3.8 CONCLUZII
Informaţia rezolvă incertitudinea;
Evenimente cu probabilităţi egale de apariţie:
datele care reduc apariţiile de evenimente de la N la M furnizează (
) biţi de
informaţie;
se utilizează coduri de lungime egală;
codificarea numerelor: complementul faţă de 2, pentru numerele cu semn.
Evenimente cu probabilităţi egale de apariţie:
apariţia evenimentului i, care are probabilitatea de apariţie furnizează (
) biţi
de informaţie;
numărul mediu de biţi =
i
ip
p1
log 2 ;
se utilizează coduri cu lungime variabilă.
Pentru a detecta D biţi eronaţi: distanţa Hamming > D;
Pentru a corecta D biţi eronaţi: distanţa Hamming >
96
3.9 PROBLEME *
3.9.1.PROBLEME PRIVIND MĂSURAREA INFORMAŢIEI.
1.1 Într-o urnă sunt plasate bilete cu numele a 5 femei şi 3 bărbaţi. Dacă se comunică faptul că a
fost extras un bilet cu numele unui bărbat, câtă informaţie a fost transmisă?
1.2 Dispunând de un pachet de 52 de cărţi, plasate în ordine aleatoare, cu feţele în jos, câţi biţi de
informaţie se vor obţine la extragerea:
a. primei cărţi, b. celei de-a cincea cărţi, c. a ultimei cărţi.
1.3 Fie X un număr binar de n biţi (n > 3). Se comunică faptul că primii 3 biţi ai numărului X sunt
001. Câţi biţi de informaţie despre numărul X au fost transmişi ?
3.9.2 PROBLEME PRIVIND DETECTAREA ŞI CORECTAREA ERORILOR, COMPRESIA
2.1 Diferitele scheme de codificare, inclusiv metoda Huffman, dedică mai mulţi biţi pentru
codificarea:
a simbolurilor care transportă mai multă informaţie,
a simbolurilor care transportă cea mai puţină informaţie,
a simbolurilor care par a se repeta consecutiv,
a simbolurilor care conţin informaţie redundantă ?
2.2 Se dau următorii arbori de decodificarea Huffman, pentru codurile de lungime variabilă
corespunzătoare următoarelor 5 simboluri: A, B, C, D şi E:
Utilizând Arborele 1 să se decodifice următorul mesaj: "01000111101".
* MIT 6371
B C D E
A
A B C
D E
0 1
0 10 1
0 10 1
0 1
0 10 1
Arborele 1 Arborele 2
97
2.3 Se presupune că are loc codificarea de mesaje cu următoarele probabilităţi de apariţie pentru
fiecare dintre cele 5 simboluri: p(A) = 0,5; p(B) = p(C) = p(D) = p(E) = 0,125. Care dintre cele două
posibilităţi de codificare de mai sus (Arborele 1 sau Arborele 2) va genera cele mai scurte mesaje
codificate?
2.4 Utilizând probabilităţile pentru A, B, C, D şi E date mai sus, să se construiască un arbore binar
de decodificare pentru coduri de lungime variabilă folosind un algoritm simplu “greedy”, după cum
urmează:
Se începe cu setul de S simboluri, care trebuie codificate, împreună cu probabilităţile
P(x) pentru fiecare simbol x. Suma tuturor probabilităţilor este 1. Probabilităţile
măsoară frecvenţele de apariţie ale fiecărui simbol în şirul de intrare.
Se repetă următorii paşi până când în S rămâne un singur simbol:
Se selectează doi membri din S, care au asociate cele mai mici probabilităţi. În exemplul dat, D şi E
pot fi primele noduri alese.
Se înlătură simbolurile selectate din S şi se creează un nou nod în arborele de decodificare ai cărui
copii (subnoduri) sunt simbolurile înlăturate. Se marchează ramura din dreapta cu “0” şi ramura din
stânga cu “1”. Astfel, la prima iteraţie, se va forma primul nod intern, de pe cel mai jos nivel (care
conduce la D şi E).
Se adaugă la S noul simbol (de exemplu “DE”), care va reprezenta un nou nod. Se atribuie acestui
nou simbol o probabilitate egală cu suma probabilităţilor simbolurilor pe care le înlocuieşte.
2.5. Codificarea Huffman este utilizată pentru a codifica compact o serie de păsări, dintr-o rezervaţie.
Daca 50% dintre păsări sunt grauri, iar restul îl reprezintă alte specii, câţi biţi se vor folosi pentru a
codifica graurii?
2.6 Studentul Bitescu, de la Calculatoare, a inventat un nou limbaj, AEI,care constă numai în 5
vocale: "A", "E", "I", "O" şi "U". Acestea apar în mesaje cu următoarele probabilităţi:
Litera Probabilitatea de apariţie
A p(A) = 0,15
E p(E) = 0,4
I p(I) = 0,15
O p(O) = 0,15
U p(U) = 0,15
98
2.6.1 Dacă se afirmă că prima litera a unui mesaj este “A”, să se stabilească expresia pentru
numărul de biţi de informaţie furnizaţi.
2.6.2 Bitescu încearcă să găsească un cod de lungime fixă pentru AEI, care să-i permită să
detecteze şi să corecteze erorile la nivelul unui singur bit. Să se prezinte restricţiile pe
care le va întâmpina Bitescu la codificarea fiecărei litere, în vederea realizării
dezideratelor propuse.
2.6.3 Bitescu este interesat ca să transmită mesaje AEI cu cât mai puţini biţi posibil. Se
consideră că fiecare literă este codificată separat. Ajutaţi-l să creeze un cod de lungime
variabilă care să minimizeze numărul mediu de biţi transmişi pentru fiecare literă a
mesajului.
2.7 Pentru protecţia informaţiei stocate sau transmise se pot adăuga datelor biţi de verificare, care
vor facilita detectarea şi corectarea erorilor. Astfel, o schema pentru detectarea erorilor singulare de
1 bit constă în adăugarea unui bit de paritate p:
b0 b1 b2 bN-1 p
Când se utilizează paritatea pară, p se alege astfel încât numărul de biţi egali cu “1“, inclusiv în bitul
de paritate să fie par; la paritatea impară numărul de biţi va fi impar. În continuare se va considera
paritatea pară.
Care dintre şirurile de biţi următoare, prevăzute cu bit de paritate au erori detectabile?
(1) 11101101111011011
(2) 11011110101011011
(3) 10111110111011110
(4) 00000000000000000
2.8 Pentru a construi un cod cu corectarea erorii (ECC) se vor adăuga biţi suplimentari, pentru a
depista poziţiile biţilor eronaţi. Există, în acest sens, numeroase scheme. Una dintre acestea, pentru
detectarea şi corectarea unei erori singulare, consta în organizarea datelor pe linii şi coloane,
adăugând apoi biţii de paritate pară pentru fiecare linie şi fiecare coloană. Următoarea organizare va
asigura protecţia a 9 biţi de date:
99
b0,0 b0,1 b0,2 plinie0
b1,0 b1,1 b1,2 plinie1
b2,0 b2,1 b2,2 plinie2
pcol0 pcol1 pcol2
O eroare singulară de 1 bit de date ( ) va genera două erori de paritate, una în linia I şi cealaltă în
coloana J. O eroare singulară într-unul din biţii de paritate va genera numai o singură eroare de
paritate, pentru linia sau coloana corespunzătoare. Astfel, după calculul parităţii, pentru fiecare linie
şi coloană, în cazul apariţiei unei erori pentru linia şi coloana dată, inversând valoarea bitului de la
intersecţia acestora se va realiza corectarea erorii. Dacă se detectează o singură eroare de paritate,
datele sunt corecte iar eroarea a fost într-unul dintre biţii de paritate.
Să se furnizeze datele corecte pentru fiecare dintre blocurile de date protejate cu ECC, la nivel de
linii şi coloane
(1) 1011 (2) 1100 (3) 000 (4) 0111
0110 0000 111 1001
0011 0101 10 0110
011 100 100
2.9 Liniile şi coloanele ECC pot detecta, de asemenea, erori de câte doi biţi (ex., 2 biţi de date sunt
biţi de verificare modificaţi). Să se evidenţieze tipurile de erori la nivelul a 2 biţi, care nu se pot
detecta.
2.10 În perioada în care se utilizau cartele perforate, cifrele zecimale erau reprezentate prin codurile
speciale 2 din 5. După cum arată şi numele două dintre cele 5 poziţii binare erau încărcate cu unităţi
după cum se vede din tabelul de mai jos:
Codul 2 din 5 Zecimal
11000 1
10100 2
10010 3
10001 4
01100 5
01010 6
01001 7
00110 8
00101 9
00011 0
Care este cea mai mică distanţă Hamming între două coduri 2 din 5?.
100
2.10.a Să se caracterizeze tipurile de erori (ex., de unul sau doi biţi), care pot fi sigur/fiabil
detectate în codul 2 din 5.
2.10.b Paritatea pară reprezintă o altă schemă de detectare a erorilor. Daca se trece de la codul
2 din 5 la un cod de 5 biţi, care include un bit de paritate pară , câte date pot fi suplimentar
codificate?
2.11 Codul Hamming pentru corectarea unei erori singulare necesita aproximativ biţi de
verificare, pentru a corecta erori singulare, de un bit. Se începe cu reenumerarea biţilor de date cu
indici care nu sunt puteri ale lui 2:
Indicii pentru 16 biţi de date = 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21
Ideea este aceea de a calcula biţii de verificare pentru subseturile de date, astfel încât o eroare de 1
bit să producă un set de erori de paritate, care în mod unic indică indicele bitului eronat:
p0 = paritate para pentru biţii de date 3, 5, 7, 9, 11, 13, 15, 17, 19, 21
p1 = paritate para pentru biţii de date 3, 6, 7, 10, 11, 14, 15, 18, 19
p2 = paritate para pentru biţii de date 5, 6, 7, 12, 13, 14, 15, 20, 21
p3 = paritate para pentru biţii de date 9, 10, 11, 12, 13, 14, 15
p4 = paritate para pentru biţii de date 17, 18, 19, 20, 21
De remarcat faptul că fiecare bit de date apare în cel puţin două calcule de bit de paritate, astfel
încât o eroare de un singur bit de date va produce cel puţin două erori de paritate. Atunci când se
verifică câmpul de date protejat, dacă numărul de erori de paritate este egal cu 0 sau 1, biţii de date
sunt în regulă (mai exact, o eroare de paritate singulară arată că un bit de paritate este incorect).
Dacă sunt detectate două sau mai multe erori de paritate, atunci erorile identifică exact care bit a
fost eronat.
2.11.1 Care este relaţia între indicele unui bit particular de date şi subsetul de verificare în care
acesta apare? (Indicaţie: se consideră reprezentarea binară a indicelui)
2.11.2 Dacă calculele de paritate referitoare la p0, p2 şi p3 indică erori, considerând o eroare
de un bit, care este indicele bitului eronat de date?
101
2.11.3 SECC Hamming nu detectează toate erorile de câte doi biţi. Să se caracterizeze tipurile
de erori la nivelul a doi biţi, care nu vor fi detectate. Să se sugereze o extensie la SECC
Hamming, care permite detectarea tuturor erorilor la nivelul a doi biţi.
3.10 RĂSPUNSURI
1.1 Cunoscând că, în total sunt n = 8 nume şi că extragerea a constatat că este vorba de numele
unui bărbat, numărul selecţiilor posibile s-a redus la m = 3. Conform formulei (
) s-au obţinut
(
) biţi de informaţie. Probabilitatea de a extrage numele unui bărbat este
astfel
cantitatea de informaţie obţinută va fi: (
) (
) = (
).
(
) biţi de informaţie.
(
) biţi de informaţie.
(c) (
) = 0 biţi de informaţie.
1.3 Intuitiv, întrucât s-a dat informaţie despre 3 biţi din X, se apreciază că au fost daţi 3 biţi de
informaţie. Trecând la formule: există
numere binare de câte n biţi şi numere binare care
încep cu 001. Astfel au fost transmişi: (
) = 3 biţi de informaţie.
2.1 Pentru a menţine mesajele cât mai scurte posibil, simbolurile care apar cu frecvenţa mare sunt
codificate cu mai puţini biţi, în timp ce simbolurile care apar rar sunt codificate cu mai mulţi biţi.
2.2 Pentru decodificare se porneşte de la rădăcina arborelui, parcurgând rangurile pe măsura
traversării acestuia pentru a atinge un nod frunză. Se repetă procedura până la epuizarea tuturor
rangurilor numărului. Prelucrarea se efectuează de la stânga la dreapta.
"0" => A; "100" => B; "0" => A; "111" => E; "101" => C
2.3 Folosind Arborele 1, lungimea aşteptată a codificării pentru un simbol este:
0,2)(3)(3)(3)(3)(1 EpDpCpBpAp
Folosind Arborele 2, lungimea aşteptată a codificării pentru un simbol este:
102
25,2)(3)(3)(2)(2)(2 EpDpCpBpAp
În concluzie, codificarea pe baza Arborelui 1 va conduce, în medie, la cele mai scurte mesaje.
2.4
125,0
,125,0
,125,0
,125,0
,5,0
EDCBAS
Se aleg arbitrar D & E
Se codifică: "0" => D, "1" => E
25,0
,125,0
,125,0
,5,0
DECBAS
Se aleg B & C
Se codifică: "0" => B, "1" => C
25,0
,25,0
,5,0
DEBCAS
Se aleg BC & DE
Se codifică: "00" => B, "01" => C, "10" => D, "11" => E
5,0
,5,0
BCDEAS
Se aleg A & BCDE
Codificarea: "0" => A, "100" => B, "101" => C, "110" => D, "111" => E
0,1
ABCDES
Acesta este Arborele 1 de mai sus. Selectarea lui D şi E ca prime simboluri, care se combină, a fost
arbitrară. Puteau fi alese oricare alte două simboluri dintre B, C, D şi E. Astfel, există multe codificări
plauzibile pentru acest exemplu, date fiind probabilităţile egale ale acestor 4 simboluri.
2.5 Folosind algoritmul de mai sus - 1 bit.
2.6.1 Folosind formula dată în cadrul cursului se va obţine: (
)
103
2.6.2 Fiecare cod trebuie să difere de celelalte coduri prin cel puţin 3 poziţii, adică să aibă distanţa
Hamming ≥ 3. Aceasta va asigura faptul că fiecare cuvânt-cod recepţionat (chiar şi acelea cu
un singur bit eronat) vor fi asociate cu o sursă dată de cod.
2.6.3. Folosind algoritmul “greedy”, descris mai sus se va obţine:
15,0
,15,0
,15,0
,4,0
,15,0
UOIEAS
Se aleg arbitrar O & U
Se codifică: "0" => O, "1" => U
3,0
,15,0
,4,0
,15,0
OUIEAS
Se aleg A & I
Se codifică: "0" => A, "1" => I
3,0
,4,0
,3,0
OUEAIS
Se aleg AI & OU
Se codifică: "00" => A, "01" => I, "10" => O, "11" => U
4,0
,6,0
EAIOUS
Se aleg E & AIOU
Se codifică: "0" => E, "100" => A, "101" => I, "110" => O, "111" => U
1,0
AEIOUS
Se poate observa că atribuirile simbolurilor pentru codificările “0” şi”1” au fost arbitrare şi că, la
fiecare nivel, ele au putut fi interschimbate. Astfel, interschimbarea la nivelul ultimului pas ar fi dus
la următoarea codificare:
"1" => E, "000" => A, "001" => I, "010" => O, "011" => U,
104
care conduce la aceiaşi valoare medie de biţi/simbol ca şi codificarea anterioară.
2.7 Şirurile 1 şi 3 au erori detectabile. De observat că paritatea permite detectarea erorilor de un bit
(sau a erorilor de un număr impar de biţi).
2.8 (1) 0011 (2) 1100 (3) 000 (4) 0110
0110 0000 101 1001
0011 0101 10 0110
011 100 100
(1) şi (3) au erori de un singur bit, (2) nu are erori detectabile, iar (4) are o eroare în bitul de
paritate. Rangurile reprezentate în roşu constituie valorile corecte.
2.9 Dacă biţii de paritate detectează o eroare pentru o singură coloană şi o singură linie, aceasta se
va interpreta ca o eroare în poziţia corespunzătoare a datei. Apariţia a două erori nu a fost
detectată, şi mai rău, valoarea din poziţia corespunzătoare a datei a fost modificată, de la cea
corectă la una incorectă.
2.10 Distanţa Hamming între două coduri este numărul de poziţii de bit în care cele două coduri
diferă. În cazul de faţă distanţa Hamming este egală cu 2.
2.10.a Codurile Hamming cu distanţa 2 pot detecta o eroare de 1 bit. Codul 2 din 5 poate
detecta erori de 3 biţi, dar nu erori de 2 biţi. În mod normal, când se spune că un cod detectează
erori de n biţi, se consideră că detectează erori de m biţi, unde m < n. Conform acestei
convenţii, se poate spune că, codul 2 din 5 detectează erori de 1 bit.
2.10.b La un cod cu 4 biţi de date şi 1 bit de paritate există 16 posibilităţi de a codifica datele, cu
6 mai mult decât în cazul codului 2 din 5.
2.11.1 Rangul i în reprezentarea binară a indicelui bitului de date indică faptul că indicele trebuie să
fie inclus în calculul lui pi. De exemplu, primul bit de date (al cărui indice este 3 = 00011) va fi utilizat
în calculul parităţii pentru biţii de paritate p0 şi p1. În mod asemănător bitul 6 de date (care are
indicele 10 = 01010) va fi utilizat pentru calculul biţilor de paritate p1 şi p3. Întrucât nici unui bit de
date nu i-a fost atribuit un indice, care să fie o putere a lui 2, se poate garanta faptul că fiecare bit de
date este utilizat în calculul a cel puţin 2 biţi de paritate diferiţi.
105
2.11.2 Trebuie să se determine indicele datei, care apare în calculele pentru p0, p2 şi p3, dar şi in
calculele pentru p1 şi p4. Indicii 13 şi 15 apar în p0, p2 şi p3, dar indicele 15 apare în calculul pentru
p1. Astfel, indicele bitului de date eronat este 13.
Se poate construi indicele bitului eronat de date direct din calculul de paritate folosind ei = 1, dacă
pi este eronat sau ei =0, dacă nu este eronat. Astfel, dacă p0, p2 şi p3 sunt eronaţi, iar alţi nu sunt,
indicele este e4e3e2e1e0 = 01101 = 1310
.
2.11.3 Dacă apare o eroare în doi biţi de paritate separaţi, aceasta se va interpreta greşit ca o
eroare la nivelul unui bit singular de date. De asemenea, când anumite perechi de biţi de date au
erori, eroarea la nivelul celor doi biţi se insinuează ca fiind eroare la nivelul unui singur bit într-un
alt bit, fără nici o legătură (ex. Biţii cu indicii 19 şi 21 sunt eronaţi)
Aceste situaţii pot fi detectate prin adăugarea unui bit suplimentar de paritate, p5, care este bitul de
paritate pentru ceilalţi biţi de date şi paritate. Dacă un bit singular de date este eronat, acest bit va
indica o eroare. Dacă exact doi biţi sunt eronaţi, p5 nu va indica eroare, dar p0, p1,…p4 vor indica
prezenţa unor erori (cu toate că indicaţia se referă la un bit eronat de date). Astfel, dacă
examinarea lui p0, p1, ..., p4 sugerează apariţia unei erori, se va verifica p5, pentru a fi siguri ca a
apărut numai o eroare. Dacă p5 nu indică o eroare, atunci a apărut o eroare la nivelul a doi biţi.
BIBLIOGRAFIE:
[1] Terman Chris. Computation Structures: 6004.lcs.mit.edu
[2] Chen Mike, Hao Ming Ming, Kwan Vickie, Zaramian Nancy. Arithmetic Coding :
http://www.cs.mcgill.ca/~cs251
[3] Chong Margaret, 6.004 Handbook, 2003. 6004.lcs.mit.edu
106