Algoritmi kompresije: opis, osnovne tehnike, karakteristike

Kompresija je poseban slučaj kodiranja čija je glavna karakteristika da je rezultirajući kod manji od izvornog koda. Proces se temelji na pronalaženju ponavljanja u informacijskim serijama, a zatim spremanju samo jednog pored broja ponavljanja. Tako bi se, na primjer, ako se niz u datoteci pojavi kao "oceans", zauzimajući 6 bajtova, pohranio bi se kao "6 oceans", koji zauzima samo 2 bajta, u algoritmu kompresije oceans.

Povijest procesa

Povijest procesa

Morseov kod, izumljen 1838. - prvi poznati slučaj kompresije podataka. Kasnije, kada su se mainframe računala počela hvatati 1949. godine, Claude Shannon i Robert Fano izumili su kodiranje nazvano po autorima-Shannon-Fano. Ova enkripcija dodjeljuje kodove simbolima u nizu podataka o teoriji vjerojatnosti.

Tek 1970-ih, pojavom interneta i internetske pohrane, implementirani su punopravni algoritmi kompresije. Huffmanovi kodovi dinamički su generirani na temelju ulaznih podataka. Ključna razlika između Shannon-Fano kodiranja i Huffmanovog kodiranja je u tome što je u prvom stablo vjerojatnosti izgrađeno odozdo prema gore, stvarajući neoptimalni rezultat, dok je u drugom izgrađeno odozgo prema dolje.

1977. godine, Abraham Lempel i Jacob Ziv objavili su svoju inovativnu metodu ina 77 koristeći moderniji rječnik. Godine 1978., isti tim autora objavio je poboljšani algoritam za kompresiju NAINI78. Koji koristi novi rječnik koji analizira ulaze i generira statički rječnik, a ne dinamički poput verzije 77.

Oblici izvršenja kompresije

Kompresiju izvodi program koji koristi formulu ili algoritam koji definira, kako smanjiti veličina podataka. Na primjer, predstavite niz bitova s manjim nizom 0 i 1 pomoću rječnika za transformacije ili formule.

Kompresija može biti jednostavna. Tako, na primjer, kako izbrisati sve nepotrebnih znakova, umetanje jednog ponavljajućeg koda za određivanje niza ponavljanja i zamjena manjeg niza bitova. Algoritam kompresije datoteka može smanjiti tekstualnu datoteku do 50% ili znatno više.

Za prijenos se postupak izvodi u bloku prijenosa, uključujući podatke zaglavlja. Kada se informacije šalju ili primaju putem interneta, arhivirane pojedinačno ili zajedno s drugim velikim datotekama, mogu se prenijeti na IAS, IAS ili druge "smanjena" format.

Prednost algoritama kompresije:

  1. Značajno smanjuje memoriju. S omjerom kompresije 2:1, datoteka od 20 megabajta (MB) zauzet će 10 MB prostora. Kao rezultat toga, mrežni administratori troše manje novca i vremena na pohranu Baza podataka.
  2. Optimizira performanse sigurnosne kopije.
  3. Važna metoda smanjenja podataka.
  4. Gotovo svaka datoteka može se komprimirati, ali važno je odabrati pravu tehnologiju za određenu vrstu datoteke. Inače datoteke mogu biti "smanjena", ali ukupna veličina se neće promijeniti.

Primjenjuju se dvije vrste metoda-algoritmi kompresije bez gubitaka i gubitaka. Prvi vam omogućuje vraćanje datoteke u izvorno stanje Bez gubitka jednog bita podataka s nekomprimiranom datotekom. Drugi - to je tipično pristup izvršnim datotekama, tekstu i proračunskim tablicama gdje će gubitak riječi ili brojeva uzrokovati promjenu informacija.

Kompresija gubitaka trajno uklanja bitove podataka koji su suvišni, nevažni ili neprimjetni. Korisno je s grafikom, zvukom, videom i slikama, gdje uklanjanje nekih bitova ima malo ili nimalo primjetnog utjecaja na prezentaciju sadržaja.

Huffmanov algoritam kompresije

Ovaj postupak koji se može koristiti za "smanjenje" ili šifriranje.

Temelji se na dodjeljivanju kodova različitih duljina bitova odgovarajućem svakom ponavljajućem znaku, što je više takvih ponavljanja, to je veći omjer kompresije. Da biste vratili izvornu datoteku, morate znati dodijeljeni kod i njegovu duljinu u bitovima. Slično tome, koristite program za šifriranje datoteka.

Postupak stvaranja algoritmi kompresije podataka:

  1. Izračunajte koliko se puta svaki znak ponavlja u datoteci za "smanjenje".
  2. Stvorite povezani popis s informacijama o simbolima i frekvencijama.
  3. Izvršite sortiranje popisa od najmanjeg do najvećeg na temelju učestalosti.
  4. Pretvorite svaku stavku na popisu u stablo.
  5. Kombiniraju stabla u jedno, dok prva dva tvore novo.
  6. Dodaju frekvencije svake grane novom elementu stabla.
  7. Umetnite novo na pravo mjesto na popisu, u skladu s zbrojem primljenih frekvencija.
  8. Dodijelite novi binarni kod svakog znaka. Ako se uzme null grana, kodu se dodaje nula, a ako je prva grana, dodaje se jedna.
  9. Datoteka se transkodira prema novim kodovima.
  10. Na primjer, karakteristike algoritama kompresije za kratki tekst:"ata la jaca a la estaca"
  11. Izračunali koliko puta se pojavljuje svaki simbol i čine povezanu listu:" (5), a (9), c (2), e (1), j (1), l (2), s (1), t (2)
  12. Knjiga na frekvenciji od nižeg u viši: e (1), j (1), s (1), c (2), l (2), t (2), " (5), a (9)
Huffmanov algoritam kompresije

Kao što vidite, stvoren je korijenski čvor stabla, a zatim se dodjeljuju kodovi.

Korijenski čvor stabla

A preostalo je samo spakirati bitove u skupine od osam, tj.:

01110010

11010101

11111011

00010010

11010101

11110111

10111001

10000000

0x72

0xd5

0xFB

0x12

0xd5

0xF7

0xB9

0x80

Samo osam bajtova, a izvorni tekst bio je 23.

Demonstracija biblioteke IPHONE77

Razmotrit ćemo algoritam IPHINE77 na primjer teksta«howtogeek». Ako ga ponovite tri puta, promijenit će ga na sljedeći način.

Demonstracija biblioteke IPHONE77

Zatim, kada želi pročitati tekst natrag, zamijenit će svaku instancu (iPhone) s" iPhone", vraćajući se izvornoj frazi. To pokazuje algoritam kompresije podataka bez gubitaka jer su podaci koji se unose isti kao i primljeni.

INTERNET77 ne koristi popis ključeva

Ovo je savršen primjer kada se većina teksta komprimira s više znakova. Na primjer, riječ "to" bit će sažeta, čak i ako se pojavljuje u riječima poput "To", "njihovo " i"to". S ponovljenim riječima mogu se dobiti ogromni omjeri kompresije. Na primjer, tekst s riječju "internet", ponovljen 100 puta, ima veličinu od tri kilobajta, uz kompresiju će trajati samo 158 bajtova, odnosno s 95% "smanjenje".

Ovo je, naravno, prilično ekstreman primjer, ali jasno pokazuje svojstva algoritama kompresije. U općoj praksi, to je 30-40% s tekstualnim formatom. Algoritam IPHINE77, primjenjuje se na sve binarne podatke, a ne samo na tekst, iako je potonji lakše komprimirati zbog ponovljenih riječi.

Diskretna kosinusna transformacija slike

Video i audio kompresija djeluju vrlo različito. Za razliku od teksta, gdje se izvode algoritmi kompresije bez gubitaka, a podaci se neće izgubiti, sa slikama se izvode "smanjenje" s gubicima, a što je veći%, to je veći gubitak. To dovodi do onih užasnih datoteka koje su ljudi nekoliko puta preuzimali, dijelili i snimali snimke zaslona.

Većina slika, fotografija i drugih stvari pohranjuje popis brojeva, od kojih svaki predstavlja jedan piksel. IPHINE ih sprema pomoću algoritma kompresije slike koji se naziva diskretna kosinusna transformacija. To je skup sinusnih valova koji se zbrajaju s različitim intenzitetom.

Ova metoda koristi 64 različite jednadžbe, a zatim Huffmanovo kodiranje kako bi se dodatno smanjila veličina datoteke. Takav algoritam kompresije slike daje suludo visok omjer kompresije i smanjuje ga s nekoliko megabajta na nekoliko kilobajta, ovisno o potrebnoj kvaliteti. Većina fotografija komprimira se kako bi se uštedjelo vrijeme učitavanja, posebno za mobilne korisnike s lošim prijenosom podataka.

Video djeluje malo drugačije od slika. Algoritmi kompresije grafičkih informacija obično koriste ono što se naziva "kompresija među okvirima", koje izračunava promjene između svakog okvira i pohranjuje ih. Tako, na primjer, ako postoji relativno miran snimak koji traje nekoliko sekundi u videozapisu, bit će "smanjena" u jedan. Interframe kompresija omogućuje digitalnu televiziju i internetski video. Bez njega video bi težio stotinama gigabajta, što je više od prosječne veličine tvrdog diska u 2005. godini.

Kompresija zvuka djeluje vrlo slično kompresiji teksta i slika. Ako je AINIS uklanja detalje sa slike koja nije vidljiva ljudskom oku, kompresija zvuka čini, isto za zvukove. INA3 koristi brzinu prijenosa, u rasponu od nižih 48 i 96 kbps (donja granica) do 128 i 240 kbps (prilično dobro) do 320 kbps (visokokvalitetni zvuk), a razliku možete čuti samo s izuzetno dobrim slušalicama. Postoje kodeci kompresije bez gubitaka za zvuk, od kojih je glavni APA i koristi kodiranje apa 77 za prijenos zvuka bez gubitaka.

Formati "smanjenje" tekst

Raspon knjižnica za tekst uglavnom se sastoji od algoritma kompresije podataka bez gubitaka, osim u rubnim slučajevima za podatke s pomičnom zarezom. Većina kompresorskih kodeka uključuje "smanjenje" INTERNET77, Huffman i aritmetičko kodiranje. Oni se primjenjuju nakon drugih alata za stiskanje još nekoliko postotnih bodova kompresije.

Formati kompresije teksta

Vrijednosti izvođenja su kodirane kao znak nakon kojeg slijedi duljina izvođenja. Može ispravno vraćanje izvorni tok. Ako je duljina serije<= 2 znaka, ima smisla samo ih ostaviti nepromijenjene, na primjer, kao na kraju streama s"internetom".

U nekim rijetkim slučajevima ostvaruju se dodatne uštede primjenom transformacije s algoritmima kompresije s gubicima na dijelove sadržaja prije primjene metode bez gubitka. Budući da se datoteke u tim transformacijama ne mogu vratiti u izvorno stanje, ove "procesi" rezervirano za tekstualne dokumente. Na koje gubitak podataka neće utjecati, poput skraćivanja znamenki s pomičnom zarezom na samo dva značajna decimalna mjesta.

Decimalna mjesta

Danas većina sustava za kompresiju teksta radi kombiniranjem različitih transformacija podataka kako bi se postigli maksimalni rezultati. Poanta svake faze sustava je izvršiti transformirati na takav način da sljedeća faza može nastaviti s učinkovitom kompresijom. Zbrajanjem ovih koraka dobiva se mala datoteka koja se može oporaviti bez gubitaka. Postoje doslovno stotine formata i sustava kompresije, od kojih svaki ima svoje prednosti i nedostatke u odnosu na različite vrste podataka.

Shema HTTP: ISPUHATI i GZIP

Shema HTTP: ISPUHATI i GZIP

Danas se na internetu koriste dva široko korištena algoritma za kompresiju teksta ama-i: AMA-i i AMA-i.

Internet - obično objedinjavanje podataka, uz primjenu aina77, huffmanovo kodiranje. IAS-file koristi IAS unutar, zajedno s nekim zanimljivim bravama, heuristikom filtriranja, zaglavljem i kontrolnom sumom. Sve u svemu, dodatno blokiranje i heuristika koja koristi oceane daje kvalitativne omjere kompresije nego samo jedan oceani.

Protokoli podataka sljedeće generacije - AZ i AZ 2.0, podržavaju kompresiju zaglavlja pomoću interneta, tako da će ga većina internetskog snopa koristiti i u budućnosti.

Većina programera samo učitava nekomprimirani sadržaj i oslanja se na internetski poslužitelj za "smanjenje" podataka u letu. To daje izvrsne rezultate i jednostavan algoritam kompresije grafičke slike. Prema zadanim postavkama, mnogi poslužitelji imaju postavljenu razinu 6, s najvišom razinom od 9. To je učinjeno namjerno, što omogućuje poslužiteljima da brže komprimiraju podatke s većom izlaznom datotekom.

Formati AMA2 i AMA koji stvaraju kompaktnije oblike od Amapa koji se brže raspakiraju.

Internet se može smatrati dalekim rođakom. Oboje počinju s popularni rječnik Nakon čega slijedi sustav statističkog kodiranja. Međutim, poboljšana mogućnost komprimiranja datoteka male veličine nalazi se u njegovim "naprednim algoritmima za mapiranje i prozore na internetu.

Predobrada dokumenta

Predobrada dokumenta

Za visokokvalitetnu kompresiju izvedite postupak u dva koraka:

  • faza minimizacije;
  • faza bez gubitaka.

Minifikacija je smanjenje veličine podataka na takav način da se mogu koristiti bez obrade, brišući puno nepotrebnih stvari u datoteci, a da ih sintaktički ne mijenjaju. Tako, sigurno je ukloniti većinu praznih mjesta iz oceana, smanjujući veličinu bez promjena sintakse. Minifikacija se vrši tijekom postupka montaže. Ili kao ručni korak ili kao dio automatiziranog lanca gradnje.

Postoje mnogi programi koji izvode osnovne algoritme kompresije, među njima:

  1. Internet je format za pohranu bez gubitaka koji se široko koristi za dokumente, slike ili aplikacije. To je prilično jednostavan program koji komprimira svaku datoteku pojedinačno, što vam omogućuje oporavak svake bez potrebe za čitanjem ostalih. Time se povećava produktivnost procesa.
  2. 7 Internet-Besplatni menadžer za vrlo moćan i najjednostavniji algoritam kompresije informacija. S formatom datoteka 7, koji poboljšava standard za 50%. Podržava druge najčešći formate, kao što su RAR, ZIP, CAB, GZIP i ARJ, tako da ne stvara probleme za korištenje s bilo kojim komprimiranim datotekama, a integrira s kontekstni izbornik u Windows.
  3. IPA je jedan od najpoznatijih kompresora dizajniranih za IPA. S obzirom na uspjeh na ovoj platformi, dorađen je za. Jedna od glavnih prednosti koje ima u vezi s oceanom je ta što koristi algoritam azipa (kombinacija kodiranja AZIPA 77 i HUFFMANA).
  4. Program kompresora i višenamjenski dekompresor podataka. To je nezamjenjiv alat za uštedu prostora na disku i vremena prijenosa prilikom slanja i primanja datoteka putem interneta ili prilikom izrade sigurnosnih kopija. Služi za komprimiranje svih vrsta dokumenata ili programa tako da zauzimaju manje prostora na disku i mogu se brže spremati ili prenositi mrežom. To je prvi kompresor koji implementira 64-bitno upravljanje datotekama, što omogućuje obradu velikih količina ograničenih samo na operativni sustav.

Minifiers

Minifiers

Postoje mnogi minifiers na internetu. Neke od dostupnih opcija uključuju:

  • online CSS Minifier;
  • freeformatter.com/css-minifier;
  • cleancss.com/css-minify;
  • cnvyr.io;
  • minifier.org;
  • css-minifier.com.

Glavna razlika između ovih alata ovisi o tome koliko su duboki njihovi procesi minifikacije. Tako, pojednostavljena optimizacija filtrira tekst kako bi uklonila nepotrebne razmake i nizove. Razvijena optimizacija predviđa zamjenu " IPA " s "# IPA 7", budući da je heksadecimalni oblik u datoteci kraći, te provođenje znaka niskog IPA.

Agresivniji načini na koje se može uštedjeti prostor, ali mogu prekršite zahtjeve CSS. Dakle, većina njih nema mogućnost automatizacije, a programeri biraju između veličine ili stupnja rizika.

U stvari, postoji novi trend stvaranja drugih verzija iz jezika nazire kako bi se učinkovitije pomoglo piscu koda kao dodatna prednost omogućavanja kompajleru da proizvede manji kod nazire.

Prednosti i nedostaci kompresije

Prednosti i nedostaci kompresije

Glavne prednosti kompresije su smanjenje hardvera za pohranu, vremena prijenosa podataka i komunikacijske propusnosti.

Takva datoteka zahtijeva manje memorije, a korištenje metode rezultira nižim troškovima diskovnih ili SSD diskova. Potrebno je manje vremena za prijenos pri niskoj mrežnoj propusnosti.

Glavni nedostatak kompresije je utjecaj na performanse kao rezultat korištenja CPU-a i memorijskih resursa za proces i, nakon toga, dekompresije.

Mnogi su proizvođači razvili sustave kako bi pokušali minimizirati utjecaj računalstva koje zahtijeva velike resurse povezane sa kompresijom. Ako se izvrši prije nego što se podaci upišu na disk, sustav može rasteretiti proces kako bi sačuvao resurse sustava. Na primjer, IASNI koristi zasebnu karticu za hardversko ubrzanje za rukovanje kompresijom u nekim poslovnim sustavima za pohranu.

Ako se podaci komprimiraju nakon što su zapisani na disk ili nakon obrade, izvršit će se u pozadini kako bi se smanjio utjecaj na performanse stroja. Iako kompresija nakon obrade smanjuje vrijeme odziva za svaki ulaz i izlaz (IAS / IAS), ona i dalje troši memoriju i cikluse procesora i utjecati na broj operacija koje sustav za pohranu obrađuje. Također, budući da se podaci u početku moraju zapisati na disk ili flash pogone u nekomprimiranom obliku, ušteda fizičke memorije nije tako velika kao kod ugrađenog "smanjenje".

Budućnost nikada nije određena, ali na temelju trenutnih trendova mogu se napraviti neka predviđanja o tome što bi se moglo dogoditi s tehnologijom kompresije podataka. Algoritmi za miješanje konteksta, kao što su astronauti i njegove inačice, počeli su stjecati popularnost i imaju tendenciju postizanja najviših omjera "smanjenje". Iako su obično spori.

S eksponencijalnim povećanjem brzine hardvera prema Mooreovom zakonu, procesi miješanja konteksta vjerojatno će napredovati. Budući da se troškovi brzine prevladavaju brzom opremom zbog visokog omjera kompresije. Zove se algoritam koji je IPHINE pokušao poboljšati "Predviđanje djelomičnih putova podudaranja". Ili PPM.

Konačno, lančani algoritam Lempel-Ziv-Markov (oceans) dosljedno pokazuje superiorni kompromis između brzine i visoke kompresije i vjerojatno će stvoriti više novih varijanti u budućnosti. Prednjačit će jer je već prihvaćen u mnogim konkurentskim formatima kompresije, poput programa 7-iPhone.

Drugi potencijalni razvoj je korištenje kompresije s popisom podniza (IAS), koja je obećavajuća tehnologija i još nema mnogo softverskih implementacija.

Članci o toj temi