Zlety o posty o szyki Wdy o nieefektywny, gdy pwdopodoieństwo wystąpieni jednego z symoli lfetu źódł jest duże (le możn kodowć ciągi symoli) o dwupzeiegowy (koszt tnsmisji modelu może yć duży, nie do zstosowni wpost do kodowni on-line)
Użycie lgoytmu Huffmn w dptcyjnym modelu jest możliwe Metod ute-foce kżdozowo po zkodowniu symolu uduj od now dzewo Huffmn ( Uwg n Zeo Fequency Polem )... le w pktyce zyt kosztowne Ale mmy lgoytm geneujący kod zliżony do kodu Huffmn, ndjący się do zstosowni w lgoytmie dptcyjnym. Dzewo Huffmn udowne jest pzyostowo możliw jest ktulizcj modelu zostł wynleziony niezleżnie pzez Flle i Gllge udoskonlony pzez Comck i Hospool oz (niezleżnie) pzez Knuth nstępnie udoskonlony pzez Vitte
N czym poleg? Budujemy pzyostowo dzewo inne, któego węzły zwieją liczniki częstości, liście są dodtkowo skojzone z symolmi lfetu źódł Dzewo m włsność odzeństw, gdy:. kżdy węzeł nie ędący liściem m potomków;. pzechodząc węzły w kolejności z góy do dołu, n dnym poziomie od pwej do lewej, otzymmy ciąg węzłów o nieosnących licznikch. Dzewo mjące włsność odzeństw jest dzewem Huffmn (tw. Flle- Gllge)
Pzykłd: dzewo mjące włsność odzeństw 5 6 4 c d
Budowne dzewo zwie liść (-węzeł) epezentujący wszystkie symole, któe jeszcze nie wystąpiły w kodownym ciągu Kodownie ozpoczynmy od dzew skłdjącego się wyłącznie z - węzł Używmy pomocniczej stuktuy węzły, listy dwukieunkowej zwiejącej węzły dzew upoządkowne w kolejności pzeglądni dzew z góy do dołu, n dnym poziomie od pwej do lewej Podlistę listy węzły skłdjącą się z wszystkich węzłów o wtości licznik i nzywmy lokiem-i, piewszy węzeł tkiego loku lideem
DynmiczneKodownieHuffmnFGK(symol s) p = liść zwiejący symol s; wypowdź słowo kodowe dl s (*); if p jest -węzłem utwóz nowy węzeł q dl symolu s; q.licznik = ; p = nowy węzeł w miejscu -węzł ędący odzicem -węzł i węzł q; p.licznik = ; else p.licznik++; endif while p nie jest kozeniem if p nusz włsność odzeństw if lide loku-i zwiejącego p nie jest odzicem p zmień p z lideem; endif endif p = odzic(p); p.licznik++; endwhile
p p q q Pzykłd: kodujemy ciąg, wstwienie symolu
p p wstwienie symolu (pzywóć włsność odzeństw)
3 p p wstwienie symolu
3 3 3 p p ponowne wstwienie symolu (pzywóć włsność odzeństw)
3 4 p p ponowne wstwienie symolu (pzywóć włsność odzeństw)
4 postć dzew po pzetwozeniu ciągu
Dodtkowe złożenie: w loku-i węzłów njpiew znjdują się węzły wewnętzne, później liście minimlizujemy głęokość dzew dziej złożone stje się pzywcnie włsności odzeństw ciąg o długości s zkodujemy n nie więcej niż h+s itch, gdzie h to licz itów dl kodowni sttycznego Huffmn
Algoytm dptcyjny możn zudowć z kilku stłych modeli Ale po kolei... Zmodyfikowne kody inne Rodzin kodów Golom Rodzin kodów Golom-Rice Model dnych dl pmetycznej odziny kodów (model lgoytmu FELICS)
Pefiksowy kod dl skończonego lfetu, np. dl licz.. j- słow kodowe o długości log(j) lu log (j) itów, gdzie j to ozmi lfetu włściwie to odzin kodów (długość słow kodowego kodu innego dl lfetu j symoli to log(j) ) Symol Alfet.. 4.. 5.. 6.. 7............ 3.... 4.... 5... 6.. 7.
Geneownie słow kodowego kodujemy liczę i zmodyfikownym kodem innym dl licz.. j, pzyjmijmy N = log(j) i n = N jeżeli i < n j zkoduj i z pomocą N -itowego kodu innego else zkoduj i + n j z pomocą N -itowego kodu innego Włsności zmodyfikownego kodu innego długość słow kodowego: log(j) lu log (j) dl j = N kod stje się N -itowym kodem innym licz dłuższych słów kodowych jest zwsze pzyst
pmetyczn odzin kodów pzeznczon do kodowni nieujemnych licz cłkowitych nieskończon pmetem kodu jest cłkowite m, m > zwie kody optymlne dl wykłdniczego ozkłdu pwdopodoieństw symoli (dl niektóych pmetów ozkłdu) (ndje się do źódeł o ozkłdzie nieosnącym) słow kodowe łtwe w genecji i dekodowniu
Geneownie słow kodowego kodujemy liczę x kodem Golom z pmetem m np. 8 kodem Golom z pmetem 3 pefiks słow: x/m 8/3 = zkodowne unnie (kod α Elis) sufiks słow: x mod m 8 mod 3 = zkodowne zmodyfikownym kodem innym dl pzedziłu [, m ]
Jest to szczególny pzypdek kodu Golom zuwżony już pzez Golom i niezleżnie od niego odkyty pzez Rice. Kody Golom są szczególnie poste, gdy m = k kodujemy liczę x kodem Golom-Rice z pmetem k pefiks słow: x/ k zkodowne unnie (kod α Elis) x >> k sufiks słow: x mod k zkodowne zmodyfikownym kodem innym dl pzedziłu [, m ] k njmniej znczących itów x
Dl skończonego lfetu używmy tylko części nieskończonej odziny. Pzyjmijmy ozmi lfetu N dl odziny Golom kody o m > N- mją słow kodowe wszystkich symoli lfetu dłuższe od kodu o m = N- dl kodów Golom- Rice kody o k > N mją słow wszystkich symoli lfetu dłuższe od kodu o k = N sensowne jest używnie początkowych N- kodów sensowne jest używnie początkowych N kodów (k =.. N )
Rodziny Golom-Rice możn użyć do kodowni ciągów symoli o wykłdniczym ozkłdzie pwdopodoieństw. (ozkłd często spotykny w kompesji ozów, dźwięków... ) Jeżeli pmet ozkłdu jest nieznny, lu zmieni się w tkcie pcy źódł to pmet kodu Golom-Rice tze doieć dptcyjnie. Jk to zoić? Wyiejmy ten kod, któy jest njlepszy dl już pzetwozonych symoli Jk to zoić?
Algoytm modelowni zstosowny pzez Howd i Vitte w lgoytmie ezsttnej kompesji ozów FELICS. Ide Dl kżdego kodu z odziny utzymuj licznik (tlic liczników) licznik liczy itów, któą y uzyskno, kodując dotychczs pzetwozoną część ciągu tym kodem. Po zkodowniu symolu zwiększ licznik kżdego z kodów o długość słow kodowego włśnie zkodownego symolu w kodzie odpowidjącym licznikowi Do kodowni symolu użyj kodu o njmniejszym liczniku
Udoskonlenie: okesowo, gdy wtość njmniejszego z liczników pzekoczy pewien póg, podziel wszystkie liczniki pzez unikniemy pzepełnieni zwiększymy znczenie symoli kodownych niedwno Ww. metod to tylko część cłego lgoytmu (i tylko część modelu) Metod z FELICS ndje się do kżdej odziny Jeszcze postsz metod istnieje dl odziny Golom-Rice zstosown pzez Weinege, Seoussi, Spio w lgoytmie LOCO(JPEG-LS) niezleżnie od ozmiu lfetu mmy liczniki (licznik zkodownych symoli i licznik sumy wtości tych symoli)
Wto się zpoznć Ide kodowni ytmetycznego Koncepcj implementcji dl licz o ogniczonej pecyzji Wyne lgoytmy MQ-Code Rnge-Code Szyki model dl kode ytmetycznego