Hafmanovo kodiranje Uvod u organizaciju raunara Kodovi mogu

  • Slides: 26
Download presentation
Hafmanovo kodiranje Uvod u organizaciju računara

Hafmanovo kodiranje Uvod u organizaciju računara

Kodovi mogu biti – Fiksne dužine (npr. ASCII, UNICODE), – Promenljive dužine (npr. UTF-8).

Kodovi mogu biti – Fiksne dužine (npr. ASCII, UNICODE), – Promenljive dužine (npr. UTF-8). l Kodovi dati u primerima su definisani bez obzira na specifičnosti teksta. l Da li ASCII kod daje najkraće zapise engleskih tekstova? l Može li se za svaki pojedinačni tekst izabrati pogodan kod? l Uvod u organizaciju računara 2

Kodovi promenljive dužine Nejednoznačni kodovi – neinvertibilni, pa stoga neupotrebljivi u opštem slučaju. l

Kodovi promenljive dužine Nejednoznačni kodovi – neinvertibilni, pa stoga neupotrebljivi u opštem slučaju. l Jednoznačni nerazlučivi kodovi – zahtevaju interpunkciju. l Razlučivi kodovi – ne zahtevaju interpunkciju ali može biti potrebno gledanje unapred. l Prefiksno slobodni kodovi – ne zahtevaju gledanje unapred. l Uvod u organizaciju računara 3

Primer Nejednoznačan Jednoznačan nerazlučiv Razlučivi Prefiksno slobodni A 0 0 B 0 01 10

Primer Nejednoznačan Jednoznačan nerazlučiv Razlučivi Prefiksno slobodni A 0 0 B 0 01 10 C 0 01 011 110 D 0 10 0111 Uvod u organizaciju računara 4

Prefiksno slobodni kodovi l Za kod kažemo da je prefiksno slobodan ako ni za

Prefiksno slobodni kodovi l Za kod kažemo da je prefiksno slobodan ako ni za jedan znak ne važi da je njegov kod prefiks koda nekog drugog znaka. l Npr. ako je 11 kod karaktera A, a 1110 kod karaktera B, onda je kod karaktera A prefiks koda karaktera B. Ovo nije dozvoljeno. Uvod u organizaciju računara 5

Prefiksno slobodni kodovi l Zahvaljujući prefiksnom svojstvu koda, čim je kod nekog znaka pročitan,

Prefiksno slobodni kodovi l Zahvaljujući prefiksnom svojstvu koda, čim je kod nekog znaka pročitan, ne postoji mogućnost da se daljim čitanjem zaključi da se radi o kodu nekog drugog znaka, tako da se odmah može konstatovati o kom se znaku radi, i preći na čitanje koda sledećeg znaka. Uvod u organizaciju računara 6

Hafmanov kod Hafmanov (Huffman) kod je optimalan prefiksno slobodan kod. l Zato se često

Hafmanov kod Hafmanov (Huffman) kod je optimalan prefiksno slobodan kod. l Zato se često koristi za realizaciju kompresija bez gubitka. l To je kod promenljive dužine. l Postoje: – Statičko Hafmanovo kodiranje, – Statičko Hafmanovo kodiranje minimalne varijacije, – Dinamičko Hafmanovo kodiranje. l Uvod u organizaciju računara 7

Statičko Hafmanovo kodiranje Osnovna ideja je da se karakteri koji se češće javljaju kodiraju

Statičko Hafmanovo kodiranje Osnovna ideja je da se karakteri koji se češće javljaju kodiraju kraćim sekvencama, dok je kod karaktera koji se ređe pojavljuju dozvoljeno koristiti i duže kodove. l Na početku je potrebno izgraditi sortiranu listu znakova (u opadajućem poretku njihovih frekvencija) koje želimo da kodiramo. Neka su to npr. karakteri. l Uvod u organizaciju računara 8

Izgradjna Hafmanovog stabla Pronadju se dva karaktera koja se najređe pojavljuju i ona se

Izgradjna Hafmanovog stabla Pronadju se dva karaktera koja se najređe pojavljuju i ona se zamene novim “karakterom” čija je frekvencija zbir frekvencija polazna dva karaktera. l Novouvedeni “karakter” se umeće u listu tako da ona ostaje sortirana. l Novouvedeni “karakter” predstavlja čvor stabla čiji su naslednici polazni karakteri. Postupak se ponavlja sve dok se ne izgradi kompletno stablo. l Uvod u organizaciju računara 9

Odredjivanje kodova l Sve grane stabla koje vode “na levo” se označe nulom, dok

Odredjivanje kodova l Sve grane stabla koje vode “na levo” se označe nulom, dok se sve grane koje vode “na desno” označe jedinicom. Kod svakog karaktera se odredjuje prikupljanjem oznaka grana putanje koja vodi od korena do njega. Uvod u organizaciju računara 10

Hafmanovo kodiranje - primer l Kodirajmo poruku: AFAABBAEACABBACABEABCDFDAEAAEFAF l Tabela frekvencija: A 13 B

Hafmanovo kodiranje - primer l Kodirajmo poruku: AFAABBAEACABBACABEABCDFDAEAAEFAF l Tabela frekvencija: A 13 B 6 C 3 D 2 E 4 F 4 Uvod u organizaciju računara 11

Hafmanovo kodiranje - primer l Kodovi su: A D 0 1011 B E 100

Hafmanovo kodiranje - primer l Kodovi su: A D 0 1011 B E 100 110 Uvod u organizaciju računara C F 1010 111 12

Hafmanovo kodiranje - primer l Kodirana poruka se dobija nadovezivanjem kodova karaktera i glasi:

Hafmanovo kodiranje - primer l Kodirana poruka se dobija nadovezivanjem kodova karaktera i glasi: 011100100100011001001000101 001001101011111101101100 0110111 Uvod u organizaciju računara 13

Hafmanovo kodiranje - primer l Za kodiranje poruke smo iskoristili 13*1+6*3+3*4+2*4+4*3=75 bita. l Da

Hafmanovo kodiranje - primer l Za kodiranje poruke smo iskoristili 13*1+6*3+3*4+2*4+4*3=75 bita. l Da smo koristili, na primer, 3 -bitno kodiranje koje karakterima dodeljuje njihove redne binarne brojeve od 000 do 101 iskoristili bismo 3*32=96 bita. Uvod u organizaciju računara 14

Hafmanovo kodiranje minimalne varijacije Nekada nije pogodno da su dužine kodnih reči drastično različite

Hafmanovo kodiranje minimalne varijacije Nekada nije pogodno da su dužine kodnih reči drastično različite (odnosno da je Hafmanovo stablo neizbalansirano). l To se rešava tako što se novouvedeni “karakter” uvek smešta na prvo mesto u listi. l I ovo kodiranje je optimalno, a dovodi do balansiranosti dužina kodnih reči. l Uvod u organizaciju računara 15

Dinamičko Hafmanovo kodiranje Za razliku od statičkog Hafmanovog kodiranja, gde se frekvencije pojavljivanja znakova

Dinamičko Hafmanovo kodiranje Za razliku od statičkog Hafmanovog kodiranja, gde se frekvencije pojavljivanja znakova određuju na početku rada algoritma, kod dinamičkog se ove frekvencije izračunavaju i menjaju u toku rada algoritma. l Ovaj algoritam je pogodan kad je potrebno kodirati tekst koji nije poznat unapred nego se do njega dolazi u toku rada algoritma. l Uvod u organizaciju računara 16

Frekvencije karaktera l Neka su frekvencije karaktera i dužine kodnih reči redom – 10,

Frekvencije karaktera l Neka su frekvencije karaktera i dužine kodnih reči redom – 10, 5, 5, 20 – 2, 3, 3, 1 l Ukupna dužina je l Prosečna dužina je l Vrednosti su normirane frekvencije i uvek se sabiraju na 1. Uvod u organizaciju računara 17

Kraftova nejednakost l Neka su l 1, . . . , l. N dužine

Kraftova nejednakost l Neka su l 1, . . . , l. N dužine kodnih reči za N simbola u nekom prefiksno slobodnom kodu. l Tada važi l Takođe, ako neki niz brojeva l 1, . . . , l. N zadovoljava ovu nejednakost, onda postoji prefiksno slobodan kod sa kodnim rečima dužina l 1, . . . , l. N. Uvod u organizaciju računara 18

Optimalna prosečna dužina kodiranja Neka su f 1, . . . , f. N

Optimalna prosečna dužina kodiranja Neka su f 1, . . . , f. N normirane frekvencije simbla koji se kodiraju. l Prosečna dužina kodiranja je l Optimalno prefiksno slobodno kodiranje ima prosečnu dužinu l Uvod u organizaciju računara 19

Optimalna prosečna dužina kodiranja l Optimalna dužina kodne reči je l Optimalna prosečna dužina

Optimalna prosečna dužina kodiranja l Optimalna dužina kodne reči je l Optimalna prosečna dužina kodiranja je takozvana entropija Uvod u organizaciju računara 20

Optimalna prosečna dužina kodiranja l l*i nije uvek ceo broj!! l Neka je li

Optimalna prosečna dužina kodiranja l l*i nije uvek ceo broj!! l Neka je li dobijen od l*i zaokruživanjem na gore l Tada i li zadovoljava Kraftovu nejednakost, pa postoji prefiksno slobodan kod sa tim dužinama kodnih reči. l Takav kod se naziva Šenonov kod. Uvod u organizaciju računara 21

Optimalna prosečna dužina kodiranja Uvod u organizaciju računara 22

Optimalna prosečna dužina kodiranja Uvod u organizaciju računara 22

Optimalnost Hafmanovog kodiranja l Za optimalan prefiksno slobodni kod važi: – Ako je fi<fj

Optimalnost Hafmanovog kodiranja l Za optimalan prefiksno slobodni kod važi: – Ako je fi<fj onda je li≥lj. – Stablo je puno binarno stablo. – Dva najređa simbola imaju kodne reči iste (najveće) dužine. – Za svaku najdužu kodnu reč, postoji druga najduža kodna reč koja se od nje razlikuje samo u poslednjem bitu. Uvod u organizaciju računara 23

Optimalnost Hafmanovog kodiranja Neka je Cm optimalan prefiksno slobodni kod za m simbola sa

Optimalnost Hafmanovog kodiranja Neka je Cm optimalan prefiksno slobodni kod za m simbola sa normiranim frekvencijama fi. l Dva najređa simbola se mogu spojiti u jedan pri čemu za njihove kodne reči važi Wm-1=W’m-10 i Wm=W’m-11. l Dužine tih reči su l’m-1+1 gde je l’m-1 dužina reči W’m-1 koja odgovara simbolu nastalom spajanjem. l Uvod u organizaciju računara 24

Optimalnost Hafmanovog kodiranja Uvod u organizaciju računara 25

Optimalnost Hafmanovog kodiranja Uvod u organizaciju računara 25

Optimalnost Hafmanovog kodiranja l Cm je optimalno kodiranje za skup od m simbola sa

Optimalnost Hafmanovog kodiranja l Cm je optimalno kodiranje za skup od m simbola sa normiranim frekvencijama fi ako i samo ako je Cm -1 optimalno kodiranje za skup od m-1 koji se dobijaju spajanjem najređa dva uz sabiranje njihovih frekvencija. l To je upravo korak Hafmanovog algoritma! Uvod u organizaciju računara 26