Capitolul 1

Report
UNIVERSITY POLITEHNICA of BUCHAREST
DEPARTMENT OF COMPUTER SCIENCE
Conf. Dr. Ing. Costin-Anton Boiangiu
<[email protected]>
Notare (1)
 [60%] Activitate in timpul semestrului
(laborator/proiect)
 [05%] Faza documentare si raport preliminar
 [10%] Documentatie proiect
 [50%] Implementare, optimizari, paralelizari
 [05%] Validarea rezultatelor obtinute (scenarii de test)
 [30%] Raport final, articol revista
 [10%] Activitate in timpul semestrului (curs)
 [50%] Prezenta
 [50%] Grad de participare la discutii in cadrul
prezentarilor colegilor
Notare (2)
 [10%] Prezentare in cadrul cursului
 [60%] Calitatea prezentarii si claritatea expunerii
 [40%] Calitatea cercetarii depuse in domeniul prezentat si
abilitatea de a raspunde intrebarilor conexe
 [20%] Examen Final (cu orice fel de documentatie scrisa pe
masa) – o idee/abordare originala plus algoritmul aferent
pentru rezolvarea unei probleme practice din cadrul ariilor
definite de curs
 [50%] Descriere idee/abordare
 [25%] Demonstratie matematica
 [25%] Algoritm (pseudocod apropiat de un limbaj de
programare)
Criterii Promovare
Pentru promovare trebuie sa:
 Obtineti:
 50% din punctajul din timpul anului
 50% din punctajul final
 Sustineti o prezentare in fata colegilor, in cadrul
cursului, pe baza unei programari preliminare
Precizari Importante (1)
 Alegerea prezentarii:
 Deadline: 16 octombrie, ora 22:00, cerere pozitii pe site-ul cursului
si alocare in ordinea sosirii cererilor
 Se pot alege teme din cadrul articolelor upload-ate pe site sau
altceva in domeniul cursului, de comun acord
 Prezentarea va fi trimisa in fiecare luni de dinaintea cursului pana la
ora 22:00, pe e-mail-ul [email protected],ro, urmand a fi
postata pe site-ul de curs pentru a putea fi vizualizata de toti cei
interesati.
 Prezentarile din prima saptamana vor beneficia de un bonus de 1
punct, iar in cea de a doua de 0.5 puncte
 Alegerea proiectului
 Deadline: 16 octombrie, ora 22:00
 Pentru fiecare saptamana intarziere se scade 1 punct din nota de
proiect
Precizari Importante (2)
 Predarea proiectului (implementare)
 Pentru cei care nu echivaleaza examen: ultimul laborator
 Pentru cei care echivaleaza examen: preziua examenului
 Predarea proiectului (raport cercetare, articol
conferinta/revista)
 Pentru cei care nu echivaleaza examen: ultimul laborator
 Pentru cei care echivaleaza examen: preziua examenului
 Pentru predare inainte de termen se acorda bonus de 0.5
puncte pe saptamana in cadrul activitatii de laborator/proiect
 Cei care sunt acceptati cu un articol la o conferinta/revista
importanta (necesita validare) primesc 10 la aceasta
materie!
Ce este compresia?
 Definitia 1: Compresia este stiinta reprezentarii datelor intr-o
forma compacta
 Definitia 2: Compresia este procesul de minimizare a spaţiului
ocupat sau a timpului necesar transmiterii unei anumite cantităţi
de informaţie
 Analogie fizica: impachetarea unei valize
7
De ce compresie?
 In lumea fizica
 Insuficienta spatiului
 In lumea digitala
 Intrebare: Capacitatea de stocare/transmitere creste exponential. Merita
efortul?
 Raspuns: Da, mai multa viteza.
 Exemple:

1 sec de audio CDDA:


1 sec de audio HD:



44100 samples x 2 channels x 16 bits/sample = 1,411,200 bits
192,000 x 2 x 24/32 = 9,216,000/12,288,000 bits
1 sec de video CCIR 601 = 20+ MB
1 frame VGA (RGB):

1024 x 768 x 24 = 18,874,368 bits
8
De ce compresie?
 Alte exemple
 HDTV:
 Pana la 2,985 Mbps (1920 x 1080 x 24 x 60)
 Cablu HDMI 5-10 Gpbs
 NHK’s 8K:
 7680 x 4320 x 24 x 30 = 23,880 Gpbs (!)
 Compresie


Audio 28Mbps  7-28Mbps
Video 24Gbps  180-600 Mbps
9
De ce compresie?
 Concluzie – fara compresie:
 Multe aplicatii/servicii nu ar fi functionale

Ex., streaming video
 Alte servicii ar fi mult mai scumpe

Ex. Telefonie analogica vs. digitala
 De ce nu am tine datele compresate mereu?
 Majoritatea formatelor de date sunt proiectate pentru
achizitie/consum nu si pentru stocare eficienta
10
Terminologie
original
x
compresat
Compresie
y
decompresat
Decompresie
x’
 Metodele de compresie pot fi împărţite în:
 metode de compresie cu pierdere
 metode de compresie fără pierdere
11
Terminologie
 Factorul de compresie:|x|/|y|
 |x| reprezinta lungimea in biti a mesajului initial, iar |y|
reprezinta lungimea in biti a mesajului codificat


Ex.: |x| = 65,536, |y| = 16384, compresie = 4:1
sau, marimea datelor a fost redusa la (|x|-|y|)/|y| = 75%
 Alte marimi ale codificarii
 Biti / esantion (bits per sample)

Ex. ASCII: 8 bits/char, RGB: 24/48/72 bits/pixel
 Distorsiune (metode cu pierderi)
 Raportul dintre diferenta dintre x si x’ perceputa de om si
diferenta matematica dintre x si x’
12
Compresia cu pierdere
 Metodele de compresie cu pierdere de informaţie sunt
folosite în special în transmisia semnalului audio şi video,
unde pierderea de informaţie
 au ca rezultat o scădere a calităţii sunetului, respectiv
imaginii
13
Compresia fara pierdere
 Conceptul de compresie de date fără pierdere pare
imposibil la prima vedere, dar o analiză mai atentă face ca
această idee, de compresie fără pierdere, să aibă sens
 Dacă ne gândim la prescurtările din viaţa de zi cu zi
(abrevieri: prof., etc., CEC, ş.a.) acestea apar ca o formă
primitivă a compresiei de date
 Compresia de date fără pierdere, prezentă în programele
de arhivare, în sistemele de transmisiune a datelor, a
evoluat de-a lungul timpului pornind de la algoritmi
simpli (suprimarea zerourilor, codarea pe şiruri) şi
ajungând la algoritmii complecşi folosiţi în prezent
14
Compresia fara pierdere
 Metodele de compresie fără pierderi au la bază ideea că, în
general, cantitatea de informaţie prelucrată (transmisă,
depozitată) conţine o anumită redundanţă care se datorează:
 distribuţiei caracterelor (unele caractere au o frecvenţă de apariţie
mult mai mare decât altele)
 repetării consecutive a unor caractere;
 distribuţiei grupurilor de caractere (unele grupuri sunt mult mai
frecvente decât altele şi în plus există grupuri care nu apar deloc)
 distribuţiei poziţiei (unele caractere sau grupuri ocupă poziţii
preferenţiale, predictibile în anumite blocuri de date)
15
Avantajele compresiei
 Avantajele compresiei sunt:
 reducerea spaţiului necesar depozitării unei cantităţi de
informaţie;
 scăderea timpului de transmitere a unor mesaje, ceea ce
duce la scăderea costului per mesaj şi posibiltatea creşterii
traficului într-o reţea de transmisiuni

această scădere a timpului este efectul direct al micşorării
cantităţii de informaţie, dar şi efectul indirect al micşorării
pierderilor de timp datorate protocoalelor de comunicaţie
 scăderea timpului de rulare a unui program datorită
timpului de acces la disc
16
Clasificarea algoritmilor de compresie fără pierderi
 algoritmi statici - se bazează pe o statistică bine cunoscută a sursei
şi dau rezultate bune în cazul în care sursele au o statistică
asemănătoare cu cea presupusă
 in caz contrar, rezultatul poate fi o extensie în loc de o compresie
 algoritmi semiadaptivi (sau în două treceri) -
algoritmi care
folosesc statistica simbolurilor mesajului, statistică ce se obţine
printr-o parcurgere iniţială a întregului mesaj
 aceşti algoritmi oferă rezultate pentru orice tip de sursă, dar nu pot fi
folosiţi într-o transmisiune
 algoritmi adaptivi - sunt de obicei cei mai potriviti pentru orice tip
de sursă
 tehnicile adaptive au ca idee construirea unui "dicţionar de codare" al
simbolurilor mesajului, paralel cu codarea pentru compresie a mesajului.
acest dicţionar se va construi identic la recepţie, pe baza informaţiei
recepţionate
17
Modelare si codificare
 Cerinţele reconstrucţiei sunt cele ce impun dacă compresia este cu sau fără
pierderi, schema exactă depinzând de un număr de factori
 Unii din cei mai importanţi sunt impuşi de caracteristicile datelor destinate
compresiei, de exemplu, o tehnică de compresie poate fi eficientă pentru
compresia unui text, dar total ineficientă pentru imagini
 Fiecare aplicaţie prezintă particularităţi specifice
 Dezvoltarea algoritmilor de compresie pentru o varietate de date cuprinde
două faze:
 prima fază se referă de obicei la modelare, când se încearcă extragerea
informaţiei despre orice redundanţă din date şi descrierea acesteia sub forma
unui model
 a doua fază este codarea.
 Diferenţa dintre date şi model se numeşte secvenţă reziduală sau reziduu.
18
Modelare si Codificare. Exemplul 1
 Se considera secventa:
 Sn = 9, 11, 11, 11, 14, 13, 15, 17, 16, 17, 20, 21
 Codificare binara necesita 5 bits/sample
 Se considera modelul:
 Ŝn = n + 8:
 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
 Reziduu
 en = Sn - Ŝn: 0, 1, 0, -1, 1, -1, 0, 1, -1, -1, 1, 1
 Ex. codificare: ‘00’ <=> -1, ‘01’ <=> 0, ‘10’ <=> 1
 2 bits/sample
 Schema de compresie = model + reziduu
 Obs. Modelul trebuie sa fie codificat de asemenea (de obicei in cadrul
algoritmului)
19
Modelare si Codificare. Exemplul 2
 Se considera secventa:
 Sn = 27, 28, 29, 30, 30, 32, 31, 31, 29, 28, 27
 Se considera modelul:
 Ŝ1 = 0; Ŝn = Sn-1 for n > 1
 0, 27, 28, 29, 30, 30, 32, 31, 31, 29, 28
 Reziduul
 {en}= 27, 1, 1, 1, 0, 2, -1, 0, -2, -1, -1
 Poate fi codificat cu mult mai putini biti
 Codificare predictiva
 Folosirea datelor precedente pentru a calcula date viitoare.
 Foarte folositor pentru exploatarea redundantei temporale

Ex. in audio si video
20
Codificare in lumea reala: Braille (1821)
“Be nice to others”
21
Codificare in lumea reala: Morse (1844)
Observati diferentele in lungimele codurilor
22
Codul Morse vs. Frecventa literelor
 In general, frecventa mare/mica => cod scurt/lung
 Acesta este ideea in spatele schemei de codificare ce exploateaza
redundanta statistica.
23
Reprezentarea datelor
 Date analogice (continue)
 Reprezentate de numere reale
 Observatie: nu pot fi stocate in calculatoare
 Date digitale (discrete)
 Valori intr-un set finit {a1, a2, …, an},
 Toate datele sunt reprezentate ca siruri de simboluri din acest set.
 Ex.: {a,b,c,d,r} => abc, car, bar, abracadabra, …
 Folosim date digitale pentru a aproxima date analogice
24
Seturi de simboluri
 Alfabetul roman si semnele de punctuatie
 ASCII - 256 simboluri
 Braille, Morse
 Binar- {0,1}
 0 si 1 se numesc biti
 Toate datele digitale pot fi reprezentate eficient cu biti
 Ex.: {a, b, c, d}, reprezentare binara cu lungime fixa (2
bits/simbol):
Simbol
Binar
a
00
b
01
c
10
d
11
25
Surse de informaţie si codificare
 Sursele de informatie pot fi analogice sau discrete
 Majoritatea surselor de informatie din domeniul
calculatorelor si al aplicatiilor internet sunt discrete
 Pentru a descrie o sursă discretă fără memorie (SDFM) sunt
necesare două mărimi: alfabetul sursei şi probabilităţile de
furnizare a fiecărui simbol:
 s1
S :
p
 1
s2
...
p2
...
sN 

p N 
N
 p(s k )  1
k 1
26
Surse de informaţie si codificare
 dacă numărul de simboluri este finit, sursa se numeşte discretă
 dacă la un moment dat se emite sigur un simbol atunci sursa




este completă
sursa este fără memorie dacă evenimentele sk sunt
independente, adică furnizarea unui simbol la un moment dat
nu depinde de simbolurile furnizate anterior
totalitatea simbolurilor unei surse formează alfabetul sursei
orice succesiune finită de simboluri, în particular un singur
simbol, se numeşte cuvânt
totalitatea cuvintelor formate cu un anumit alfabet se numeşte
limbaj
27
Teoria informatiei
 Dezvoltata formal de Claude Shannon la Bell Labs in
1940-1950
 Explica limitele de codificare/transmisie folosind teoria
probabilitatilor
 Informatia furnizata de un simbol A al unei surse de
informatii este:
 P(A) reprezinta probabilitatea de aparitie a simbolului A
i ( A )  log
1
b
P ( A)
  log
b
PA
28
Surse de informaţie si codificare
6
 Observatii
5
 P(A) mic => i(A) mare
4
 P(A) mare => i(A) mic
3
 Idee:
 Simbolurile cu probabilitate
mica (surpriza) contin mai
multa informatie
 Daca A si B sunt
independente atunci:
 i(AB) = i(A) + i(B)
 log
2
2
x
1
0
0
0.1
0.2
i ( AB )  log
 log
0.3
0.5
1
b
1
b
0.4
P ( A)
0.6
 log
P ( AB )
 log
0.7
1
b
0.8
0.9
1
b
1

P ( A) P ( B )
 i( A)  i( B )
P(B)
29
Exemplu: aruncarea monezii
 Moneda ideala
 Fie H si T rezultatele aruncarii
 Daca P(H) = P(T) = 1/2, atunci
 i(H) = i(T) = -1/log2(1/2) = 1 bit
 Moneda masluita
 Fie P(H) = 1/8, P(T) = 7/8
 i(H) = 3 biti
 i(T) = 0.193 biti
 Obs. ca P(H) + P(T) = 1
30
Entropie
 Entropia este informaţia medie pe simbol sau, altfel formulat, este
incertitudinea medie asupra simbolurilor sursei S, sau informatia
medie furnizata de un simbol
 Unitatea de masura pentru entropie este biti/simbol
 Daca experimentul genereaza simboluri, atunci (pentru log2) H este
numarul mediu de simboluri binare necesare pentru codificare
 Shannon: Nici un algoritm fara pierderi nu poate compresa mai
bine
N
N
H ( S )   p ( s i ) i ( s i )    p ( s i ) log( p ( s i ))
i 1
i 1
31
Exemplul 1
 Se considera secventa:
 1 2 3 2 3 4 5 4 5 6 7 8 9 8 9 10
 P(1) = P(6) = P(7) = p(10) = 1/16
 P(2) = P(3) = P(4) = P(5) = P(8) = P(9) = 2/16
 Presupunand ca secventa este iid (Independent &
Identically Distributed):
H  
10
i 1
P ( i ) log
2
P (i )   4
2
 1 
 2 
log 2 
log 2 
6
  3 . 25 bits
16
16
 16 
 16 
1
32
Exemplul 2
 Consideram secventa
 12123333123333123312
 P(1) = P(2) = 1/4, P(3) = 1/2, H = 1.5 bits/simbol
 Total biti: 20 x 1.5 = 30
 Reconsideram secventa
 (1 2) (1 2) (3 3) (3 3) (1 2) (3 3) (3 3) (1 2) (3 3) (1 2)
 P(1 2) = 1/2, P(3 3) = 1/2
 H = 1 bit/simbol x 10 simboluri = 10 biti
 In teorie, se poate extrage o structura luand esantioane mai
mari
 In realitate, ne trebuie un model corect, pentru ca de obicei nu
este practic sa observam sursa prea mult timp
33
Modele
 Un model bun pentru date conduce la algoritmi de compresie
eficienţi
 Pentru a dezvolta algoritmi care efectuează operaţii matematice
asupra datelor, acestea trebuie modelate matematic
 Modele fizice
 Dacă se cunoaşte ceva despre mecanismul de generare a datelor,
se poate folosi această informaţie pentru construirea modelului
 De exemplu, în aplicaţiile referitoare la vorbire, cunoaşterea
mecanismului de producere a vorbirii poate fi folosit la
construirea unui model matematic pentru procesul vorbirii
eşantionate.
34
Modele
 Modele probabilistice
 Cel mai simplu model statistic pentru sursă este de a
presupune că fiecare mesaj furnizat de sursă este
independent de celelalte şi fiecare se produce cu aceeaşi
probabilitate

Acesta este numit model de ignoranţă si ar putea fi util când nu se
cunoaşte nimic despre sursă
 Următorul pas în creşterea complexităţii modelului este de a
păstra presupunerea asupra independenţei, dar de a înlătura
presupunerea de probabilitate egală pentru mesaje

În acest caz se alocă fiecărui mesaj o probabilitate în funcţie de
frecvenţa de furnizare a mesajului respectiv.
35
Modele
 Modele probabilistice (cont)
 Pentru o sursă care generează mesaje dintr-un alfabet
S = {s ,..., s }
1
M
se poate folosi modelul de probabilitate
 Cu acest model se poate calcula entropia sursei şi pot fi construite
coduri eficiente pentru reprezentarea mesajelor din S, adică se
poate folosi un număr mediu minim de biţi pentru fiecare mesaj
 Dacă se renunţă la presupunerea de independenţă, se pune
problema găsirii unui mod de a descrie dependenţa datelor, aşa
cum este în cazul modelelor Markov
36
Modele
 Model de surse compuse
 În multe aplicaţii nu este potrivit a se folosi un singur
model pentru a descrie sursa, caz în care se poate defini o
sursă compusă, care poate fi văzută ca o combinaţie de
diverse surse, din care una este activă la un moment dat
 Fiecare din acestea este descrisă de un model propriu
Source 1
Source 2
…
Source n
37
Modele
 Model Markov
 Unul dintre cele mai răspândite moduri de reprezentare a
dependenţei între date este folosirea modelului Markov
 Pentru modelarea datelor, în compresia fără pierderi se
foloseşte un model particular numit lanţ Markov discret
 Fie {xn } secvenţa observată. Aceasta secvenţă se zice că
este un model Markov de ordin k, dacă:
P  x n x n 1 ,  , x n  k

P  x n x n 1 ,  , x n  k ,  
adică simbolul xn depinde numai de ultimele k mesaje xn-1,
..., xn-k
38
Modele
 Multimile {xi-1, …, xi-k}, i=n, n-1,…, reprezinta starile
procesului
 Dacă mărimea alfabetului sursei este l, numărul de stări este
lk
 Cel mai des folosit model Markov este cel de ordinul 1,
pentru care:
P  x n x n 1   P  x n x n 1 ,  , x n  k ,  
39
Modele
 Folosirea modelului Markov nu necesită prezumţia de
liniaritate
 De exemplu, fie o imagine binară, care are numai două
feluri de pixeli - albi şi negri
 Se ştie că apariţia unui pixel alb la observarea următoare
depinde în oarecare măsură dacă pixelul curent este alb sau
negru
 Prin urmare, se poate modela succesiunea de pixeli cu un
lanţ Markov
40
Modele
 Se defines doua stari: Sb & Sw
pentru valoarea pixelului curent
 Se defines probabilitatile:
 P(Sb) = prob. ca pixelul sa
fie negru
 P(Sw) = prob. Ca pixelul sa
fie alb
 Probabilitatile de tranzitie
sunt:
 P(b|b), P(b|w)
 P(w|b), P(w|w)
41
P(w|w)
P(b|b)
P(b|w)
Sw
P(w|b)
Sb
H  S w    P b / w  log b / w   P  w / w  log  w / w 
H  S b    P  w / b  log b / w   P b / b  log b / b 
P  w / w   1  P b / w ,
P b / b   1  P  w / b 
H  P  S b H  S b   P  S w H  S w 
Exemplu
Fie
P  S w   30 / 31
P  S b   1 / 31
P  w / w   0 . 99
P b / w   0 . 01
P b / b   0 . 7
P w / b   0 .3
Pentru modelul iid (Independently and Identically Distributed):
H iid   0 . 8 log 0 . 8  0 . 2 log 0 . 2  0 . 206
Pentru modelul Markov:
H  S b    0 . 3 log 0 . 3  0 . 7 log 0 . 7  0 . 881
H  S w    0 . 01 log 0 . 01  0 . 99 log 0 . 99  0 . 081
H Markov 
42
30
31
0 . 081 
1
31
0 . 881  0 . 107
Folosirea modelelor Markov in compresia textelor
 Modelele Markov sunt utile în compresia textelor, deoarece
probabiltatea de apariţie a unei litere este influenţată de
precedentele
 Fie cuvântul “ornitoring”:
 Se presupune că s-a procesat deja ornitorin şi urmează a se coda
următoarea literă
 Dacă nu se ţine seama de context şi se tratează litera ca o
surpriză, probabilitatea să apară litera g este relativ scăzută
 Dacă se foloseşte un model Markov de ordinul Ι, probabilitatea să
urmeze g creşte considerabil
 Cu creşterea ordinului modelului Markov (de la “n” la “in”, la
“rin” ş.a.m.d.) probabilitatea literei g devine mai mare, ceea ce
conduce la o entropie scăzută.
43
Coduri unic decodificabile
 Codificarea sursei S, prin alfabetul X, inseamnă găsirea unei corespondenţe





biunivoce (S,X) între cuvintele de cod {ci | i=1,2,...,N} şi simbolurile sursei S
Fiecare cuvânt de cod este o succesiune finită de litere din alfabetul codului
Probabilitatea unui cuvânt de cod este dată de probabilitatea simbolului care
trebuie transmis
Definiţie: Un cod se numeşte unic decodabil dacă fiecărei succesiuni de
cuvinte de cod îi corespunde o singură succesiune de mesaje (simboluri) ale
sursei.
Definiţie: Dacă un cuvânt de cod ci este format din succesiunea xi1xi2xim, atunci
succesiunea xi1...xik, km se numeşte prefix al cuvântului respectiv
Dacă nici un cuvânt de cod nu este prefix pentru alt cuvânt de cod se spune că
acel cod are proprietatea de prefix.
44
Coduri unic decodificabile
 Exemple


Alfabet = {a1, a2, a3, a4}
P(a1) = 1/2, P(a2) = 1/4, P(a3) = P(a4) = 1/8
H = 1.75 bits
n(ai) = lungime(cuvant cod(ai)), i=1..4

Lungime medie l = i=1..4P(ai) n(ai)


 Coduri posibile:
Probabilitate
Cod 1
Cod 2
Cod 3
Cod 4
a1
0.500
0
0
0
0
a2
0.250
0
1
10
01
a3
0.125
1
00
110
011
a4
0.125
10
11
111
0111
1.125
1.250
1.750
l
1.875
45
Coduri unic decodificabile
Probabilitate
Cod 1
Cod 2
Cod 3
Cod 4
a1
0.500
0
0
0
0
a2
0.250
0
1
10
01
a3
0.125
1
00
110
011
a4
0.125
10
11
111
0111
1.125
1.250
1.750
l
1.875
 Cod 1
 Coduri identice pentru a1 si a2==> decode(‘00’) = ???
 Cod 2
 Coduri unice dar ambigue: decode( ‘00’/’11’) = ???
 Cod 3
 Unic decodificabil, instantaneu
 Code 4
 Unic decodificabil, aproape instantaneu
46
Coduri unic decodificabile
 Decodificare unica:
 Pentru orice secventa de cuvinte cod exista o unica
decodificare pentru ea
 Unica != instantanee
 Ex.:
 a1  0
 a2  01
 a3  11
 decode(0111111111) = a1a3… or a2a3… ?
 Nu se stie pana la sfarsitul secventei
 0111111111  01111111a3  011111a3a3  0111a3a3a3 
01a3a3a3a3  a2a3a3a3a3a3
47
Test de Decodificare Unica
 Prefix si sufix
 Fie a = a1…ak, b = b1…bn coduri binare si k < n
 Daca a1…ak = b1…bk atunci a este prefix al lui b si
 bk+1…bn este sufix (dangling suffix) al lui a: ds(a, b)
 Algoritm
 Fie C = {cn} setul tuturor cuvintelor cod
Pentru toate perechile (ci, cj) in C repeta:
Daca ds(ci, cj)  C
// sufixul NU este cuvant cod
C = C U ds(ci, cj)
Altfel
// sufixul este cuvant cod
return NOT_UNIQUE
pana cand nu mai exista perechi unice
return UNIQUE
48
Coduri Prefix
 Cod prefix:
 Niciun cuvant cod nu este prefix al altuia
 Arborii binari = decodificatori de prefix:
symbol
code
a
00
b
01
c
1
0
1
0
1
a
b
c
repeat
curr = root
repeat
if get_bit(input) =
1
curr = curr.right
else
curr = curr.left
until is_leaf(curr)
output curr.symbol
until eof(input)
49
Decodificarea coduril prefix. Exemplu
simbol
cod
a
0
b
10
c
110
d
1110
r
1111
1
0
a
0
b
1
0
c
1
0
1
d
r
abracadabra = 010111101100111001011110
50
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= 010111101100111001011110
Output = ----------51
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= 010111101100111001011110
Output = a---------52
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= -10111101100111001011110
Output = a---------53
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= -10111101100111001011110
Output = a---------54
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= --0111101100111001011110
Output = ab--------55
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= ---111101100111001011110
Output = ab--------56
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= ---111101100111001011110
Output = ab--------57
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= ----11101100111001011110
Output = ab--------58
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= -----1101100111001011110
Output = ab--------59
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= ------101100111001011110
Output = abr-------60
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= -------01100111001011110
Output = abr-------61
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= -------01100111001011110
Output = abra------62
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= --------1100111001011110
Output = abra------63
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= --------1100111001011110
Output = abra------64
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= ---------100111001011110
Output = abra------65
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= ----------00111001011110
Output = abrac-----66
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= -----------0111001011110
Output = abrac-----67
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
1
0
1
d
r
= -----------0111001011110
Output = abraca----68
Exemplu decodificare
1
0
a
0
b
1
0
c
Input
Si tot asa…
1
0
1
d
r
= ------------111001011110
Output = abraca----69
Concluzii
 In compresia datelor un rol important il are teoria codarii si teoria
informatiei
 Compresia se refera la micsorarea redundantei mesajului de transmis
 Compresia de poate face:
 cu pierdere de informatie, asa cum este cazul surselor continue
(analogice) discretizate, reprezentate numeric in calculator
 fara pierdere de informatie, asa cum este in cazul textelor
 Ca masura a compresiei se foloseste - cel mai des – marimea numira
raportul de compresie, ca raport intre marimea fisierului comprimat
si marimea fisireului initial, necomprimat
 Un criteriu complet al calitatii compresiei trebuie sa considere insa si
complexitatea algoritmilor de codare/decodare
70

similar documents