1.3.2001SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Adaptivní Huffmanův kód.

Slides:



Advertisements
Podobné prezentace
Kompresní algoritmy.
Advertisements

Spektra zatížení Milan Růžička 1 Dynamická pevnost a životnost
Cvičení Úloha 1: Rozhodněte zda posloupnost znaků v poli délky n tvoří palindrom (slovo, které je stejné při čtení zprava i zleva). Př.: [a,l,e,l,a] [a,n,n,a]
ALGO – Algoritmizace 6. cvičení
Aplikační a programové vybavení
Red-Black Stromy Binární Vyhledávací Stromy, u kterých je časová složitost operací v nejhorším případě rovná O(log n)
Semestrální práce KIV/PT Martin Kales Hana Hůlová.
SQL – tříhodnotová logika
1/12 ALGO – Algoritmizace 5. cvičení 1.ročník, ZS Ing. Zdena DOBEŠOVÁ, Ph.D.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Základy informatiky přednášky Kódování.
Komprese textových, video a audio dat.  Komprese   JPEG: 
ADT Strom.
Metody řazení s lineární časovou složitostí
NÁSOBENÍ ČÍSLEM 10 ZÁVĚREČNÉ SHRNUTÍ
Téma: SČÍTÁNÍ A ODČÍTÁNÍ CELÝCH ČÍSEL 2
VY_32_INOVACE_INF_RO_12 Digitální učební materiál
KIV/PPA1 cvičení 11 Cvičící: Pavel Bžoch. Osnova cvičení Souborový vstup a výstup Práce s textovými soubory.
VY_32_INOVACE_ 14_ sčítání a odčítání do 100 (SADA ČÍSLO 5)
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace
Získávání informací Získání informací o reálném systému
Zábavná matematika.
Letokruhy Projekt žáků Střední lesnické školy a střední odborné školy sociální ve Šluknově.
Základy informatiky přednášky Efektivní kódy.
Algoritmizace a programování Podmíněné a cyklické příkazy- 08
Jazyk vývojových diagramů
Projekt PŘEDPOVĚĎ POČASÍ. Předpověď počasí na
Čtení myšlenek Je to až neuvěřitelné, ale skutečně je to tak. Dokážu číst myšlenky.Pokud mne chceš vyzkoušet – prosím.
TI 6.1 STROMY A KOSTRY Stromy a kostry. TI 6.2 Stromy a kostry Seznámíme se s následujícími pojmy: kostra grafu, cyklomatické číslo grafu, hodnost grafu.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Statistické metody komprese dat a Shannon-Fanův kód.
Dělení se zbytkem 8 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Informatika pro ekonomy II přednáška 3
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
REDUKCE DAT Díváme-li se na soubory jako na text, pak je tento text redundantní. Redundance vyplývá z:  některé fráze nebo slova se opakují  existuje.
Radim Farana Podklady pro výuku pro akademický rok 2013/2014
SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Teorie informace.
Zapsání modelu úlohy celočíselného programování do jazyka Mosel Deklarace seznamu indexů, polí a jejich naplnění koeficienty modelu, Deklarace rozhodovacích.
Základy číslicové techniky
Stromy.
Úkoly nejen pro holky.
Číselné soustavy david rozlílek ME4B
SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Úvod.
SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Aritmetické kódování.
Základy Číslicové Techniky
Jiří Znoj - zno Tvorba konkordace Algoritmy II 3. projekt, 5. zadání Jiří Znoj - zno
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – OPAKOVANÝM VÝBĚREM NEJVĚTŠÍHO PRVKU (SELECTSORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
Další abstraktní datové typy
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Kontextové metody.
Datové typy a struktury
STROMY Datová struktura sestávající z uzlů
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Gymnázium, Žamberk, Nádražní 48 Projekt: CZ.1.07/1.5.00/ Inovace ve vzdělávání na naší škole Název: Základní pojmy počítačové grafiky Autor: Mgr.
UNIX Shell skripty Roman Danel VŠB TU Ostrava, Hornicko – geologická fakulta.
Kompresní algoritmus LZW Dokumentografické informační systémy.
SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Huffmanův kód - aplikace.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Algoritmy komprese dat
doc. RNDr. Zdeněk Botek, CSc.
4. Typ pole 4.1 Jednorozměrná pole
Radim Farana Podklady pro výuku
Ztrátová komprese obrázků JPG
Úvod do UNIXu (6 th round) David Hoksza
Výška stromu - algoritmus
Překladače 5. Syntaktická analýza
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Adaptivní Huffmanův kód

SWI072 Algoritmy komprese dat2 Statické  adaptivní metody u statický model model kodér dekodér model zdroj

SWI072 Algoritmy komprese dat3 Statické  adaptivní metody u adaptivní model model kodér dekodér model zdroj aktualizace modelu aktualizace modelu

SWI072 Algoritmy komprese dat4 Adaptivní Huffmanův kód - algoritmus FGK u Faller(1973), Gallagher(1978), Knuth(1985).  Algoritmus FGK: Kódování Inicializuj Huffmanův strom read(znak) while znak  EOF do zakóduj znak aktualizuj strom read(znak) od.  Algoritmus FGK: Dekódování Inicializuj Huffmanův strom dekóduj(znak) while znak  EOF do write(znak) aktualizuj strom dekóduj(znak) od.

SWI072 Algoritmy komprese dat5 Charakterizace Huffmanových stromů u Huffmanův strom - binární strom s ohodnocenými vrcholy. u Dva vrcholy binárního stromu, které mají stejného otce, nazveme sourozenci. Binární strom s ohodnocenými vrcholy má sourozeneckou vlastnost, pokud –každý vrchol kromě kořene má sourozence –vrcholy lze uspořádat do neklesající posloupnosti dle jejich vah tak, že sourozenci jsou vždy na sousedních místech. u Věta(Gallagher): Binární strom s ohodnocenými vrcholy je Huffmanovým stromem právě tehdy, když má sourozeneckou vlastnost.

3 c:2 d: a:1 b:2

3 c:2 d: a:1 b: načti znak ´a´

3 c:2 d: a:2 b:

4 c:2 d: a:2 b: načti znak ´a´

4 c:2 d: a:3 b:

4 c:2 a: d:2 b:

4 c:2 a: d:2 b:

4 c:2 a: d:2 b:

c:2 a:3 5 9 d:2 b:

c:2 a:3 5 9 d:2 b:

SWI072 Algoritmy komprese dat16 Problém nulových četností u Jak kódovat znaky, které jsou načteny poprvé? u 1. řešení: Při počáteční inicializaci jsou do Huffmanova stromu vloženy všechny znaky vstupní abecedy, každý s četností 1. u 2. řešení: Při počáteční inicializaci je do Huffmanova stromu vložen spec. znak ESC. První výskyt znaku z je kódován jako Huffmanův kód znaku ESC, následovaný znakem z. Poté je do Huffmanova stromu vložen nový list, odpovídající znaku z.

SWI072 Algoritmy komprese dat17 Problém znaků, které jsou načteny poprvé u Počáteční inicializace Huffmanova stromu esc:0 0 z:0 u z je nově načtený znak, který se ve stromě nevyskytuje u aktualizuj strom

SWI072 Algoritmy komprese dat18 Aktualizace Huffmanova stromu u z je znak načtený na vstupu u if z se ve stromě nevyskytuje then k esc:k z:0 v esc:k else v:= list Huffmanova stromu se znakem z fi.

SWI072 Algoritmy komprese dat19 Aktualizace Huffmanova stromu  if v je sourozenec vrcholu esc then vyměň v s listem, který má nejvyšší pořadí mezi vrcholy se stejnou váhou jako v v.váha++; v := otec(v) fi  while v  kořen-stromu do vyměň v s vrcholem, který má nejvyšší pořadí mezi vrcholy se stejnou váhou jako v (vymění se celé podstromy) v.váha++; v := otec(v) od.

SWI072 Algoritmy komprese dat20 FGK:Kódování  Inicializuj Huffmanův strom (T) repeat read(znak) if první výskyt znaku then write(kód(ESC)) write(znak) else write(kód(znak)) fi aktualizuj strom(T,znak) until znak  EOF.

SWI072 Algoritmy komprese dat21 FGK:Dekódování u InicializujHuffmanůvStrom(T); vrchol := kořen-stromu u repeat u while vrchol není list do read(bit) if bit=0 then vrchol := vrchol.levý-syn else vrchol := vrchol.pravý-syn fi od  if vrchol.znak = ESC  then read(znak) else znak := vrchol.znak fi if znak  EOF then zapiš znak na výstup AktualizujStrom(T,znak) fi u until znak = EOF.

SWI072 Algoritmy komprese dat22 Vitterův algoritmus u J.S.Vitter (1987) u Pouze 1 výměna při aktualizaci stromu (FGK nejvýše l/2 výměn, kde l = délka právě zapsaného k. s.) u Vitter minimalizuje  i l i a max i l i ( l i = délka i-tého k. s. ) u l A - průměrná délka kódového slova pro algoritmus A l FGK  2 l H l V  l H +1 u l FGK  l H + O(1) (Milidiu, Laber, Pessoa,1999) u D.E.Knuth: Dynamic Huffman Coding. J. Algorithms 6(1985), J.S.Vitter: Design and analysis of dynamic Huffman codes. J. ACM 34(1987),

SWI072 Algoritmy komprese dat23 Další empirické výsledky u E.R.Fiala,D.H.Greene (1989) SC TM NS CC BF SF RCF SNI SCI BI FGK V SC zdrojový kód TM ASCII (technické memoranda) NS ASCII (news service) CC zkompilovaný kód BF boot file SF splajnové fonty RCF bitové mapy fontů kódované RLE SNI syntetické obrázky SCI digitalizované barevné fotografie (8bitů/pixel) BI digitalizované faxové dokumenty

SWI072 Algoritmy komprese dat24 Implementační poznámky u Problém přetečení –délka souboru (kořen-stromu.váha) –délka nejdelšího kódového slova u Řešení: vynásobím váhy všech vrcholů koeficientem r < 1. Nevýhoda: nutná reorganizace stromu r = 1/2

SWI072 Algoritmy komprese dat25 Reorganizace stromu u Je třeba znovu postavit celý strom ?