You are on page 1of 19

Univerzitet u Nišu

Elektronski fakultet

Seminarski rad
Metodi i sistemi za obradu signala

Kompresija podataka primenom


MNP7 protokola

Studenti: Profesor:
Milan Stanković Prof. dr Miloš Radmanović
Aleksandar Stamenković
Sadržaj
Kompresija podataka ................................................................................................................. 3
Kompresija bez gubitaka............................................................................................................ 4
Kompresija sa gubicima ............................................................................................................. 5
Srodne oblasti............................................................................................................................. 5
Statističke metode ...................................................................................................................... 5
Koncept teorije informacije ....................................................................................................... 6
Kodovi promenljivih dužina ...................................................................................................... 7
Microcom Networking Protocol ................................................................................................ 7
MNP klase.................................................................................................................................. 8
MNP 1 i 2 ................................................................................................................................... 8
MNP 3 ........................................................................................................................................ 8
MNP 4 ........................................................................................................................................ 9
MNP 5 ........................................................................................................................................ 9
MNP 6 ...................................................................................................................................... 10
MNP 7 ...................................................................................................................................... 11
MNP 9 ...................................................................................................................................... 12
MNP 10 .................................................................................................................................... 12
Markovljev model .................................................................................................................... 13
Klasni dijagram projekta .......................................................................................................... 15
Tok podataka prilikom kompresije .......................................................................................... 16
Implementacija pomoću stabla naspram implementacije pomoću 3D polja ........................... 17
Eksperimentalni rezultati ......................................................................................................... 18
Pouzdanost ............................................................................................................................... 18
Zaključak.................................................................................................................................. 19
Reference ................................................................................................................................. 19

2
Kompresija podataka
U obradi signala, kompresija podataka, kodiranje izvora, ili redukcija bitne stope
obuhvata kodiranje informacija koristeći manji broj bitova nego u originalnoj reprezentaciji.
Kompresija može da bude bilo sa gubicima ili bez gubitaka. Kompresija bez gubitka redukuje
bitove putem identifikacije i eliminacije statističke metode. Informacije se ne gube pri tom vidu
kopresije. Kompresija sa gubicima redukuje bitove uklanjanjem nepotrebnih ili manje važnih
informacija.
Proces redukovanja veličine datoteke sa podacima se obično naziva kompresijom
podataka. U kontekstu prenosa podataka, toj proces se naziva kodiranjem izvora; kodiranje se
tipično vrši na izvoru podataka pre njihovog skladištenja ili prenosa. Kodiranje izvora ne treba
mešati sa kodiranjem kanala radi detekcije i korekcije grešaka, ili kodiranjem linije sredstva za
mapiranje podataka na signal.

Kompresija je korisna jer se njom redukuju resursi neophodni za skladištenje i prenos


podataka. Računarski resursi se konzumiraju pri procesu kompresije i isto tako pri suprotnom
procesu (dekompresiji). Kompresija podataka je zavisna od kompromisa prostorno–vremenske
kompleksnosti. Na primer, kompresiona šema za video može da zahteva skup hardver da bi se
video dovolno brzo dekompresovao tako da se može gledati kao da je već bio dekomprimovao.
Opcija da se video u potpunosti dekompresuje pre gledanja može da pude nepodesna ili da

3
zahteva znatan dodatni prostor. Dizajn šema za kompresiju podataka obuhvata kompromise
među mnoštvom različitih faktora, uključujući stepen kompresije, količinu unešene distorzije
(pri korištenju kompresije sa gubitkom), i računarske resurse neophodne za komprimovanje i
dekomprimovanje podataka.
Na slici je simbolički prikazan metod kompresije podataka, gde se vidi razlika između
originalnih podataka i podataka nakon kompresije, tj. kompresovanih podataka.

Originalni podaci – kompresovani podaci

Kompresija bez gubitaka


Algoritmi kompresije bez gubitka obično iskorišćavaju statističku redundanciju za
prikazivanje podatka bez gubitaka informacija, tako da je proces reverzibilan. Kompresija bez
gubitaka je moguća zato što većina podataka iz realnog sveta pokazuje statističku izlišnost. Na
primer, jedna slika može imati područja boje koja se ne menjaju tokom nekoliko piksela;
umesto kodiranja „crveni piksel, crveni piksel, ...” podaci mogu da budu kodirani kao „279
crvenih piksela”. Ovo je bazni primer kodiranja dužine trajanja; postoje mnoge šeme za
smanjenje veličine datoteke uklanjanjem redundancije.
Lempel–Zivovi (LZ) kompresioni metodi su među najpopularnijim algoritmima za
skladištenje bez gubitaka. DEFLATE je varijacija LZ pristupa optimizovana za dekompresiju
govora i poboljšanje kompresionog odnosa, ali kompresija može da bude spora. Tokom sredine
1980-ih, nakon rada Terija Velča, Lempel-Ziv-Velčov (LZW) algoritam brzo je postao
preferentni metod za većinu kompresionih sistema opšte namene. LZW se koristi u GIF
slikama, programima kao što je PKZIP, i hardverskim uređajima kao što su modemi. LZ metodi
koriste kompresioni model koji je baziran na tabelama, pri čemu se tabelarnim unosima
zamenjuju ponavljajući nizovi podataka. Za većinu LZ metoda, ova tabela se dinamički
generiše iz ranijih podataka na ulazu. Sama tabela je obično kodirana pomoću Hafmanovih
kodova. Gramatički zasnovini kodovi poput ovih mogu da mogu da kompresuju visoko
repetitivne podatke sa ekstremnom efikasnošću, na primer, kolekcija biologiških podataka o
istoj ili blisko srodnim vrstama, ogromna kolekcija dokumenata sa višestrukim verzijama,
internetsko arhiviranje, itd. Osnovni zadatak na gramatici zasnovanih kodova je konstruisanje
bezkontekstne gramatike izvedene iz pojedinačnih nizova. Drugi praktični gramatički
kompresioni algoritmi su Sekvitur i Re-Pair.

4
Kompresija sa gubicima
U kasnim 1980-im, digitalne slike su postale uobičajene, i standardi za kompresiju slika
bez gubitaka su se pojavili. U ranim 1990-im, metode kompresije sa gubicima su ušle u široku
upotrebu. U tim šemama, izvestan gubitak informacije je prihvatljiv, jer odbacivanje nebitnih
detalja može da uštedi skladišni prostor. Postoji korespondirajući kompromis između očuvanja
informacija i smanjenja veličine podataka. Šeme kompresije podataka sa gubitkom su
dizajnirane istraživanjem načina na koji ljudi spoznaju date podatke. Na primer, ljudsko oko je
senzitivnije za suptilne varijacije u osvetljenju, nego za varijacije boje. Kompresija JPEG slika
se delimično ostvaruje zaokruživanjem nebitnih bitova informacija. Brojni popularni
kompresioni formati iskorištavaju ove perceptivne razlike, uključujući psihoakustiku za zvuk,
i psihovizualne efekte za slike i video.
Kompresija sa gubicima se može koristiti u digitalnim kamerama, za povećanje
kapaciteta skladištenja uz minimalnu degradaciju kvaliteta slike. Slično tome, DVD
tehnologija koristi MPEG-2 video kodirajući format sa gubicima za video kompresiju.
U audio kompresiji sa gubicima, metodi psihoakustike se koriste za uklanjanje nečujnih
(ili manje čujnih) komponenti audio signala. Kompresija ljudskog govora se često izvodi još
više specijalizovanim tehnikama; kodiranje govora, ili kodiranje glasa, ponekad se izdvaja kao
zasebna disciplina od audio kompresije. Različiti standardi audio i govorne kompresije su
prisutni u formatima audio kodiranja. Kompresija glasa se koristi u internetskoj telefoniji, dok
se audio kompresija koristi za CD skladištenje, i audio plejeri dekodiraju te zapise.

Srodne oblasti
Teorijsku podlogu kompresije pružaju oblasti kao što su:
• teorija informacije – za kompresiju bez gubitaka, tvorac: Klod
Šenon (engl. Claude Shannon);
• teorija stopne distorzije – za kompresiju sa gubicima, tvorac: Klod
Šenon;
• teorija kodiranja;
• statističko zaključavanje; Klod Šenon

• mašinsko učenje, itd.

Statističke metode
S obzirom na to da MNP7 algoritam spada u takozvane statističe metode, iste će u
nastavku biti opisane detaljnije.
Statističe metode koriste kodove promenljivih dužina (za razliku od nekih drugih
kodova gde je dužina koda koji se koristi za kompresiju podataka fiksna). Ideja je da se kraći
kodovi dodeljuju simbolima ili grupi simbola koji se češće pojavljuju, tj. imaju veću
verovatnoću pojavljivanja. Projektanti i programeri koji se bave kodovima promenljive dužine
moraju se suočiti sa dva problema:

5
(1) dodeljivanje kodova koji mogu biti dekodirani nedvosmisleno, i
(2) dodeljivanje kodova sa najmanjom srednjom dužinom.
Semjuel Mors (engl. Samuel Morse) je koristio kodove promenljive dužine kada je
dizajnirao njegov poznati telegraf-kod (Slika 2). Slovo koje je najčešće u engleskom
vokabularu, slovo E, se kodira samo jednim znakom, tačkom; dok se slova koja se pojavljuju
ređe kodiraju sa do 5 simbola.

Slika 2

Koncept teorije informacije


Intuitivno znamo šta je inforamcija. Mi stalno šaljemo i primamo informacije u obliku
teksta, slika i govora. Takođe pretpostavljamo da je informacija neopipljivi nematematički
kvantitet koje ne može biti precizno definisan, uhvaćen i izmeren. Standardni rečnici definišu
informaciju kao:
(1) znanje izvedeno učenjem, iskustvom ili instrukcijom;
(2) znanje određenog događaja ili situacije; inteligencija;
(3) kolekcija činjenica i podataka;
(4) čin informusanja ili uslov informisanja; komunikacija znanja.
Značaj teroije informacije je ta što ona kvantifikuje informaciju. Pokazuje kako meriti
informaciju, tako da možemo odgovoriti na pitanje „koliko informacija je uključeno u nekom
delu podatka?“ sa preciznim brojem. Kvantifikovanje informacije se bazira na posmatranju da
sadržaj informacije poruke je ekvivalentan količini iznenađenja u poruci. Ako je podatak nešto
što je već uobičajeno poznato (preciznije, onaj kome je podatak upućen već zna za taj podatak),
ta informacija nema neku vrednost. Ako je podatak nešto novo, onda ta informacija zapravo
ima neku vrednost.
Teorija informacije je razvijena kasnih 1940-ih godina od strane Kloda Šanona, on je
odabrao izraz entropija zbog toga što se ovaj termin koristi u termodinamici da pokaže količinu
neuređenosti u fizičkom sistemu.

6
Kodovi promenljivih dužina
Razmotrimo četiri simbola a1, a2, a3, a4. Ako se oni u našem podatku pojavljuju sa
jednakim verovatnoćama (0,25), onda je entropija podataka -4(0,25 log2 0,25) = 2. Dva je
najmanji broj potrebnih bitova, da reprezentuje svaki simbol u ovom slučaju. Jednostavno
možemo dodeliti ovim simbolima 2-bitne kodove 00, 01, 10 i 11. S obzirom na to da su
verovatnoće jednake, redundansa je nula i podatak ne može biti kompresovan ispod 2 bita po
simbolu (bit/simbol).
Dalje, pretpostavimo slučaj kada se četiri simbola pojavljuju sa različitim
verovatnoćama, kao što je prikazano u sledećoj tabeli:
Simbol Verovatnoća Kod 1 Kod 2
a1 0,49 1 1
a2 0,25 01 01
a3 0,25 010 000
a4 0,01 001 001

Simbol a1 se pojavljuje gotovo polovinu puta, simboli a2 i a3 zajedno isto kao a1. A
simbol a4 baš retko. U ovom slučaju podaci imaju entropiju −(0,49 log2 0,49+0,25 log2
0,25+0,25 log2 0,25+0,01 log2 0,01) ≈ −(−0,050−0,5−0,5−0,066) = 1,57. Najmanji broj
potrebnih bitova, u srednjem, da reprezentuje svaki simbol je pao na 1,57. Sada ima smisla
upotrebiti kodove promenljive dužine. Kod 1 u tabeli iznad je dizajniran tako da najčešći
simbol a1 se kodira najkraćim kodom. Kada se dugi nizovi string podataka transmituju
korišćenjem Koda 1, prosečna dužina (broj bitova po simbolu) je 1 × 0,49 + 2 × 0,25 + 3 ×
0,25 + 3 × 0,01 = 1,77, što je vrlo blizu minimumu (tj. entropiji).

Microcom Networking Protocol


Microcom Networking Protocol, takođe poznat kao
MNP, je familija protokola koji ispravljaju greške koji se
koriste u modemima visokih brzina (2400 bit/s i više).
Mrežni protokol MNP je protokol koji je razvila kompanija
Microcom Inc., a koji je uključen u mnoštvo modema u
originalu razvijene za potrebe Microcom-ove familije
modema, a kasnije je otvoreno licenciran i korišćen od strane većine proizvođača modema:
Telebit, USRobotics, Hayes...
Određuje kompresiju podataka i kontrolu grešaka, koja ispravlja neželjene promene nastale
usled smetnji telefonske linije tokom prenosa podataka. MNP nudi različite nivoe: MNP nivo
4 nudi korekciju grešaka, nivo 5 dodaje mogućnosti kompresije podataka, nivo 6 i naviše nude
mogućnosti ispravljanja grešaka i kompresije podataka.
MNP je kasnije potisnut od strane v.42bits, koji je korišćen gotovo univerzalno počevši sa
prvim v.32bits modemima ranih 1990-ih. Jedan od razloga za to možemo videti na primeru

7
MNP-7 protokola koji je predstavio nove algoritme za kompresiju sa navodnim poboljšanjem
kompresije 3:1 (300% poboljšanje) na tekstualnim datotekama. Međutim, do uvođenja MNP
7, v.42bis standard je već nudio kompresiju 4:1 (400% poboljšanja) što je rezultovalo
preovladavanjem korišćenja standarda v.42bis.

MNP klase
Microcom-ova ideja je bila da pomeri FTP (file transfer protocol) iz host računara i
ugradi ga u modem umesto toga. Tako bi, svi primljeni i poslati podaci bili ispravljeni grešaka,
a ne samo datoteke. Ovo je takođe značilo da uređaji bez procesora, kao što su „glupi“
terminali, mogli da poseduju vezu bez grešaka.
Originalan protokol je bio prilično jednostavan, i takođe ne toliko efikasan, vodeći u
raznolikost protokola razdeljenih u klase. Svaka klasa generalno je poboljšala performanse
prethodnih klasa koja je bila zadržana samo zbog kompatibilnosti sa prethodnim.

MNP 1 i 2
Prvi MNP standard, kasnije poznat pod nazivom MNP klasa 1, ili jednostavno MNP 1,
je bio jednostavan half-duplex protokol, slično kao XModem po prirodi. U nedostatku podrške
za klizni prozor, efikasnost protoka bila je prilično niska, oko 70%. To je značilo da bi na
modemu od 2400 bit / s, poput onih koji se prodaju Microcom, protok bio ograničen na oko
1690 bit / s kada je MNP 1 bio u upotrebi. Ovaj sistem je stvoren prvenstveno da bi bio što
lakši za primenu u ograničenom hardveru, što objašnjava njegovu jednostavnost.
Sa jeftinim poboljšanjem procesorske snage, Microcom je predstavio MNP 2, full-
duplex verziju MNP 1 koja je omogućavala povratak ACK poruka dok je sledeći odlazni paket
već počeo. Ovo je eliminisalo pauzu dok je modem čekao da se ACK vrati, dodajući zahtev da
sistemu treba malo memorije da prati da li je ACK primljen u određenom vremenskom roku.
Pošto je kašnjenje među paketima smanjeno, ostali su samo dodatni troškovi CRC-a,
poboljšavajući protok na oko 84%.

MNP 3
U normalnoj upotrebi, modem može da šalje ili prima podatke u bilo kom trenutku,
način rada poznat kao „asinhroni“. Modem može odrediti brzinu podataka pošiljaoca
preslušavanjem bitova koji mu se šalju i „zaključavanjem“ sata na brzinu primljenih bitova.
Budući da podaci mogu da stignu u bilo kom trenutku, ne postoji precizno vreme; sat će možda
trebati ponovo prilagoditi za pauze jer korisnik prestane da kuca (na primer).
Nažalost, ova vrsta dekodiranja sata ne funkcioniše ukoliko u podacima ne postoje bar
neki prelazi između 1 i 0; dugačak tok 0 ili 1 nema u sebi prelaze, što onemogućava saznanje
odakle započinju podaci za bilo koji određeni bajt. Da bi se izbegao ovaj problem, na svaki
kraj svakog bajta dodaju se dodatni bitovi uokvirivanja, obično po jedan bit sa bilo koje strane
poznat kao „startni i zaustavni bitovi“. Ovo garantuje najmanje jedan prelaz 1 na 0 za svaki

8
bajt, više nego dovoljan da satovi budu zaključani. Međutim, ovi bitovi se takođe proširuju
svakih 8 bitova podataka (jedan bajt) na 10 bitova, što predstavlja režijskih 20%.
Kada koriste protokol za prenos datoteka, sami paketi nude sopstveno kadriranje. Paketi
će uvek slati neprekidni tok podataka, tako da sat ne može da „lebdi“ na isti način kao što bi
mogao za podatke koje šalje korisnik koji kuca na tastaturi. Isključivanjem ovih bitova
kadriranja kada se radi na vezi ispravljenoj greškom, može se eliminisati dodatnih 20%
dodatnih troškova.
Upravo je to učinio MNP 3. Nakon pregovora i utvrđivanja da oba modema podržavaju
MNP 3, bitovi za kadriranje su isključeni, poboljšavajući ukupnu efikasnost za oko 20%. Ovo
je gotovo savršeno nadoknadilo opseg protokola, što znači da kada koristi MNP 3, korisnik
može očekivati da se približi idealnoj propusnosti od 2400 bit / s (nasuprot 1900 bit / s).

MNP 4
MNP 4 je bio dodatno poboljšanje u odnosu na MNP 3, dodajući sistem promenljive
veličine paketa koji su nazivali Adaptive Packet Assembli.
U slučaju MNP-a, opšti troškovi paketnog sistema bili su relativno mali, ali čak je i
višebajtni CRC zauzimao prostor koji se bolje koristio za podatke. Generalno bi se ovo rešilo
korišćenjem većeg paketa, jer CRC ostaje iste fiksne veličine i time se smanjuje njegov
relativni opseg u poređenju sa količinom podataka. Međutim, kada se dogodi greška, upotreba
većih paketa takođe znači da se mora poslati više podataka. Na bučnim linijama ovo može
usporiti ukupni protok.
Sa MNP 4, dva modema neprestano nadgledaju liniju za ispuštene pakete, a ako se
pređe određeni prag (odabere korisnik), modem se vraća na manju veličinu paketa. To znači
da je prilikom ispuštanja paketa količina podataka koja se mora ponovo poslati manja, što
dovodi do bolje propusnosti. Na linijama dobrog kvaliteta upotreba većih paketa znači da se
smanjuju opšti troškovi CRC-a. Paketi mogu biti između 64 i 256 bajtova i omogućavali su
korisniku da ih prisili na određenu veličinu ako želi.
MNP 4 je takođe uveo optimizaciju faze podataka, jednostavnu promenu protokola koja
je omogućila da se neke informacije o kadriranju paketa odbace nakon postavljanja veze,
dodatno smanjujući troškove protokola. Kombinacija ovih karakteristika, zajedno sa
nedostatkom kadriranja bajtova kod MNP 3, omogućila je dalje povećanje efikasnosti protoka.

MNP 5
Još radikalnija promena je napravljena za MNP 5, uvodeći kompresiju podataka u letu
u modemu. Sa MNP 5, podaci primljeni od računara prvo se kompresuju jednostavnim
algoritmom, a zatim prenose u sistem za paketiranje MNP 4 za prenos. Na podacima iz
najboljeg slučaja sistem je nudio kompresiju od 2: 1, ali općenito je tipično bilo oko 1,6: 1,
barem za tekst. Kao rezultat, pojavio bi se modem od 2400 bit / s za prenos teksta pri ~ 4000
bit / s.

9
Ovaj dramatični porast protoka omogućio je Microcom modemima da ostanu donekle
konkurentni modelima drugih kompanija koji su inače nominalno bili mnogo brži. Na primer,
Microcom je generalno proizvodio modeme od 1200 i 2400 bit / s koristeći robne delove, dok
su kompanije poput USRobotics i Telebit nudile modele sa brzinama do 19200 bit / s.
Međutim, ovo poboljšanje performansi bilo je dostupno samo ako modemi na oba kraja
podržavaju MNP. To je sistem učinilo zaista privlačnim samo za lokacije koje instaliraju
modeme na oba kraja veze; za dial-up usluge kao što su sistemi oglasnih ploča (BBS) nije bilo
ubedljivog razloga da se koristi uređaj Microcom kada krajnji korisnik verovatno nije imao
takav uređaj. Čak i u slučajevima kada je korisnik imao kontrolu nad oba kraja veze,
Microcom-ovi „vlasnički“ modemi bili su manje zanimljivi od modela drugih kompanija koje
su nudile mnogo veći protok „stvarnog sveta“.
Da bi stvorili tržište za Microcom modeme, počev od MNP 5, preduzeli su radikalan
korak da besplatno licenciraju čitav MNP paket. Ideja je bila da ovo dramatično poveća broj
modema sa instaliranim MNP-om, čineći „prave“ Microcom modeme privlačnijim. Štaviše,
noviji standardi sa poboljšanim performansama nudili bi još bolje performanse kada bi se na
oba kraja veze nalazio Microcom modem.
Nažalost, plan je propao. Uvođenje znatno unapređenog sistema kompresije LAPM u
standardu v.42bis nadmašilo je Microcomova sopstvena dostignuća, razvodeći vrednost
„pravog“ Microcom modela gotovo na nulu. Koristeći v.42bis i robne delove, uskoro je
dostupan ogroman broj jeftinih modema sa još boljim performansama od Microcom-ovih. Iako
je Microcom nastavio da uvodi novije standarde, oni su uglavnom ignorisani i Microcom je
prestao da bude sila na tržištu.

MNP 6
Uvođenje v.32 dovelo je do velikog broja standardnih modema od 9600 bit / s, od kojih
su gotovo svi nudili MNP 5. Da bi se dalje razlikovali od onoga što je postajalo robno tržište
(iako do uvođenja v. 32bis SupraFAKSModem 14400 1991. godine), Microcom je stvorio
MNP 6.
Glavna karakteristika MNP-a 6 bila je statističko obostrano obostrano povezivanje, koje
je moglo da posveti više ili manje propusnog opsega jednoj ili drugoj strani modemske veze.
Na primer, ako je jedna mašina slala veliku datoteku, drugi kraj bi vratio samo malu količinu
informacija, ACK i NAK poruke. U ovom slučaju modemi bi dali što veći deo kanala
pošiljaocu, nudeći jednosmerni propusni opseg do 19.200 bit / s. Ovo zapravo nije zahtevalo
nikakve promene u modulacionom sistemu: obično je modem od 9600 bit / s imao punih 9600
bit / s kanala u oba smera, ukupno 19200 bit / s; MNP 6 je jednostavno dozvolio da se veći ili
manji opseg daje jednoj ili drugoj strani, umesto da ostane fiksiran na 9600 u oba smera.
Ovaj osnovni koncept je već bio široko korišćen u industriji, čineći osnovu za Haies-ov
Ekpress 96 protokol, USRobotics-ov HST Telebit-ov PEP i (ukratko) CompuCom
SpeedModem. Svim ovim standardima bilo je veoma teško da prežive na tržištu kojim
dominira v.32bis i, poput njih, MNP 6 je uglavnom ignorisan.

10
Manje zapažen dodatak MNP-u 6 bio je Universal Link Negotiation. Uvođenjem
dodatnih modulacionih režima, naročito v.32 i novijih dodataka, modemi na oba kraja veze
morali su provesti sve više vremena pregovarajući o zajedničkom standardu. Na primer, v.32bis
modem bi prvo poslao tonove u liniju kako bi pokušao da dobije vezu 14.4; ako to ne uspe
nakon nekog vremena, pokušaće 9600, 2400 i konačno 1200 bit / s. Pošto je svaki od ovih
standarda definisao minimalni vremenski period za „isprobavanje“ veze, kašnjenje je poraslo
tokom 10 sekundi.
ULN je izbegao ovo kašnjenje tako što je uvek dogovarao vezu brzinom od 2400 bit / s
bez uključene korekcije grešaka. Iako je ovo eliminisalo kompatibilnost sa starijim modemima
od 1200 bit / s, do ovog trenutka oni su bili izuzetno retki. Nakon uspostavljanja veze, koja se
brzo dogodila, oba modema su poslala mali identifikacioni niz na udaljeni modem. Oba
modema su zatim ispitala niz i odabrala najbrži uobičajeni režim. Pozivač je zatim ponovo
pregovarao jednom većom brzinom.

MNP 7
Složeniji i sofisticiraniji od MNP5, MNP7 kombinuje kodiranje dužine sekvence sa
dvodimenzionalnom varijantom adaptivnog Huffmanovog kodiranja. Faza 1 identifikuje
sekvence i emituje tri kopije tekućeg znaka, nakon čega sledi 4-bitni broj preostalih znakova
u prenosu. Broj nule podrazumeva sekvencu dužine 3 i broj 15 (najveće moguće u 4-bitnom
formatu), niz dužine 18. Faza 2 započinje dodeljivanjem svakom karakteru kompletnu tabelu
sa mnogim kodovima promenljive veličine. Kada se čita znak C, jedan od kodova u njegovoj
tabeli se biraju i ispisuju, u zavisnosti od znaka ispred C ulazni tok. Ako je ovaj znak, recimo,
P, onda se broj učestanosti para (digram) PC uvećava za 1, a redovi tabele se mogu zameniti,
koristeći isti algoritam kao za MNP5, za premeštanje para na mesto u tabeli sa kraćim kodom.
MNP7 se prema tome zasniva na Markovom modelu prvog reda, gde se svaka stavka obrađuje
u zavisnosti od te stavke i jednog od njegovih prethodnika. U Markovljevom modelu k-reda,
predmet se obrađuje u zavisnosti od sebe i k prethodnika (ne nužno i k neposrednog).
Evo detalja. Svaki od 256 8-bitnih bajtova dobija tabelu dodeljenih kodova od veličine
256 × 2, pri čemu svaki red odgovara jednom od 256 mogućih bajtova. Kolona 1 tabele se
inicijalizuje celim brojevima od 0 do 255, a kolona 2 (broj učestanosti) inicijalizuje se na sve
nule. Rezultat je 256 tabela, svaka dvostruka kolona od 256 redovi (tabela ispod). Redovima
se dodeljuju kodovi promenljive veličine, na primer prvi kod dugačak je 1-bit, a ostali postaju
duži prema dnu tabele. Kodovi su čuva se u dodatnoj tabeli kodova koja se nikada ne menja.

11
Kada se čita znak C (to je trenutni znak koji se kompresuje), njegova vrednost koristi
se kao pokazivač, za odabir jedne od 256 tabela. Prva kolona tabele se pretražuje, da bi
pronašao red sa 8-bitnom vrednošću prethodnog znaka P. Jednom kada je pronađen red, emituje
se kod iz istog reda u tabeli i brojač se u drugoj koloni uvećava za 1. Redovi u tabeli mogu se
zameniti ako je novi broj digrama/slog PC je dovoljno velik.
Nakon unosa dovoljno znakova i zamene redova, tabele počinju da prikazuju prave
rekvencije pojavljivanja digrama/sloga podataka. Tabela 2.37b pokazuje moguće stanje pod
pretpostavkom da su slogovi ta, ha, ca, lb, eb, ub, hc itd. uobičajeni odnosno da se pojavljuju
često. Pošto je gornji digram kodiran u 1 bit, MNP7 može biti vrlo efikasan. Ako se originalni
podaci sastoje od teksta u prirodnom jeziku, gde su određeni slogovi vrlo česti, MNP7 obično
omogućuje visok stepen kompresije.

MNP 9
MNP 9 (očigledno nije objavljeno 8) je poboljšao Universal Link Detection da bi dodao
nove brže režime, ali je inače bio identičan MNP 7.

MNP 10
MNP 10 je predstavio novi protokol za ispravljanje grešaka dizajniran posebno za dobar
rad na bučnim telefonskim linijama koje se široko koriste u istočnoj Evropi. Za razliku od
ranijih verzija poput MNP 4, MNP 10 je neprestano pratio kvalitet linije i prilagođavao veličinu
paketa ako se uslovi poboljšavaju.
Gdoine 1991. Microcom je licencirao MNP 10 kompaniji Rockvell International za
upotrebu u njihovim izuzetno popularnim modemskim setovima čipova. Pošto su gotovo svi
modemi, sa izuzetkom USR-ovih modela, koristili Rockvell čipset otprilike 1995. godine,
MNP 10 je postao prilično široko primenjen (ako se nije koristio). USR je na kraju dodao MNP
10 svojim modemima serije V.ethingthing, efektivno čineći ga univerzalnim.
MNP 10 je kasnije proširen na MNP 10EC, „EC“ što znači „Prošireni ćelijski“. Ovo je
bila serija modifikacija koje su dozvolile MNP 10 da se bavi pauzama prenosa kada se mobilni

12
telefon premešta iz jedne ćelije u drugu, što bi se normalno tumačilo kao greške u liniji.
Koristeći MNP 10EC, ove pauze su tačno identifikovane kao „ne greške“, a brzina veze ostaje
veća. Njegov uspeh doveo je do konkurenta AT&T Paradine, ETC.
MNP 10EC je bio posebno atraktivan u ćelijskoj ulozi zbog uključivanja metode
pregovaranja o ULN linku koja je prvobitno uvedena u MNP 6 (i poboljšana u MNP 9). Na
mobilnoj mreži gde se naplaćuje celo vreme emitovanja, brže podešavanje je uštedelo novac.
MNP 10EC je imao ograničen životni vek, jer su se ćelijske mreže okrenule raznim potpuno
digitalnim sistemima kojima više nije bio potreban modem za povezivanje sa računarom.

Markovljev model
MNP7 je zasnovan na Markovljevom modelu prvog reda, gde je svaki
simbol obrađen u zavisnosti od samog sebe i svog prethodnika. U
Markovljevom modelu k-tog red, simbol je obrađen u zavisnosti od samog
sebe i k prethodnika (ne obavezno k neposredno susednih).
Andrej Markov
Markovljev model (Markovljev lanac, proces) definisan je:
- skupom stanja (prolaz kroz stanja generiše sekvencu)
- skupom prelaza sa pridruženim verovatnoćama

Markovljev model za DNK

Pretpostavimo da je Markovljev proces osoba koja se zove Sem. I neka Sem može da
se kreće između 3 različita mesta: posao, kuća i kafić. U Markovljevom modelu svaki od ova
3 mesta se zove stanje. Sledeće što nam je potrebno jeste niz verovatnoća tranzicija između
stanja. Na slici je prikazan prostor stanja u obliku grafa. Pretpostavimo da je Sem kod kuće. U
ovom modelu, verovatnoća da ide na posao je 0,5; da ostane kući iznosi 0,4; a da ide u kafić je
0,1. Zbir ovih verovatnoća iznosi 1. Sve verovatnoće tranzicija koje idu iz čvora u zbiru treba
uvek da daju jedinicu. Postavlja se pitanje kako dolazimo do ovih brojeva. Uobičajeni pristup
je posmatranje procesa i brojanje tranzicija. U ovom primeru je potrebno posmatrati Semovo
kretanje između kuće, posla i kafića.

13
Markovljev model jednog čvora Kompletan Markovljev model

Tranzicione verovatnoće je moguće preslikati na matricu tako da se dobije model kojim


je lakše manipulisati. Ako graf prikazan na slici „Kompletan Markovljev model“ prevedeomo
u matricu, dobićemo:
0,4 0,6 1,0
[0,5 0,3 0,0]
0,1 0,1 0,0
Svaka kolona matrice predstavlja stanja odakle Sem polazi, i svaka vrsta predstavlja
stanje kuda on ide. Potreban nam je i tzv. vektor početnih verovatnoća koji predstavlja šta
znamo o početnoj Semovoj poziciji. Ako pomnožimo ovaj vektor sa matricom, dobićemo novi
vektor koji predstavlja predviđanje gde će Sem biti u sledećem odlasku.
0,4 0,6 1,0 1 0,4
[ 0,5 0,3 0,0] [0] = [0,5]
0,1 0,1 0,0 0 0,1
Možemo izračunati kvadrat matrice da bismo videli gde će Sem biti za 2 događaja
(odlaska) u budućnost.

0,4 0,6 1,0 2 1


[0,5 0,3 0,0] [0]
0,1 0,1 0,0 0
Stepenovanjem matrice na treći stepen dobićemo predviđanje nakon 3 događaja, i
konačno stepenovanjem na n-ti stepen dobićemo predviđanje nakon n događaja. Ovim
postupkom je takoreći moguće dobiti predviđanja nakon beskonačno mnogo događaja.

14
Klasni dijagram projekta

• Klasa Node predstavlja pomoćnu klasu koja enkapsulira podatke o svakom čvoru u
okviru stabla.
Bitniji propertiji koji ta klasa poseduje su:
- Current – čuva trenutni karakter u tekstu
- Predecessor – čuva prethodni karakter u tekstu (prethodnik u odnosu na current)
- Left – pokazivač na levog potomka datog čvora
- Right – pokazivač na desnog potomka datog čvora
- Weight – težina datog čvora
Bitnije metode koja ova klasa implementira:
- FindOrDefault – vraća rezultat na osnovu prosleđene vrednosti za prethodnog i
tekućeg simbola
- GetCode – vraća kod simbola na osnovu prosleđenog Node-a
- IsLeftSon – vraća true ako je prosleđeni Node levi potomak datog Noda, u
suprotnom vraća false
- IsRightSon – vraća true ako je prosleđeni Node desni potomak datog Noda, u
suprotnom vraća false
- IsLeaf – vraća true ako je dati Node list u stablu

• Klasa Tree predstavlja pomoćnu klasu koja enkapsulira podatke o stablu, i to


Hafmanovom stablu.
Bitniji propertiji koji ta klasa poseduje su:
- Root – čuva pokazivač na koren stabla
Bitnije metode koja ova klasa implementira:

15
- Reset – vraća stanje stabla na početne vrednosti
- Encode – glavna metoda koja kompresuje podatke tako što poziva pomoćnu
Encode metodu za svaki par karaktera u tekstu
- Decode – metoda koja dekompresuje podatke tako što poziva pomoćnu metodu
ReadChar za svaki od ulaznih karaktera
- UpdateAll – metoda koja osvežava stablo počevši od listova ka korenu stabla tako
što poziva metodu Update za svaki od čvorova
- NodeToReplace – metoda koja vrši zamenu mesta čvorovima u stablu

• Klasa RLE predstavlja pomoćnu statičku klasu koja implemenira metode za nalaženje
niza karaktera koji se ponavljaju (više od 3 puta uzastopno)
Ova klasa implementira 2 metode, i to:
- RunsIdentify – metoda koja u nizu simbola pronalazi simbole koji se ponavljaju
bar 3 puta i sažima ih tako što zadržava samo 3 karaktera, a nakon toga
konkaternira broj koji označava koliko još puta se karakter ponavlja u nizu
uzastopno
- Decode – metoda koja vrši suprotan proces od gore navedene metode. Ona iz niza
karaktera vraća ponavljanje karaktera tamo gde su ona sažeta

• Klasa Program predstavlja klasu koja implementira Main metodu odakle se pozivaju
metode za kompresiju i dekompresiju podataka. Pored Main metode, ova klasa
implementira još jednu metodu: DataEncodedLength koja računa veličinu
kompresovanog podatka.

Tok podataka prilikom kompresije

ulaz
1
RLE.RunsIdentify tree.Encode

3
RLE.Decode tree.Decode

izlaz

• U tački (1) su identifikovani podnizovi ulaznog teksta, i sažeti su tako da postoji najviše
3 ponavljanja svakog karaktera u podnizu, nakon čega sledi broj redukovanih simbola.
• U tački (2) je izvršena kompresija tako što je svakom paru dodat kod promenljive
dužine (u skladu sa MNP7 metodom).

16
• U tački (3) je izvršena dekompresija podataka tako da je u ovoj tački podatak identičan
podatku u tački (1).
• Konačno, nakon RLE.Decode, izlaz je podatak koji je kompletno dekompresovan i
identičan podatku sa ulaza.

Implementacija pomoću stabla naspram implementacije pomoću 3D


polja
Glavni problem sa primenom 3D polja, tj. 256 tabela (za svaki karakter po jedna tabela
od 256 vrsta i 2 kolone) za kompresovanje para karaktera je nedostatak jednoznačnosti.
Višeznačnost se javlja kada imamo dva različita para karaktera koji se često javljaju (nalaze se
na vrhu tabele pa samim tim imaju kraće kodove). Pretpostavimo da se karakter “x” kodira
ASCII vrednošću 95, a karakter “y” ASCII vrednošću 152. Dalje, neka je “z” karakter koji se
najčešće pojavljuje za tabelu karaktera “x”, i “f” karakter koji se nakčešće pojavljuje za tabelu
karaktera “y”. Time bi par “zx” imao isti kod kao i par “fy”, npr, kod “0”. Ova pojava bi
prouzrokovala probleme pri dekodiranju, jer dekoder ne bi znao da li da kod “0” dekodira u
par “zx” ili u par “fy”.

Sa slike se vidi da su kodovi za par “ta” i “lb” najmanji i oba će biti dužine od jednog
bita, jer su oba koda na vrhu u sopstvenoj tabeli. Tako da će se javiti problem prilikom
dekompresije jer kodovi nisu jednoznačni.
Drugi potencijalni problem kod ovakvog pristupa jeste nedostatak prefiksne osobine
kodova koja je vrlo bitna kod kodova promenljivih dužina. Na primer, ukoliko imamo par “ab”
koji se javlja relativno često i ima dvobitni kod “11” i imamo neki drugi par “mn” koji se ređe
javlja i kodiran je recimo kodom “1101”. Ovde je očigledno da su prva dva bita koda “mn” ista
kao kod za “ab”. Ovo će rezultovati da dekoder pogrešno protumači prva dva bita tako da neće
znati kada naiđe na “11” da li je naišao na početak para “mn” ili je prepoznao par “ab”.
Probleme prefiksnih kodova i nejednoznačnosti rešava implementacija pomoću stabla,
i to Hafmanovog stabla. Na samom početku procesa kompresovanja podataka, Hafmanovo
stablo je prazno, tj. sadrži samo jedan tzv. NYT (Not Yet Transformed) čvor. Kada kompresor
naiđe na par koji se ne nalazi u stablu, taj par se ne kompresuje već se samo prosledi onako

17
kakav jeste i zatim se doda u stablo i setuje broj pojavljivanja tog para na 1. Kada kompresor
naiđe na par koji se već nalazi u stablu, on pronalazi njegov kod, njega prosleđuje i inkrementira
vrednosti pojavljivanja tog para.

Eksperimentalni rezultati
Testiranje MNP7 protokola je izvršeno na mašini sa procesorom Intel Celeron N3450 i
AMD Ryzen 5 3500U.
Vreme Veličina Veličina Odnos
Procenat
Test podatak kompresovanja ulaznog kompresovang kompresija /
kompresije
Intel AMD podatka podatka original
abcdabdcd 5 ms 4 ms 72 b 60 b 83,3 % 16,7 %
aaaaaaaaabbbbbaaaaa
9 ms 6 ms 240 b 186 b 77,5 % 22,5 %
ccccchhhhc
ababc abc sssssab 6 ms 4 ms 136 b 75 b 55,15 % 44,85 %
asa gfd dgfadds dsaggfd 6 ms 4 ms 184 b 201 b 109 % - 9,23 %

Iz tabele se vidi da ukoliko nema dubleta koji se ponavljaju i nema ulaznih simbola koji
se ponavljaju više od 3 puta (za Run Length Encoding) veličina dekompresovanog teksta će
biti veća od veličine originalnog ulaznog teksta tako da u tom slučaju ne dolazi do kompresije,
već naprotiv, dolazi do ekspanzije.

Pouzdanost
Najočigledniji nedostatak kodova promenljive veličine je njihova ranjivost na greške.
Svojstvo prefiksa koristi se za dekodiranje tih kodova, pa greška u jednom bitu može
prouzrokovati dekoder/dekompresor da izgubi sinhronizaciju i ne može da dekodira ostatak
kompresovanog niza. U najgorem slučaju, dekompresor može čak čitati, dekodirati i
interpretirati ostatak komprimovanih podataka pogrešno, a da niste ni shvatili da je došlo do
problema. Primer: Koristeći kod sa slike 2.17, niz „CARE“ kodiran je u „10100 0011 0110
000 ” (bez razmaka). Pod pretpostavkom greške „10 0 00 0011 0110 000“, dekompresor neće
primetiti nikakav problem, ali će dekodirati niz kao „HARE“. Ilustrativno pitanje je Šta će se
dogoditi u slučaju „11 1 11 0011 0110 000 ... “(niz„ VARE ... “sa jednim lošim bitom)?
Odgovor je dekompresor interpretirati ulazne podatke kao „111110 0110 11000 0 ...“,što je niz
„XRP ...“.
Ljudi koji koriste Huffmanove kodove već su odavno primetili da se ovi kodovi
oporavljaju brzo nakon greške. Međutim, ako se koriste za kodiranje tekućeg niza, onda je ovo
svojstvo ne pomaže, jer bi se svi pokreti prebacili nakon greške. Jednostavan način dodavanja
pouzdanosti kodovima promenljive veličine je prelom dugog komprimovanog toka, dok se
prenosi, u grupe od 7 bitova i svakoj dodajte bit parnosti za zaštitu. Na ovaj način dekompresor
će barem moći da otkrije problem i saopšti poruku o grešci ili da zatraži retransmisiju. Moguće
je i dodati još jedan bit parnosti grupi bitova podataka, što ga čini pouzdanijim. Međutim,
pouzdanost je u izvesnom smislu suprotna kompresiji. Kompresija se vrši i predstavlja
smanjenje suvišnost, dok se pouzdanost postiže njenim povećanjem suvišnosti. Što je
pouzdaniji podatak je veći-opširniji i to je manje komprimovan, pa treba voditi računa kada se

18
ove dve operacije koriste da se koriste zajedno i da se ostvari određen kompromis između
kompresije i proširenja zarad povećanja

Zaključak
Budući da MNP7 protokol kodira podatak na nivou dubleta, ovaj protokol ima veće
performanse kada se u ulaznom podatku ponavljaju kolekcije od po dva simbola. Ukoliko je to
slučaj, ovaj protokol može da izvrši kompresiju do čak 1/3 (zavisno od konkretnog ulaznog
podatka). Ukoliko je slučaj da ulazni podatak ne sadrži dublete koji se ponavljaju, onda se
performanse ovog protokola smanjuju, jer on tada vrši ekspanziju umesto kompresije.
S obzirom na to da je ovaj protokol implementiran u ruterima, pretpostavka je da se
dubleti u okviru podataka dupliraju tako da je opravdano korišćenje ovog protokola u te svrhe.

Reference
1. Data Compression, The Complete Reference, 3rd Edition, David Salomon, Springer
https://drive.google.com/file/d/18qt5ZIeRwHOOimXVtKVaxSE61M1h0Di6/view
2. https://github.com/przpl/AdaptiveHuffman
3. https://en.wikipedia.org/wiki/Microcom_Networking_Protocol
4. https://www.techopedia.com/definition/901/microcom-networking-protocol-mnp
5. http://www.hou2600.org/ftp/textfiles/TELECOM/MNP.TXT
6. https://www.computerhope.com/jargon/m/mnp.htm
7. https://www.allbusiness.com/barrons_dictionary/dictionary-mnp-microcom-
networking-protocol-4948428-1.html
8. http://www.piclist.com/techref/modem/signals.htm
9. https://www.ece.unb.ca/tervo/ece4253/mnp5.shtml

19

You might also like