PRIVIRE DE ANSAMBLU ASUPRA
COMPRESIEI DE DATE
Ion IVAN			Daniel VERNIŞ
Departamentul de Informatică Economică - A.S.E.

1.Concepte de bază

	Compresia datelor este procedeul prin care se realizează reducerea spaţiului ocupat pe suport de un fişier. Decompresia este procedeul care asigură revenirea la forma iniţială a unui fişier.
	Obiectivele urmărite sunt :
•	prezentarea claselor de algoritmi de compresie ;
•	prezentarea textelor sursă C++ pentru unii algoritmi ;
•	definirea indicatorilor de apreciere a algoritmilor ;
•	identificarea situaţiilor de utilizare eficientă ;
•	crearea premiselor pentru dezvoltarea de noi tehnici de compresie .
	În acest scop se constituie loturi semnificative de fişiere şi se analizează comportamentul statistic al programelor care implementează algoritmi de compresie. Comportamentul algoritmilor de compresie este studiat prin agregarea criteriilor timp şi grad de compresie.
	Pentru implementarea algoritmilor sunt necesare eşantioane de fişiere care se constituie în intrări ale programelor. 
	Sunt tratate tehnici de compresie care acoperă lucrul pe alfabet, utilizare de dicţionare dinamice, urmărirea frecvenţelor de apariţie a caracterelor, lanţuri Markov, traversări cu fractali, algoritmi genetici şi tehnici specifice reţelelor neuronale.
	Sunt prezentate şi unele rezultate ale activităţii de cercetare întreprinse în ultimii cinci ani. Alte rezultate au fost publicate în articolele specificate în bibliografie.
	Dimensiunea eşantioanelor şi complexitatea prelucrărilor statistice sunt astfel realizate încît să asigure stabilitatea rezultatelor obţinute.
	Bibliografia include lucrări fundamentale din domeniul compresiei precum si articole ale autorilor în care se includ rezultate ale unor cercetări întreprinse în timp.

	Fişierul brut reprezintă ceea ce este introdus, direct sau indirect, de la tastatură şi scris pe suport folosind codul ASCII fără a se face modificări.
	Fişierul modificat se obţine pornind de la un fişier brut prin efectuarea unor transformări care elimină unele inconveniente.
	Pentru exemplul considerat se impune iniţial eliminarea numărului de spaţii.
Există multe criterii de clasificare a seturilor de date.
Criteriul semnificaţiei, grupează seturile de date în :
•	fişiere text în care datele se reprezintă fie direct cu ajutorul codului ASCII, fie după efectuarea unei conversii (binar,virgulă mobilă,zecimal împachetat sau despachetat) ;
•	fişiere imagine color sau alb-negru, materializare a matricei de pixeli ;
•	fişiere de sunet, care conţin codificarea frecvenţelor, duratele şi intensităţile lor.

Criteriul structurii :
•	fişiere continue care conţin date ce reflectă elementele unui masiv, textul unei cărţi ; pentru aceste fişiere unitatea de bază este cuvîntul (2 baiţi) dacă reprezentarea elementelor masivului corespunde tipului întreg (int), dublu cuvînt (4 baiţi) dacă elementele masivului au tipul virgulă mobilă (float), respectiv 1 bait corespunzător tipului caracter.
•	fişier format din articole, datele grupate descriu indivizii unei colectivităţi după un şablon. Există posibilitatea ca şabloanele să fie identice (fişiere cu articole de lungime fixă), sau şabloanele să difere  (fişiere cu articole de lungime variabilă).
Un alt criteriu, de care se ţine seama în cazul compresiei de date este criteriul naturii informaţiei :
•	fişiere în care totul reprezintă informaţie ce nu trebuie pierdută, asupra acestor fişiere putîndu-se opera doar cu algoritmi fără pierderi de informaţie ;
•	fişiere care pot face obiectul unor rafinări, seturi de date în care spaţiile consecutive, folosite ca separatori pot fi eliminate.
	Compresia este un procedeu prin care se obţine o reducere a spaţiului de memorare ocupat de un set de date . Prin compresie datele iniţiale sunt transformate obţinîndu-se reprezentări echivalente numite şi date compresate. 
	Decompresia este procedeul prin care datele compresate sunt aduse la o formă cît mai apropiată sau chiar identică cu forma pe care au avut-o înaintea compresiei.
	Se consideră un alfabet A, format din simbolurile a1,a2,..,an. Fiecare simbol se reprezintă în memoria calculatorului pe un număr de biţi.
Se defineşte funcţia :
		h:AN*
numită funcţia de lungime a simbolurilor alfabetului. 
De exemplu, pentru codul ASCII, funcţia lungime este constantă.
		h(x) = 8
	Un cod este distinct dacă fiecare simbol al codului se poate distinge de celelalte simboluri. Ambele variante de coduri prezentate anterior sunt coduri distincte, dar codul variabil nu este izomorf (nu are o decompresie unică). Prin definiţie, toate codurile de lungime fixă sunt coduri izomorfe. Codurile variabile nu sunt întotdeauna izomorfe.
	Un cod are proprietatea de prefix, dacă pentru un simbol x, combinaţia xy nu este un simbol al codului, pentru orice valoare a lui y. Un cod prefix variabil are întotdeauna o decompresie unică. Codurile prefix au o decompresie instantanee, adică ele pot fi decompresate fără o citire anterioară a fişierului .
	Un cod prefix este minimal dacă pentru orice prefix x al unui simbol, există combinaţia xy avînd una din semnificaţiile :
•	simbol din alfabetul aceluiaşi fişier ;
•	prefix al unui simbol .

	Un cod este universal dacă media lungimii simbolurilor din alfabetul codificat este mărginită de c1 ( H + c2 ). Fiind dat un fişier sursă arbitrar cu entropia diferită de zero, un cod universal atinge o lungime medie a simbolurilor, care este în cele mai multe cazuri codul optim posibil pentru fişierul respectiv.
	Puterea de compresie oferită de un cod universal depinde direct de mărimea constantelor c1 şi c2. Prin definiţie un cod optim asimptotic este un cod pentru care media lungimii codurilor se apropie de entropie.
	Primul cod Elias este mai simplu dar nu este optim. Acest cod, gamma, pune în corespondenţă un întreg x cu valoarea sa binară prefixată de îlg xş zerouri. Valoarea binară a lui x este exprimată în cît mai puţini biţi posibil, deci se începe întotdeauna cu un 1 care este şi delimitator de prefix.
	Un alt cod universal bazat pe şirul Fibonacci, a fost definit de Apostolico şi Fraenkel. În timp ce codul Fibonacci nu este optim asimptotic, el se poate compara cu codul Elias atîta timp cît lungimea fişierului sursă nu este prea mare. 
	Codul Fibonacci, prezentat de Apostolico şi Fraenkel, este bazat pe şirul Fibonacci de ordin m>=2, unde prin şirul Fibonacci de ordin 2 este şirul standard : 1, 1, 2, 3, 5, 8, 13,....
	Una din cele mai răspîndite metode de obţinere a unei compresii pentru acest tip de fişiere este de a realiza conversia la forma zecimal împachetată sau în virgulă mobilă.
	O alternativă pentru această variantă o reprezintă compresia cu diferenţe.
	Termenul de diferenţă descrie o tehnică de comparaţie a unei înregistrări, în cazul compresiei un simbol din alfabet, cu o înregistrare de bază, reţinîndu-se doar diferenţele dintre ele.
	În acest caz, diferenţele nu se mai fac după simbolurile vecine, ci după o bază.  Baza se alege dintre numerele din fişier, în aşa fel încît să se obţină o cit mai mică reprezentare binară a simbolurilor.

	Editoarele şi procesoarele de texte manipulează simbolurile unui alfabet extins, structurat în :
•	submulţimea simbolurilor imprimabile ;
•	submulţimea simbolurilor de control ;
•	submulţimea simbolurilor de formatare ;
•	submulţimea obiectelor grafice .
	Fişierele rezultate sunt de tip text atunci cînd preponderente sunt caracterele ASCII şi de tip binar cînd simbolurile imprimabile sunt însoţite de succesiuni de biţi ce furnizează informaţii referitoare la font, format şi control.

2.Algoritmi clasici de compresie

	Prin definiţie, algoritmii statici de compresie sunt acei algoritmi care presupun traversarea în întregime a fişierului ce urmează a fi compresat, înaintea realizării compresiei.
	Din această clasă fac parte algoritmul Huffman standard, Compresia aritmetică şi algoritmul Fano-Shannon.
	Multe din programele de compresie performante folosesc algoritmi bazaţi pe dicţionare dinamice. În continuare se va prezenta exemplul precedent utilizînd algoritmul LZW.
	LZW este un algoritm de compresie ce înlocuieşte un text cu altul. Mai este cunoscut şi sub numele de ‘On line textual Substitution’. Algoritmul LZW constă în înlocuirea prin cîţiva biţi a unui cuvînt, a unei fraze sau chiar a unui paragraf întreg. Codul este constituit într-o manieră unică cu ajutorul unui dicţionar dinamic, creat după cerinţele textului. Avantajul faţă de alţi algoritmi îl constituie faptul că dicţionarul nu trebuie transmis sau stocat odată cu datele, el putîndu-se reconstitui pe parcurs.

	Ecranul monitorului este structurat ca un tablou de pixeli dispuşi pe linii şi pe coloane. Documentaţia care însoţeşte echipamentul prezintă numărul de linii şi de coloane ale tabloului precum şi dimensiunea în milimetri a pixelului, văzut ca un dreptunghi. Bibliotecile standard grafice sunt înzestrate cu toate structurile de date şi funcţiile care permit accesul la resursele necesare descrierii, realizării şi manipulării imaginilor în condiţiile unei relative independenţe de echipamentul fizic.
	Un pixel este caracterizat prin poziţie (linie şi coloană în tablou) şi conţinut (culoare, eventual luminozitate). Tabloului liniarizat de pixeli îi corespunde în memorie o zonă numită memorie grafică, care stochează aceste informaţii. Se poate lucra direct pe memoria grafică pentru transformarea (iniţializarea pixelilor) sau prin intermediul memoriei interne a calculatorului.
	Dimensiunea memoriei grafice asigură stocarea informaţiilor asociate cel puţin unei imagini complete de pe ecranul monitorului. Pentru a asigura continuitatea derulării imaginilor asemeni lumii reale trebuie asigurată o viteză de transfer de la fişierele externe către memoria grafică sau efectuarea rapidă de calcule, ceea ce impune existenţa unor sisteme extrem de performante.
	Monitoarele alb-negru funcţionează cu 16 nuanţe de gri, caz în care pentru descrierea unui pixel în memoria grafică se vor folosi 4 biţi . Pentru monitoarele alb-negru cu 256 nuanţe de gri, codificarea pune în corespondenţă 00h cu negru şi FFh cu alb. Între ele aflîndu-se coduri pentru nuanţe de la gri închis la gri deschis. Pentru reprezentarea unui pixel în acest caz este necesar 1 bait.
	Cînd se reprezintă imagini color se defineşte conceptul de paletă de culori, care ia în considerare fie codurile asociate culorilor cînd acestea sunt într-un număr restrîns, fie modul de construire a culorilor prin combinarea culorilor fundamentale.
	Monitoarele care suportă 32K sau 16M nuanţe impun descrierea paletei de culori prin asocierea fiecărei culori fundamentale RGB în 256 nuanţe fiecare.
	În compresia de date sunt folosiţi mulţi algoritmi, de la algoritmi simpli pînă la algoritmi complecşi. Eficacitatea algoritmilor variază în funcţie de natura datelor. Cel mai simplu algoritm folosit astăzi pe scară largă este RLE.
	Principiul RLE constă în detectarea unui simbol avînd un număr de apariţii consecutive care depăşesc un număr fixat. Apoi înlocuirea acestei secvenţe prin două informaţii :
•	o cifră indicînd numărul de repetiţii;
•	simbolul ce se repetă.
	Limita minimă pentru a putea fi comprimat un şir, este ca lungimea subşirului să fie de minim 3 simboluri identice.
	Cînd în fişierul ce urmează a fi compresat cu algoritmul RLE, se întîlneşte simbolul folosit drept caracter special, se va trece în fişierul compresat următoarea succesiune :
•	caracter special ;
•	valoarea 0, deoarece pe această poziţie într-o codificare normală apărea lungimea şirului ;
•	valoarea 1 sau caracterul special.
	În cazul în care se găseşte o succesiune a caracterului special, aceasta se va compresa astfel :
•	caracter special ;
•	valoarea 1, fiind o valoare nefolosită în procesul de compresie ;
•	numărul de repetiţii al caracterului special, între 2 şi 255.
	Algoritmul RLE este un caz special, operînd în realizarea de transformări pe text. Compresia la nivel de simbol este nulă.
	JPEG are rezultate foarte bune de compresie pentru imaginile color şi cele în nuanţe de gri, însă are probleme la lucrul cu imaginile alb-negru. Sunt întîlnite probleme şi la lucrul cu imaginile unde culorile au fost mapate (folosirea culorilor implicite ale mediului de lucru, de exemplu folosirea paletei Windows), trebuind ca anterior să fie expandate într-o reprezentare normală.

	Transmisia datelor folosind canalele discrete fără zgomot este din nefericire, un model nu prea realistic în sistemele de comunicaţie. Actualele sisteme de transmisii de date, sunt înclinate spre două tipuri de erori :
•	erori de fază, în care un codul unui simbol este pierdut sau adăugat ;
•	erori de amplitudine, în care codul unui simbol este corupt .
	Gradul în care erorile de canal degradează transmisia, este un parametru important în alegerea metodei de compresie a datelor.
	Susceptibilitatea la erori a algoritmilor de compresie, depinde în mare măsură de tipul algoritmului : static sau dinamic.

	Algoritmul Huffman constă în înregistrarea simbolurilor întîlnite într-un fişier prin coduri de lungime variabilă. Prin definiţie, algoritmul Huffman este un cod de tip bloc - variabil.
	Pentru un fişier text cu o lungime destul de mare, frecvenţele simbolurilor din alfabetul asociat fişierului au o lege de distribuţie diferită de legea normală.
	Într-un fişier F de lungime n, avînd un alfabet de m simboluri, se identifică min, simbolul cu frecvenţa cea mai mică de apariţie şi max ca fiind simbolul cu frecvenţa cea mai mare de apariţie. Algoritmul Huffman asociază simbolului min o configuraţie de biţi de lungime mare în timp ce pentru max vom avea cea mai mică configuraţie de biţi posibilă în cazul fişierului F.
	Paşii algoritmului Huffman standard sunt sintetizaţi astfel :
1.	Se traversează fişierul ;
2.	Se construieşte stiva simbolurilor distincte şi a frecvenţei de apariţie a acestora ;
3.	Se construieşte arborele binar, ale cărui simboluri le reprezintă simbolurile din stivă, astfel :
•	Se aranjează simbolurile în stivă în ordinea descrescătoare a frecvenţelor şi se consideră nodurile frunză ale arborelui ;
•	Atît timp cît există mai mult de un nod, se asamblează nodurile cu cele mai mici frecvenţe, pentru a forma un nou nod a cărui frecvenţă este egală cu suma nodurilor asamblate ;
•	Se asignează valorile 0 pentru fiecare ramură dreapta şi 1 pentru fiecare ramură stîngă ;
•	Se citeşte secvenţial, începînd de la nodul rădăcină către frunze, atribuindu-se fiecăruia codul corespunzător.
4.	La a doua traversare a fişierului se folosesc codurile de lungime variabilă generate şi asociate simbolurilor din stivă pentru compresia fişierului sursă şi obţinerea fişierului comprimat.
	Pentru o mai bună înţelegere a algoritmului Huffman se vor explica pe larg fazele de compresie şi decompresie. Fiecare fază, compresie sau decompresie este însoţită de un program scris în C, programe ce se găsesc şi pe discheta ce însoţeşte lucrarea.
	Una din caracteristicile principale ale compresiei Huffman este aceea că un cod nu poate fi întîlnit ca prefix al unui alt cod. Datorită acestui fapt, prin citirea bit cu bit a fişierului compresat se poate decompresa fişierul iniţial folosind aceeaşi tabelă de compresie. În faza de decompresie, această tabelă poartă denumirea de tabelă de decompresie.
	Vom folosi această tabelă de decompresie pentru reconstruirea arborelui original. După determinarea arborelui se trece la decompresia fişierului.
	Algoritmul Fano-Shannon este împărţit în trei faze :
•	stabilirea tabelei cu frecvenţele de apariţie ale simbolurilor din fişier ;
•	codificarea simbolurilor după un algoritm prestabilit ;
•	compresia fişierului folosind noul cod Fano-Shannon .
	Paşii algoritmului de codificare a simbolurilor propus de Fano-Shannon sunt :
1.	sortarea simbolurilor din tabelă în ordinea descrescătoare a frecvenţelor ;
2.	împărţirea ansamblului de date în două părţi de frecvenţe pe cît posibil egale ;
3.	atribuirea unui bit 0 sau 1 pentru fiecare ansamblu ;
4.	împărţirea fiecărui ansamblu la rîndul lui în alte două şi reluarea algoritmului pînă la stabilirea tuturor codurilor .

Compresia aritmetică este superioară bine cunoscutului algoritm Huffman în multe privinţe. Această metodă introduce o separare clară între modelul de reprezentare al datelor şi modelul de compresare al acestora.
	Pentru mulţi, compresia de date presupune invocarea un sortiment de tehnici ad-hoc, cum ar fi conversia spaţiilor din text în caractere TAB, crearea codurilor speciale pentru înlocuirea unor secvenţe comune sau folosirea algoritmului RLE pentru compresia imaginilor.
	Aceste metode contrastează cu cele mai noi metode de compresie, bazate pe paradigme, unde dintr-un şir iniţial de simboluri şi un algoritm este produs un nou şir, codificat, care de obicei este o versiune comprimată a şirului iniţial.
	Decompresia, care trebuie să aibă la bază acest algoritm, reconstituie şirul iniţial din cel comprimat. Şirurile iniţiale sunt caractere ale setului ASCII sau ale alfabetului binar, pe cînd şirul codificat este o simplă secvenţă de biţi.
	Transmisia şi recepţia incrementală. Algoritmul de compresie după cum a fost descris nu transmite nimic pînă cînd întregul mesaj a fost codificat. Similar, algoritmul de decompresie nu începe decompresia pînă cînd nu a fost recepţionată întreaga transmisie. În cele mai multe cazuri un mod incremental al operaţiilor este necesar.
	Dorinţa de a folosi aritmetica numerelor întregi. Precizia cerută pentru a reprezenta intervalul îlow, highş creşte odată cu lungimea mesajului. Reprezentarea folosind numere întregi va ajuta la învingerea acestui obstacol, dar posibilitatea de overflow sau underflow trebuie luată totuşi în considerare.
	Reprezentarea modelului astfel încît acesta să poată fi consultat în mod eficient. Reprezentarea folosită trebuie să minimizeze timpul necesar decompresiei pentru identificarea următorului simbol. Mai mult, un model adaptiv ar trebui organizat astfel încît să minimizeze timpul consumat de procedura care realizează memorarea frecvenţelor cumulate.

	Algoritmii Lempel-Ziv reprezintă o îndepărtare de la viziunea clasică a algoritmilor de compresie, prin care se puneau în corespondenţă mesajele sursă şi grupul fixat de codificări. Se introduce un nou concept, acela de analiză liberă a mesajelor sursă în timpul execuţiei algoritmului.
	În 1984, Terry Welch a prezentat rezultatele unor cercetări efectuate la Sperry Research Center. Aceste cercetări erau o descriere practică a implementării algoritmului LZ78, denumită LZW. El discuta algoritmul de compresie LZW prin posibilele utilizări ale sale în controlerele de disc şi bandă magnetică, dar el era convins de posibilităţile implementării algoritmului într-un program de compresie de uz general. Aproape imediat după apariţia articolului, s-a început lucrul la programul compress sub Unix.
	Algoritmul LZ-77. Compresia LZ77 utilizează textul precedent ca un dicţionar. Ea înlocuieşte şiruri de caractere din textul de intrare prin pointeri în dicţionarul curent folosit la compresie. Rata de compresie depinde de lungimea dicţionarului, de mărimea ferestrei în textul precedent, şi de entropia textului sursă.
	Principala structură de date a algoritmului LZ77 este o fereastră de text, divizată în două părţi. Prima este formată dintr-un bloc de text recent comprimat. Cea de-a doua, mult mai mică, este un buffer de citire. Bufferul de citire conţine caracterele citite în fluxul de intrare dar încă necomprimate.
	Lungimea normală a ferestrei de text este de cîteva mii de caractere. Bufferul de citire este în general mult mai mic, de 10 sau 100 de caractere.
	Varianta LZ-SS încearcă să elimine anumite inconveniente ale algoritmului LZ77. Această variantă aduce două mari îmbunătăţiri algoritmului. Prima este modul de actualizare a ferestrei text. În LZ77, şirurilr din fereastra text erau memorate sub forma unui singur bloc de text continuu, fără nici o altă structură ajutătoare. LZ-SS stochează de asemenea textul într-o fereastră continuă, dar construieşte şi o structură de date suplimentară care ameliorează organizarea şirurilor.
	O altă problemă a algoritmilor LZ77 o reprezintă limitarea lungimii şirurilor de echivalenţă. Cea mai lungă corespondenţă are lungimea aproximativ egală cu bufferul de citire, ceea ce în cazul exemplelor prezentate ar fi 17 baiţi. O posibilitate de a evita aceste limitări o reprezintă mărirea lungimii ferestrei. Spre exempul, în loc să utilizăm o fereastră de 4KB şi un buffer de citire de 17 baiţi, putem utiliza o fereastră de 64KB şi un buffer de citire de 1KB.
	Adevărata problemă cu LZ78 o reprezintă gestiunea dicţionarului. Spre exemplu, dacă utilizăm un cod de 16 biţi pentru indicele de şiruri, putem gestiona 65536 de şiruri, incluzînd şi caracterul NULL. Şirurile pot vaia în lungime, putîndu-se obţine teoretic cel mai mare şir cu o lungime de 65536 de caractere, conţinînd un singur caracter care se repetă.
	Algoritmul de decompresie însoţeşte întotdeauna algoritmul de compresie. La decompresie se primeşte fluxul de date transmis la compresie, care se utilizează pentru reconstruirea fluxului de date iniţial. Un avantaj al eficacităţii algoritmului LZW este acela că dicţionarul nu trebuie transmis către decompresor. Tabela se reconstruieşte exact ca în forma sa de la compresie, cu ajutorul fluxului de date de intrare.
	LZW poate fi ameliorat din punctul de vedere al mărimii dicţionarului. Deoarece este posibilă memorarea mai multor şiruri, din ce în ce mai lungi, rata de compresie va creşte. Aici, Lzw2C.c utilizează o lungime a codului maximală de cincisprezece biţi, care dă posibilitatea utilizării unui dicţionar de 32768 de şiruri. Majoritatea calculatoarelor care lucrează sub MS-DOS nu au suficientă memorie pentru a suporta o lungime maximală de 16 biţi. Programul poate converti la întregi de tip long majoritatea codurilor şi variabilelor folosite, putînd obţine dicţionare mai mari. În general, aceste conversii pentru introducerea unor lungimi mai mari ale codurilor conduc la mărirea timpului de calcul, care poate fi un impediment major.
	Rezultatele obţinute cu algoritmii LZSS, LZW cu coduri de lungime fixă de 12 biţi şi LZW cu coduri de lungime variabilă, necesită următorii parametrii :  Lungime fişier, Lungime de compresie LZSS, Rata de compresie LZSS, Lungime de compresie LZW 12, Rata de compresie LZW 12, Lungime de compresie LZW 9-15 şi Rata de compresie LZW 9-15.
	După cum se poate observa şi din rezultatele prezentate, algoritmii de tip LZ au rezultate excelente pentru majoritatea fişierelor. Algoritmii LZ au o rată foarte slabă de compresie pentru fişierele de sunet, unul din motive fiind şi dimensiunile destul de mici ale acestora.
	Un alt dezavantaj al fişierelor de sunet este diversitatea mare de caractere care apar în conţinutul lor. Dicţionarele nu sunt eficiente pentru fişiere de dimensiuni mici, în primul rînd datorită lungimii codului care este în general mai mare decît lungimea codului ASCII.
	Rezultate bune se obţin la fişierele cu lungimi mari, cum ar fi cele de imagine. După cum se poate observa, pentru fişierul imagine 3.img, ratele de compresie depăşesc 86%. Deci, se confirmă rezultatele teoretice, conform cărora, algoritmii LZ sunt eficienţi pentru fişiere mari.
	Dezavantajul pe care îl au algoritmii de tip LZ faţă de ceilalţi algoritmi prezentaţi, referitor la durata mare a compresiei, este anihilat de timpul foarte scurt în care are loc procesul de decompresie. Această reducere se datorează în primul rînd eliminării aproape totale a căutării în arborele ataşat dicţionarului.
	Cea mai bună aplicaţie pentru algoritmii LZ o reprezintă stocările de date, care sunt folosite destul de des, dar fără a fi modificate de fiecare dată. Dintre aplicaţii am putea aminti stocarea anuarelor statistice, a arhivelor ministerelor, documente istorice şi chiar cărţi de telefon.
	Un domeniu în care implementarea algoritmilor LZ a cucerit aproape total piaţa îl reprezintă transmisiile de date. Algoritmul LZW este definit ca o parte componentă a standardului CCITT V.42 bis, iar firma Unisys, deţinătoarea licenţei asupra acestui algoritm, a definit o serie de condiţii pentru acordarea licenţei constructorilor de modemuri.

3.Compresia de imagini

	Scopul JPEG a fost să dezvolte o metodă de compresie a imaginilor cu ton continuu, ceea ce presupune următoarele cerinţe :
•	să permită obţinerea unor rate de compresie comparabile cu algoritmii performanţi, să permită o fidelitate a imaginii într-un interval larg de rate de calitate a imaginii, dar în special în zona în care fidelitatea vizuală a originalului este caracterizată ca foarte bună pînă la excelentă; totodată, codorul ar trebui parametrizat astfel încît utilizatorul să poată seta rata de compresie şi de calitate dorite ;
•	să fie aplicabilă pentru orice fel de imagine sursă digitală cu ton continuu de culoare. De exemplu, imaginea nu trebuie restricţionată din punct de vedere al conţinutului său, cum ar fi complexitatea, intervalul de culoare, sau proprietăţile statistice ;
•	să aibă o complexitate calculabilă uşor, pentru a face fezabile implementările software cu performanţe viabile într-o varietate de procesoare, de asemenea şi pentru implementările hardware cu un cost viabil pentru aplicaţiile care necesită o performanţă ridicată ;
•	să aibă următoarele moduri de operare :
•	codificare secvenţială, fiecare componentă a imaginii este codificată într-o singură scanare : 
stînga - dreapta, sus - jos ;
•	codificare progresivă, imaginea e codificată în scanări multiple, în care timpul de transmisie este mare, iar utilizatorul preferă să vadă imaginea construindu-se progresiv ;
•	compresia fără pierderi, imaginea este compresată cu garantarea reconstituirii exacte a oricărui eşantion din imaginea sursă iniţială, chiar dacă fişierul rezultat are o dimensiune mai mare ca la modelele cu pierderi ;
•	codificarea ierarhică, imaginea e codificată la rezoluţii multiple, astfel încît versiunile cu o rezoluţie redusă să poată fi acceptate fără a fi nevoie să se decompreseze imaginea la rezoluţie maximă.
	Modelul imaginii sursă folosit în propunerea JPEG este o abstractizare de la o varietate de tipuri de imagini şi aplicaţii, şi e constituit doar din ceea ce e necesar pentru a compresa şi reconstitui imaginea de bază. Trebuie recunoscut că formatul compresat JPEG nu memorează destulă informaţie care să servească la o realizare completă a imaginii indiferent de rezoluţie.
	Compresia standard a unei imagini trebuie să stabilească modul de gestionare de către sistem a datelor în timpul procesului de decompresie. Multe aplicaţii trebuie să lege procesul afişării sau tipăririi imaginilor multicomponentă în paralel cu procesul de decompresie. Pentru multe sisteme, aceasta este fezabilă doar dacă componentele sunt întrepătrunse împreună în interiorul aceluiaşi fişier compresat.
	Modul de operare secvenţial bazat pe DCT este constituit din paşii FDCT şi cei de cuantificare, descrişi la începutul acestui capitol. Acest model este cunoscut şi sub numele de baseline.
	În plus faţă de modelul secvenţial baseline, sunt definite şi alte modele secvenţiale menite să potriveazcă două precizii diferite de eşantion, 8 şi 12 biţi, şi două tipuri diferite de codificare entropică, Huffman şi compresia aritmetică.
	Procedura de codificare poate fi schiţată astfel :
1.	Filtrarea şi eşantionarea imaginii originale într-un anumit număr de multipli de 2 pe orice dimensiune ;
2.	Compresia acestei imagini de mărime redusă, folosind unul din codoarele menţionate: DCT secvenţial, DCT progresiv sau modelul fără pierderi ;
3.	Decompresia acestor imagini de dimensiune redusă şi apoi interpolarea şi eşantionarea ei cu 2 orizontal şi / sau vertical, folosind acelaşi filtru de interpolare pe care trebuie să îl folosească şi receptorul ;
4.	Folosirea acestor imagini eşantionate ca o predicţie a originalului la aceeaşi rezoluţie şi codarea imaginii diferenţă folosind modelele descrise ;
5.	Repetarea paşilor 3 şi 4 pînă a fost codificată întreaga rezoluţie a imaginii.

4.Compresia cu fractali

	Termenul de fractal a devenit cunoscut datorită frumoaselor imagini generate pe calculator şi pe care le numim impropriu fractali. Sub această denumire se ascunde însă o definiţie matematică a fractalilor, cunoscută numai celor interesaţi de acest domeniu.
	Datorită faptului că teoria fractalilor abia acum începe să se dezvolte, aplicaţiile acestora sunt aproape inexistente.
	Definiţia fractalilor în sens intuitiv a fost dată pentru prima dată de către Mandelbrot în 1989 astfel : o figură geometrică sau un obiect natural este fractal dacă întruneşte următoarele caracteristici :
•	părţile sale componente au aceeaşi formă sau structură cu  întregul, ţinînd cont de faptul că ele sunt la o scală diferită şi pot fi uşor deformate.
•	forma sa trebuie să fie extrem de neregulată, extrem de întreruptă sau fragmentată.
•	el conţine elemente distincte, care scalate sunt destul de variate şi formează o gamă foarte largă.
	Din punct de vedere al modului de generare, fractalii se împart :
•	fractali naturali existenţi în natură sau care sunt creaţi în urma unor procese naturale. De exemplu : Munţii, ţărmurile, sistemul nervos, arborii, sistemul de ramificaţii al bronhiilor etc.
•	fractali artificiali modele informatice ale fractalilor naturali. Întilniţi şi sub denumirea de seturi de fractali sau ansambluri de fractali. Am mai putea indentifica o grupă de fractali artificiali în natură. Cazul sistemului social, economic etc.
	Din punct de vedere al transformărilor care stau la baza generării unui fractal, aceştia se împart în :
•	fractali liniari care sunt generaţi cu ajutorul  transformărilor geometrice liniare aplicate asupra unor puncte, segmente suprafeţe sau corpuri. De exemplu, curbele Von Koch care în principiu se bazează pe următoarea transformare :
•	se pleacă de la un triunghi echilateral cu latura avînd o lungime finită; 
•	fiecare latură este secţionată în trei părţi egale, segmentul din mijloc se elimină şi se înlocuieşte cu un unghi ale cărui laturi sunt două segmente, egale cu segmentul eliminat.
•	pentru fiecare segment al figurii obţinute se repetă operaţia anterioară.
Dacă se porneşte de la un triunghi echilateral, se obţine o linie poligonală închisă cu latura din ce în ce mai mică. Fractalii liniari pot fi la rîndul lor  artificiali  sau naturali.
•	fractali neliniari se obţin cu ajutorul transformărilor geometrice neliniare. Şi aceştia pot fi artificiali sau naturali..
	Fractalii neliniari se împart, în funcţie de transformarea care stă la baza generării lor, astfel:
•	fractali auto-pătratici sunt obţinuţi cu ajutorul generatorului pătratic z2+c  unde z,c sunt numere complexe. De exemplu, mulţimea Mandelbrot este generată astfel : se consideră un plan complex, în care se explorează un domeniu rectangular complex de laturi lx şi ly, cu colţul stînga jos (x0,y0). Un punct curent din acest domeniu va fi notat cu z0 iar fiecărui punct z i se aplică următoarea transformare :
	În prezent există o varietate de metode de compresie a imaginilor folosind fractali. S-au dezvoltat tehnici de compresie a datelor 3D, reprezentate într-un spaţiu tridimensional. Aceste tehnici ar putea fi folosite în viitor la compresia imaginilor tomografice, care nu necesită o claritate perfectă.
	În continuare vor fi prezentate pe scurt cele mai răspîndite metode de compresie cu fractali.
	Vector Quantization (VQ) este o tehnică larg răspîndită în compresia imaginilor sau a altor tipuri de date, avînd extensii directe către compresia datelor 3D.
	În Scalar Quantization valorile se reprezintă printr-o mulţime fixată de valori reprezentative. De exemplu, dacă avem valori reprezentate pe 16 biţi şi trimitem doar cei mai semnificativi 8 biţi, vom avea o aproximare a datelor originale la o precizie destul de bună. În acest caz, toată submulţimea este formată din valori definite pe 16 biţi, divizibile cu 256. De exemplu, 0, 256, 512, ... .
	Standardul JPEG de compresie a imaginilor, bazat pe transformata cosinus discretă DCT şi  prezentat în capitolul 10, poate fi extinsă uşor la compresia datelor volumetrice. Acest model patriţionează volumul iniţial în blocuri de dimensiunea 83 şi DCT-ul converteşte cele 512 valori spaţiale în 512 valori de frecvenţă, care vor fi codificate mai rapid decît volumul iniţial de date.
	Implementările algoritmului DCT sunt întîlnite în multe din metodele de compresie cu fractali, deoarece calculul coeficienţilor DCT conduce la timpi de compresie foarte mici.
	Aproximările dintre blocurile rang şi blocurile domeniu se fac pe matricea coeficienţilor DCT extinsă. Uneori, cu algoritmii de căutare exhaustivă din teoria fractală, se găsesc o serie de asemănări care nu au fost surprinse în compresia JPEG, datorită caracterului secvenţial de împărţire a imaginii din algoritmul JPEG.
Modele de compresie cu fractali bazate pe IFS. Se utilizează modelul de reprezentare a culorilor YIQ, în locul modelului RGB, pentru a exploata mai uşor sensibilitatea ochiului uman la culori. Se vor asigna mai mulţi biţi pentru canalul Y şi mai puţini biţi pentru canalele I şi Q. Acest lucru este însă foarte bine cunoscut în modelul YIQ.
	Pentru fiecare bloc rang, se caută blocul domeniu care se aseamănă cel mai mult pe canalul Y utilizînd blocurile domeniu corespunzătoare din canalele I şi Q la determinarea IFS-ului. Blocurile domeniu din canalele I şi Q nu sunt neapărat blocurile care se potrivesc cel mai bine, însă comparaţia se face doar pe canalul Y. Deci, va exista doar o singură transformare geometrică pentru toate cele trei componente YIQ, în timp ce recalcularea transformării de volum optimă se face pentru fiecare din cele trei canale.

5.Compresia prin reţele neuronale

	În ultimii zece ani a avut loc o creştere considerabilă a interesului pentru domeniul reţelelor neuronale artificiale. Se pune problema de ce, pentru că prima referire la astfel de reţele, doar sub aspect matematic, a avut loc încă din anul 1943. Un răspuns ar putea fi nevoia de a găsi o alternativă într-o situaţie de blocaj.
	O reţea neuronală artificială este alcătuită dintr-o mulţime de noduri în care se află neuronii artificiali, elementele de procesare neliniare, care operează în paralel. Prin analogie cu neuronul biologic, un neuron artificial are un anumit număr de intrări şi o singură ieşire, care se poate conecta la mai mulţi neuroni. Fiecare intrare are asociată o anumită pondere care reprezintă importanţa pe care o are impulsul, prezent pe linia respectivă, la activarea neuronului.
	Neuronul artificial este o copie mult mai simplificată a neuronului biologic. Este format dintr-un corp, un set de intrări şi o ieşire. Fiecare intrare este ponderată, adică valoarea sa este multiplicată de o valoare corespunzătoare, numită pondere, apoi toate intrările ponderate sunt însumate.
	După deziluzia din anii 1960, cînd Minski şi Papert au arătat că sistemele neuronale simple nu sunt capabile să rezolve problema detecţiei parităţii, după anul 1980 au început să fie cercetate şi utilizate reţele neuronale capabile de autoînvăţare prin organizarea elementelor de procesare (memorii) într-o anumită structură topologică în funcţie de datele de învăţare.
	Faţă de sistemele MLP şi Boltzmann, care necesită supervizare în procesul de instruire, se precizează vectorul de intrare şi cel de ieşire şi se acţionează asupra parametrilor reţelei, aceste noi structuri se antrenează nesupervizat. Acest tip de reţele mai sunt cunoscute şi sum numele de self organising feature maps, SOFM.
În acest subcapitol se prezintă rezultatele aplicării unui sistem de algoritmi de compresie folosind reţele neuronale în compresia de imagine. Sistemul folosit este o combinaţie între două tipuri de modele : reţele de tip Kohonen şi Grossberg.
	În reţea sunt folosite trei straturi, primul fiind stratul de intrare, care este folosit la prelucrarea imaginii. Fiecare nod din stratul Intrare este conectat cu toate nodurile din stratul al doilea, denumit stratul Kohonen. În final, fiecare nod Kohonen este conectat cu toate nodurile din cel de-al treilea strat, stratul Grossberg. Ponderile legăturilor dintre aceste straturi sunt determinate cu ajutorul unor reguli de instruire ce vor fi prezentate.
	Procesul de compresie / decompresie include următoarele etape :
1.	Instruirea neuronilor din stratul de Intrare al compresiei, care este o reţea neuronală simplă, folosind un mic set de date. În general aceste date sunt încărcate înaintea compresiei fără a se mai pierde timp cu instruirea reţelei.
2.	Instruirea reţelei de decompresie care este de acemenea o reţea neuronală de acelaşi tip cu reţeaua de compresie, folosind acelaşi set de date.
3.	Împărţirea imaginii în blocuri de 4X4 sau 8X8 pixeli.
4.	Compresia fiecărei subimagini în 6 sau 4 semnale prin folosirea lor ca intrări într-o reţea de compresie.
5.	Transmiterea imaginii compresate la receptor, sau stocarea ei.
6.	Refacerea imaginii iniţiale cu o anumită toleranţă, măsurată ca rată a zgomotului introdus de semnal, cu ajutorul reţelei de decompresie.
	Pentru a extinde aceste rezultate la compresia de imagini în mai mult de două culori, trebuie dezvoltată o procedură de secţionare a imaginilor astfel încît să se poată folosi şi pe imaginile în mai multe culori, sau în tonuri de gri.
	Pentru a comprima şi decomprima imagini folosind reţele neuronale, trebuie să descompunem imaginea într-un număr finit de subimagini. Presupunînd că imaginea originală are o dimensiune de NXN pixeli, şi poate fi descompusă în K>0 subimagini de MXM pixeli. Pixelii fiecărei subimagini vor fi compresaţi cu o reţea neuronală în m biţi de date şi transmişi la recepţie. Cei m biţi primiţi la recepţie vor fi decompresaţi cu o altă reţea neuronală în subimagini de MXM pixeli. Se dezvoltă astfel două reţele neuronale, pentru procesele de compresie şi decompresie, fiind numite reţeaua de compresie şi respectiv reţeaua de decompresie.
	Numărul de neuroni din stratul de intrare este de MXM, care este compatibil cu numărul total de pixeli ai unei subimagini. Numărul de noduri Grossberg este m, care reprezintă numărul total de biţi transmişi. În continuare, numărul de noduri Kohonen este egal cu numărul total de modele folosite în procesul de instruire a reţelelor de compresie şi respectiv decompresie.
	Dacă o imagine care trebuie compresată este alb-negru, de exemplu valorile pixelilor putînd fi doar 0 sau 1, procesul de compresie va fi direct. Dar, dacă imaginea are un anumit număr de nuanţe de gri, este necesară o metodă de descompunere a imaginilor într-un anumit număr de imagini alb-negru. În acest studiu, se lucrează numai cu imagini de maxim 4 nivele de gri. Din moment ce fiecare pixel are nevoie de doar doi biţi pentru reprezentarea celor patru nivele de gri, adică 00, 01, 10, 11, bitul cel mai semnificativ şi cel nai puţin semnificativ pot fi separaţi , obţinîndu-se astfel două imagini alb-negru.
	Aceste două imagini pot fi compresate, transmise şi decompresate separat. Combinaţia dintre aceste două imagini după decompresie va avea ca rezultat imaginea în patru nuanţe de gri iniţială, sau o aproximaţie a acesteia. Rezultate destul de bune pentru imagini în nuanţe de gri s-au obţinut şi cu implementări ale reţelelor neuronale de tip backpropagation, dar acestea prezintă un grad foarte mare de pierdere a informaţiei.

6.Analiza comparată a algoritmilor de compresie

	Pentru a exemplifica o clasificare a algoritmilor de compresie folosind omogenitatea fişierelor, vom prelucra 250 de fişiere de diferite tipuri. Metricile folosite sunt entropia, lungimea fisierului şi indicatorul entropic. Se consideră următoarele loturi de fişiere : fişiere de date numerice, fisiere text, fisiere imagine si fisiere de sunet.

	În general, toate programele de compresie, de la LhArc pînă la Stacker considerînd şi DoubleSpace reduc spaţiul ocupat de fişiere pe disc cu ajutorul a trei algoritmi :
•	RLE, Run Length Encoding ;
•	Algoritmul Huffman ;
•	Compresia Lempel-Ziv, în principal algoritmul LZW .
	Pentru a exploata cel mai bine posibil spaţiul disponibil pe disc, DoubleSpace nu înregistrează fişierele compresate după schema obişnuită a sistemului de fişiere din DOS. Ele sunt memorate într-un fişier de volum compresat, adică compressed volume file CVF. Acest fişier este fix, începînd de la instalarea lui DoubleSpace, ocupînd în general cea mai mare parte a discului. Pe lîngă fişierele compresate, DoubleSpace stochează în şi structurile de date necesare gestionării ansamblului. DoubleSpace poate instala mai multe fişiere CVF în interiorul unui sistem : fiecare dintre ele va fi considerat un disc compresat separat şi va avea propriile sale structuri de date. Un fişier CVF, eventual sub forma unei dischete virtuale poate avea pînă la 512 MB lungime necompresată, care datorită algoritmilor de compresie din DoubleSpace poate ajunge să stocheze pînă la 1 GB de fişiere şi chiar mai mult. 

	Există numeroase criterii de clasificare şi un algoritm trecut prin fiecare dintre aceste criterii îşi defineşte de fapt caracteristicile.
După momentul în care se face compresia algoritmii sunt : 
•	algoritmi de compresie printr-o singură trecere : pe măsură ce se parcurge fişierul are loc şi compresia. Aceştia sunt cunoscuţi sub denumirea de algoritmi dinamici.
•	algoritmi de compresie prin mai multe treceri, sau algoritmi statici. La prima trecere se analizează alfabetul, frecvenţele simbolurilor, se identifică subşirurile care se repetă; iar la următoarele treceri are loc particularizarea alfabetului destinaţie strict la particularităţile pe care le prezintă subalfabetul fişierului sursă.
	Loturile de fişiere considerate ţin seama de diversitatea existentă în practică. Există fişiere de lungime foarte mare, mare, medie şi mică.
	Se consideră fişier foarte mare fişierul care are o lungime de zeci sau chiar sute de MB. Fişierele de lungime mare au dimensiuni între 1 şi 10 MB. Fişierele medii au lungimi sub 1 MB, dar mai mari decît 400 KB. Fişierele mici sunt cele cu o lungime mai mică de 400 Kb.
	Se consideră n fişiere şi gradele de compresie cuprinse între 0 şi 100. Se va spune că algoritmul de compresie x este :
•	excelent dacă gradul mediu de compresie este cuprins între 0.89 şi 1;
•	foarte bun dacă valorile gradului mediu de compresie sunt în intervalul 0.68 şi 0.89;
•	bun în cazul în care valorile gradului mediu de compresie sunt cuprinse în intervalul 0.41 şi 0.68;
•	mediu pentru valori ale gradului de compresie cuprinse între 0.23 şi 0.41;
•	slab pentru valori ale gradului mediu de compresie mai mici decît 0.23 şi mai mari decît 0.11;
•	foarte slab pentru grade de compresie mai mici decît 0.11.

Oricît de mare ar fi harddisk-ul dumneavoastră vine un moment cînd s-a umplut şi totuşi nu vreţi să renunţaţi la nici un fişier de pe el. Atunci aveţi două soluţii: fie vă mai cumpăraţi unul, dar se va umple şi acesta, fie folosiţi programe de compresie care vă pot economisi foarte mult spaţiu şi bani. Problema care apare este ce program anume să folosiţi. Pentru a decide singur care este mai bun şi de ce, citiţi acest capitol.
	Programele utilitare se deosebesc de celelalte prin :
•	generalitate : realizează compresia / decompresia oricărui fişier. Se indică numele programului utilitar, numele fişierului care face obiectul compresiei şi numele noului fişier ce va fi obţinut după compresie. După compresie se indică un mesaj privind calitatea procesului de compresie şi se afişează gradul de compresie.
•	fiabilitate : programul este astfel conceput încît nu apar erori de execuţie sau erori de compresie. Pentru aceasta a fost necesară o testare riguroasă.
•	continuitate : pornind de la alte programe utilitare se preiau reguli, în aşa fel încît programatorul să utilizeze direct, fără noi restricţii produsul. Simbolul unor parametrii, separatori şi semnificaţia lor dată în versiuni anterioare ale programului trebuie menţinute.
•	performanţa : viteza de compresie / decompresie trebiue să fie ridicată, asigurînd încadrarea în limitele acceptate, care definesc timpul real de lucru al configuraţiei.
•	protecţie : toate situaţiile conflictuale sunt gestionate de către program.

7.Software pentru compresie

	În anul 1997 a fost realizată o aplicaţie Windows 95, care poate rula în mod multitasking. Funcţiile de bază ale aplicaţiei DanAr Multimedia Compressor v2.4 for Windows 95 sunt compresia şi decompresia fişierelor, folosind o gamă largă de algoritmi.
	Aplicaţia este foarte uşor de utilizat, pentru fiecare opţiune existînd o explicaţie, prezentată în status bar.
	Cu ajutorul acestei aplicaţii se pot prelucra o mulţime de tipuri de arhive, .zip, .arj, .lha, .lzh, .rar şi .dan. Cu ajutorul opţiunii extern link, se pot comprima şi decomprima arhive de tipuri diferite celor prezentate, fiind necesară doar existenţa în directorul aplicaţiei a produsului care creează aceste arhive. 
	Aplicaţia este însoţită de o serie de utilitare, care sunt prezente în aproape toate programele de compresie. În cazul în care pe acelaşi calculator lucrează mai mulţi utilizatori se pot realiza mai multe fişiere de opţiuni. Fişierele de opţiuni au extensia .set,iar verificarea existenţei unuia dintre fişierele de opţiuni se poate realiza prin selecţia opţiunii din meniu : Tools / Restore default settings ... .
	Se poate lucra simultan cu două arhive, chiar de tipuri diferite. În cele două arhive se pot face adăugări de fişiere, ştergeri, extrageri şi chiar transferuri de fişiere între cele două arhive.
	Opţiunile standard ale aplicaţiei, existente în majoritatea programelor de compresie :
•	Crearea unor arhive noi ;
•	Deschiderea unei arhive, numai din tipurile specificate ;
•	Deschiderea celei de-a doua arhive ;
•	Schimbarea celor două arhive, între ele, dacă există două arhive deschise ;
•	Închiderea arhivelor ;
•	Informaţii despre arhivă ;
•	Informaţii despre fişiere (double click) ;
•	Ştergere de fişiere ;
•	Copiere de arhive ;
•	Ştergere de arhive ;
•	Adăugarea de comentarii, pentru fiecare fişier în parte, dacă se doreşte ;
•	Salvarea comentariilor în fişiere tip comentariu, pentru folosirea ulterioară ;
•	Introducerea parolelor, chiar pentru fiecare fişier din arhivă ;
•	Crearea de arhive autoexpandabile ;
•	Prezentarea pas cu pas a procesului de compresie ;
•	Adăugarea de fişiere în arhivă ;
•	Extragerea fişierelor dintr-o arhivă ;
•	Ştergerea fişierelor din arhivă.
Ce aduce nou aplicaţia Danar, faţă de alte programe de compresie :
•	Selectarea unei metode specifice de compresie, automat sau din meniu :
1.	Easy compression ;
2.	Average compression ;
3.	High rate compression ;
4.	Huge rate compression ;
5.	Fractal compression ;
6.	Genetic compression ;
7.	Multiple mode compression ;
8.	Cryterial compression ;
•	Selectarea unui tip de fişier pentru care se face compresia :
1. 	Fişiere text ;
2. 	Fişiere executabile ;
3. 	Imagini ;
4. 	Fişiere sunet ;
5. 	Compresie multimedia ;
6. 	Compresie video  ;
7. 	Compresie fără tip ;
8. 	Alt tip de fişiere ;
•	Transferul de fişiere între doua arhive ;
•	Listarea completă a arhivelor ;
•	Restaurarea unor parametrii salvaţi anterior, cu ajutorul fişierelor de configuraţie ;
•	Introducerea unui analizor de fişiere, cu ajutorul căruia se pot obţine informaţii despre cea mai bună metodă de compresie pentru fişierele selectate ;
•	Analizorul de fişiere, care foloseşte o structură de reţele neuronale, pentru determinarea celui mai bun algoritm de compresie ;
•	Existenţa unei istorii a fişierelor arhivate anterior ;
•	O analiză rapidă a fişierelor, datorită studiilor statistice efectuate pe fişiere, de-a lungul timpului ;
•	Componenta de compresie automată, care apelează analizorul în faza de compresie.
Pentru varianta comercială a produsului puteţi contacta autorii.

8.Concluzii
	Oricît de mult se dezvoltă suporţii de stocare a informaţiei, capacitatea lor va fi întotdeauna un neajuns pentru implementarea aplicaţiilor informatice.
	Trecerea de la banda perforată la banda magnetică a condus la apariţia restricţiilor de utilizare a fişierelor independente. Trecerea de la banda magnetică la dischetă a adus unele restricţii pentru bazele de date. Dezvoltarea discurilor magnetice generează restricţii în domeniul bazelor de date multimedia, şirul de restricţii continuînd asupra dimensiunilor şi complexităţii volumelor de date care se manipulează simultan. O soluţie cu caracter de ameliorare o reprezintă compresia / decompresia de date, însoţită de un consum de timp, influenţată puternic de performanţele microprocesoarelor şi ratele de transfer.
	Deşi există conturate tipologii de algoritmi, problema dezvoltării de noi clase rămîne deschisă. De asemenea, elaborarea de software destinat compresiei creşte rata de compresie.
	Se identifică următoarele probleme :
•	stabilirea corespondenţei dintre caracteristicile fişierelor supuse compresiei / decompresiei şi algoritmul  cu rata de compresie cea mai bună ;
•	cuantificarea redundanţei inclusă în fişiere şi folosirea indicatorilor asociaţi în selectarea algoritmilor de compresie sau chiar în dezvoltarea de noi algoritmi ;
•	construirea de software care diferenţiază algoritmii de compresie funcţie de caracteristicile fişierelor pentru fişiere de imagine statice se foloseşte un tip de algoritm, pentru animaţie alt tip de algoritm, pentru sunet de asemenea ;
•	dezvoltarea unor elemente de optimizare multicriterială (minimizare spaţiu pe suport şi minizizare durată compresie / decompresie, minimizare costuri) ;
•	realizarea unui echilibru între informaţia stocată şi cea generată prin evaluări de funcţii ;
•	urmărirea dezvoltării de algoritmi care iau în considerare noile resurse ale sistemelor de calcul, memoria cache, memoria RAM, multiprocesarea .
	Problema compresiei / decompresiei apare cu atît mai importantă cu cît se realizează globalizarea reţelelor de calculatoare.
	Trecerea de la documentele clasice la imagini stocate pe suport magnetic impune specializarea serverelor şi deci concentrarea de informaţii omogene.
	Volumele deosebit de mari presupun şi criterii de regăsire. În acest caz se implementează 3 nivele de software :
•	un software de interfaţă pentru localizare în reţea şi regăsire după chei compuse a informaţiei (articol); acest software trebuie să fie general, prietenos şi simplu ;
•	software pentru regăsirea informaţiei care preia elementele de dialog şi realizează localizarea şi extragerea informaţiilor dorite (articol) în formă compresată ;
•	software pentru decompresie şi prelucrare a informaţiei selectate la nivelul utilizatorului; această componentă face viabilă tehnologia transmisiei de date în reţea .
	Indiferent care sunt performanţele tehnice ale manipulării informaţiei în reţea, creşterea ratei de compresie rămîne în actualitate pentru că :
•	staţiile de lucru au resurse de stocare limitate şi orice activitate este precedată de decompresie respectiv compresie de date ;
•	tipologia fişierului de date numerice destinate calculelor pentru indicatori economici, tehnici, evidenţe contabile au o pondere redusă în favoarea aplicaţiilor în care imaginea joacă un rol important ;
•	raportul dintre informaţia transmisă şi informaţia efectiv prelucrată este extrem de mic ;
•	conţinutul fişierelor care fac obiectul transferului preia fără modificări esenţiale imagini ale documentelor sau fotografii în formă brută care limitează performanţa algoritmilor de  compresie .
	Actualitatea compresiei / decompresiei ca subiect de cercetare şi de dezvoltare software este subliniată de existenţa unor conferinţe anuale (Data Compression Conference DCC), de lansarea pe piaţă de pachete de programe pentru compresie şi mai ales de elaborarea de standarde pentru stocarea informaţiei în fişiere în concordanţă cu creşterea ratei de compresie.
	Mai mult, nu este concepută realizarea unui kit de instalare care să nu utilizeze fişiere compresate, deci care să nu facă decompresie de date cu componente program proprii, specializate.
	Programatorii au acces la funcţii de compresie / decompresie ca părţi integrante ale unor biblioteci indispensabile implementării limbajelor de programare (vezi LZDecompress).
	Instrumente puternice dezvoltate în ultimul timp în informatică şi-au găsit aplicaţii în compresia de date (fractali, reţele neuronale, algoritmi genetici).
	Se observă caracterul deschis al domeniului. Se impun însă analize cantitative şi calitative ale intrărilor, ieşirilor, transformărilor specifice proceselor de compresie / decompresie şi găsirea unei zone de optimalitate. Aceasta trebuie să ia în considerare minimizarea pierderii de informaţie, maximizarea ratei de compresie, minimizarea duratelor de compresie şi minimizarea spaţiului ocupat.
	Fiecărei tipologii de algoritm i se asociază limite ce trebuie estimate. Pe baza acestora are loc o ierarhizare a algoritmilor şi crearea unor procese echilibrate de compresie / decompresie.
	Software-ul dedicat acestor operaţii nu creează baze de date privind comportamentul, ceea ce impune perfecţionarea acestui software.
	În acest sens, componentele adăugate trebuie să măsoare caracteristicile fişierelor de intrare şi consumul de resurse, precum şi caracteristicile fişierelor de ieşire.
	Aceste baze de date trebuie să contribuie la ajustarea comportamentului programelor de compresie prin modificarea criteriilor de selecţie a algoritmilor.
Asigurarea unei largi circulaţii a textelor sursă ce corespund implementărilor de algoritmi este o condiţie pentru dezvoltarea de aplicaţii pe compresie de date.
	Software-ul aplicativ devine complet dacă operează cu fişiere compresate proprii. De exemplu, un mediu de programare pentru limbajul C++ este complet dacă la ieşire oferă un program sursă compresat, dacă la compilare se face decompresia fişierului text sursă şi compresia fişierului obiect, dacă la link-editare se face decompresia fişierului obiect şi compresia fişierului executabil, iar la execuţie se face decompresia şi lansarea în execuţie a fişierului executabil.
	Acele funcţii de compresie sau decompresie la dispoziţia programatorului au tocmai rolul de a încorpora utilitare în aplicaţii şi de a elimina transparenţa compresiei / decompresiei prin comenzi impuse utilizatorului.

Bibliografie

1.	Frank Rubin, Experiments in text File Compression, CACM vol 19, nr.1, 1976, pp.617-622
2.	I. Ivan, D. Verniş, Analiza comparată a algoritmilor de compresie date, PC World, nr.12, Decembrie 1995
3.	I. Ivan, D. Verniş, Evaluarea seturilor de date destinate compresării, Revista Română de Statistică, nr.1, Ianuarie 1996
4.	I. Ivan, D. Verniş, Compresia de date, PC Report, nr.9, Septembrie 1996
5.	I. Ivan, D. Verniş, Particularităţi ale algoritmilor de compresie imagine, Studii şi cercetări de calcul economic şi cibernetică economică, nr.1-2, 1996
6.	I. Ivan, D. Verniş, P. Oprea, Metrici pentru compresia fişierelor, Informatica Economică, nr. 2, 1997
7.	I. Ivan, C. Bodea, D. Verniş, Utilizarea reţelelor neuronale în compresia de date, Informatica Economică, nr. 3, 1997
8.	I. Ivan, D. Verniş, D. Ţuţui, Entropia şi compresia de date, Buletinul de Informatică ICI, nr. 3, 1997
9.	Daniel Verniş, Data Compression Algorithms, Proceedings of Student’s Research in Economic Informatics, ASE, Bucureşti, 1995
10.	Daniel Verniş, Algoritmi de compresie pentru siruri de date numerice, Cercul de Structuri de Date, A.S.E. Bucureşti, 1996
11.	Daniel Verniş, Data Compression Software, Proceedings of Student’s Research in Economic Informatics, ASE, Bucureşti, 1997
12.	Daniel Verniş, Implementarea algoritmilor de compresie folosind reţele neuronale, A.S.E. Research Report , Bucharest Iunie 1997
13.	Daniel Verniş, Compresia de date, Cercul de Structuri de Date, A.S.E. Bucureşti, 1997
14.	Ivan, Daniel Verniş, Compresia în reţele ATM, Informatica Economică, nr. 2 1997
15.	Vaishampaman and N. Farvardin, Optimal Block Cosine Transform Image Coding For Noisy Channels, IEEE Transactions on Communications, vol.38, nr.3, March 1990, p.327-336
16.	K. Zheng, Compressed Treee Machines, IEEE Transactions on Computers, vol.43, nr.2, Feb.1994, p.222-226
17.	J. Ziv and A. Lempel, A Universal Algorithm For Sequential Data Compression, IEEE Transactions on Informations Theeory Vol.23, nr.3, Mai 1977, p.337-343
18.	J. Ziv and A. Lempel, Compression of Individual Sequences Via Variable-Rate Coding, IEEE Transactions on Informations Theeory vol.24, nr.5, Sept. 1978, p.530-536