Hafmanovo kodiranje Uvod u organizaciju raunara Kodovi mogu
- Slides: 26
Hafmanovo kodiranje Uvod u organizaciju računara
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 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 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 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, 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 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 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 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 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 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 110 Uvod u organizaciju računara C F 1010 111 12
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 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 (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 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, 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 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 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 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 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
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 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 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
- Vrste kodova
- Dekadni brojevi
- Kod 8421
- Cnc programiranje zadaci
- Kodiranje intervjuja
- Kodiranje slike
- Elaborirano kodiranje
- Kodiranje je
- Kodiranje slik
- Huffmanovo kodiranje
- Kodiranje informatika
- Vrste programa
- Komplanarne tacke
- Međudjelovanje sila zadaci
- Vode na kopnu
- Višestruko složena rečenica vježba
- šta čini reljef
- U sumi se rodi zivi na vodi sta je to
- Na koju brzinu ukazuje prometni znak na slici
- Uvod u css
- Uvod u digitalnu i mikroracunarsku elektroniku
- Uvod u knjigovodstvo
- Lirika 5 razred provjera znanja
- Izvor slike u seminarskom radu
- Uvod u geografiju
- Uvod u excel
- Slidetodoc.com