Documente Academic
Documente Profesional
Documente Cultură
Febrero de 2010
Febrero de 2010
1 / 25
ndice
Febrero de 2010
2 / 25
ndice
1
Algoritmos Huffman Los cdigos Huffman son optimales Huffman bsico Huffman adaptativo Algoritmos LempelZiv Compresin aritmtica
Febrero de 2010
3 / 25
Resumen
Febrero de 2010
4 / 25
Resumen
Febrero de 2010
4 / 25
Resumen
Febrero de 2010
4 / 25
Resumen
Veremos en este apartado Por qu los cdigos Huffman son optimales. El algoritmo del Huffman bsico, algoritmo en dos pasos.
Febrero de 2010
4 / 25
Resumen
Veremos en este apartado Por qu los cdigos Huffman son optimales. El algoritmo del Huffman bsico, algoritmo en dos pasos. Finalmente, el algoritmo de GallagerKnuth para los Huffman adaptativos o en un paso o universal.
Febrero de 2010
4 / 25
Febrero de 2010
5 / 25
Febrero de 2010
5 / 25
Febrero de 2010
5 / 25
Febrero de 2010
6 / 25
Febrero de 2010
6 / 25
Febrero de 2010
6 / 25
Febrero de 2010
6 / 25
Peso(T ) =
i=1
fi hi ,
Febrero de 2010
6 / 25
Costo de un cdigo
Febrero de 2010
7 / 25
Costo de un cdigo
Denicin Sea C un cdigo instantneo par a una fuente S con estadstica F = {f1 , . . . , fr }, y sea T su rbol de representacin literal.
Febrero de 2010
7 / 25
Costo de un cdigo
Denicin Sea C un cdigo instantneo par a una fuente S con estadstica F = {f1 , . . . , fr }, y sea T su rbol de representacin literal. Llamaremos rbol ponderado asociado a C al rbol ponderado por hojas de T segn F .
Febrero de 2010
7 / 25
Costo de un cdigo
Denicin Sea C un cdigo instantneo par a una fuente S con estadstica F = {f1 , . . . , fr }, y sea T su rbol de representacin literal. Llamaremos rbol ponderado asociado a C al rbol ponderado por hojas de T segn F . Llamaremos costo del cdigo C al peso de su rbol ponderado asociado.
Febrero de 2010
7 / 25
Costo de un cdigo
Denicin Sea C un cdigo instantneo par a una fuente S con estadstica F = {f1 , . . . , fr }, y sea T su rbol de representacin literal. Llamaremos rbol ponderado asociado a C al rbol ponderado por hojas de T segn F . Llamaremos costo del cdigo C al peso de su rbol ponderado asociado. Diremos que C es un cdigo de costo mnimo, o un cdigo optimal, si cualquier otro cdigo instantneo sobre S tiene un costo mayor o igual.
Febrero de 2010
7 / 25
Febrero de 2010
8 / 25
Asociamos a las hojas del rbol del cdigo C sus frecuencias absolutas como pesos,
Febrero de 2010
8 / 25
Asociamos a las hojas del rbol del cdigo C sus frecuencias absolutas como pesos, C = {0, 10, 110, 111} F = {50, 30, 15, 5}, obteniendo un rbol ponderado por hojas segn F .
Ramiro Moreno (Matemtica, UdL) Algoritmos bsicos compresin sin prdidas Febrero de 2010 8 / 25
El peso,
Febrero de 2010
8 / 25
El peso,
Peso(TC ) = 50 1 + 30 2 + 15 3 + 5 3 = 170.
Ramiro Moreno (Matemtica, UdL) Algoritmos bsicos compresin sin prdidas Febrero de 2010 8 / 25
Ntese que si las frecuencias fuesen relativas el peso sera la longitud media: Peso(TC ) = L = 1 7.
Ramiro Moreno (Matemtica, UdL) Algoritmos bsicos compresin sin prdidas Febrero de 2010 8 / 25
Febrero de 2010
9 / 25
Febrero de 2010
9 / 25
Febrero de 2010
9 / 25
Febrero de 2010
9 / 25
Febrero de 2010
9 / 25
Febrero de 2010
10 / 25
Febrero de 2010
10 / 25
Febrero de 2010
10 / 25
Febrero de 2010
10 / 25
Febrero de 2010
10 / 25
Febrero de 2010
11 / 25
Dado un chero fuente sobre un alfabeto X = {a, b, c, d, e}, realizamos una lectura, primer paso, que asigne a cada carcter fuente la frecuencia absoluta con que se presenta.
Febrero de 2010
11 / 25
Dado un chero fuente sobre un alfabeto X = {a, b, c, d, e}, realizamos una lectura, primer paso, que asigne a cada carcter fuente la frecuencia absoluta con que se presenta.
a;12
b;20
c;15
d;41
e;12
Obtenemos as una lista inicial de los caracteres y sus frecuencias absolutas o pesos.
Febrero de 2010
11 / 25
Dado un chero fuente sobre un alfabeto X = {a, b, c, d, e}, realizamos una lectura, primer paso, que asigne a cada carcter fuente la frecuencia absoluta con que se presenta.
a;12
e;12
c;15
b;20
d;41
Febrero de 2010
11 / 25
Febrero de 2010
12 / 25
Consideremos el mismo ejemplo anterior: alfabetofuente X = {a, b, c, d, e} y pesos F = {12, 20, 15, 41, 12}, y la lista ordenada
Febrero de 2010
12 / 25
Consideremos el mismo ejemplo anterior: alfabetofuente X = {a, b, c, d, e} y pesos F = {12, 20, 15, 41, 12}, y la lista ordenada
a;12 e;12 c;15 b;20 d;41
Febrero de 2010
12 / 25
a;12
e;12
c;15
b;20
24
d;41
Febrero de 2010
12 / 25
c;15
b;20
24
d;41
a;12
e;12
Febrero de 2010
12 / 25
c;15
b;20
24
35
d;41
a;12
e;12
Febrero de 2010
12 / 25
24
35
d;41
a;12
e;12
c;15
b;20
Febrero de 2010
12 / 25
24
35
d;41
59
a;12
e;12
c;15
b;20
Febrero de 2010
12 / 25
d;41
59
24
35
a;12
e;12
c;15
b;20
Febrero de 2010
12 / 25
d;41
59
100
24
35
a;12
e;12
c;15
b;20
Febrero de 2010
12 / 25
d;41
59
24
35
a;12
e;12
c;15
b;20
Febrero de 2010
12 / 25
Febrero de 2010
13 / 25
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 13 / 25
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 13 / 25
100
1
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 13 / 25
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 13 / 25
110
1
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 13 / 25
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 13 / 25
0
1
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 13 / 25
Febrero de 2010
14 / 25
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 14 / 25
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 14 / 25
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 14 / 25
0 a
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 14 / 25
a
Ramiro Moreno (Matemtica, UdL)
b
Febrero de 2010 14 / 25
Febrero de 2010
15 / 25
Febrero de 2010
15 / 25
Febrero de 2010
15 / 25
Febrero de 2010
15 / 25
Febrero de 2010
15 / 25
Febrero de 2010
15 / 25
Febrero de 2010
15 / 25
Febrero de 2010
16 / 25
5 5
6 6
7 10
8 11
9 11
10 21
11 32
11
10
21
10
11
Febrero de 2010
16 / 25
5 5
6 6
7 10
8 11
9 11
10 21
11 32
11
10
21
10
11
Febrero de 2010
16 / 25
5 5
6 6
7 10
8 11
9 11
10 21
11 32
11
10
21
10
11
Febrero de 2010
16 / 25
5 5
6 6
7 10
8 11
9 11
10 21
11 32
11
10
21
10
11
Febrero de 2010
16 / 25
5 5
6 6
7 10
8 11
9 11
10 21
11 32
11
10
21
10
11
Febrero de 2010
16 / 25
5 5
6 6
7 10
8 11
9 11
10 21
11 32
11
10
21
10
11
Febrero de 2010
16 / 25
7 10
8 11
9 11
10 21
11 32
11
10
21
10
11
Febrero de 2010
16 / 25
6 6
32
7 10
8 11
Raiz: FIN
9 11
10 21
11 32
11
10
21
10
8 11
Febrero de 2010
16 / 25
6 6
33
7 10
8 11
9 12
10 21
11 33
12
10
21
10
8 11
Febrero de 2010
16 / 25
Febrero de 2010
17 / 25
33
12
21
10
11
w x y z
Febrero de 2010
17 / 25
33
12
21
10
11
w x y z
C(y)=000010
Febrero de 2010 17 / 25
12
21
10
11
w x z
Febrero de 2010
17 / 25
13
21
10
11
1 C(y)=00001
w x z
Febrero de 2010
17 / 25
ndice
1
Algoritmos Huffman Algoritmos LempelZiv Algoritmo LZ77 Algoritmo LZ78 Compresin aritmtica
Febrero de 2010
18 / 25
Codicacin LempelZiv
Generalidades
Febrero de 2010
19 / 25
Codicacin LempelZiv
Generalidades
Febrero de 2010
19 / 25
Codicacin LempelZiv
Generalidades
Dada una cadena x X se reproduce a partir de sus prejos. Se usa un puntero p y la longitud, l, que indican desde dnde y cunto se reproduce.
Febrero de 2010
19 / 25
Codicacin LempelZiv
Generalidades
Dada una cadena x X se reproduce a partir de sus prejos. Se usa un puntero p y la longitud, l, que indican desde dnde y cunto se reproduce. Una reproduccin se construye con el menor p que permita la mayor l.
Febrero de 2010
19 / 25
Codicacin LempelZiv
Generalidades
Dada una cadena x X se reproduce a partir de sus prejos. Se usa un puntero p y la longitud, l, que indican desde dnde y cunto se reproduce. Una reproduccin se construye con el menor p que permita la mayor l. Se aade un caracter nuevo para formar una produccin.
Febrero de 2010
19 / 25
Codicacin LempelZiv
Generalidades
Dada una cadena x X se reproduce a partir de sus prejos. Se usa un puntero p y la longitud, l, que indican desde dnde y cunto se reproduce. Una reproduccin se construye con el menor p que permita la mayor l. Se aade un caracter nuevo para formar una produccin.
Febrero de 2010
19 / 25
Codicacin LempelZiv
Generalidades
Dada una cadena x X se reproduce a partir de sus prejos. Se usa un puntero p y la longitud, l, que indican desde dnde y cunto se reproduce. Una reproduccin se construye con el menor p que permita la mayor l. Se aade un caracter nuevo para formar una produccin. Denicin Llamaremos complejidad ZivLempel de una cadena x al nmero c(x) de producciones que reproducen x.
Febrero de 2010
19 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Febrero de 2010
20 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Febrero de 2010
20 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Febrero de 2010
20 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Febrero de 2010
20 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Febrero de 2010
20 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Febrero de 2010
20 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Sea la secuencia x = 0001101001000101 {0, 1} . secuencia actualproduccin 0 0001 0 00110 0 001 10100 p 1 4 5 l 2 1 2
Febrero de 2010
20 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Sea la secuencia x = 0001101001000101 {0, 1} . secuencia actualproduccin 0 0001 0 00110 0 001 10100 0 001 10 1001000 p 1 4 5 7 l 2 1 2 3
Febrero de 2010
20 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Sea la secuencia x = 0001101001000101 {0, 1} . secuencia actualproduccin 0 0001 0 00110 0 001 10100 0 001 10 1001000 0 001 10 100 1000 101 p 1 4 5 7 5 l 2 1 2 3 3
Febrero de 2010
20 / 25
Codicacin LempelZiv
Reproduccin de una secuencia
Sea la secuencia x = 0001101001000101 {0, 1} . secuencia actualproduccin 0 0001 0 00110 0 001 10100 0 001 10 1001000 0 001 10 100 1000 101 Por lo tanto la complejidad es c(x) = 6.
Ramiro Moreno (Matemtica, UdL) Algoritmos bsicos compresin sin prdidas Febrero de 2010 20 / 25
p 1 4 5 7 5
l 2 1 2 3 3
Codicacin LZ77
Algoritmo
Febrero de 2010
21 / 25
Codicacin LZ77
Algoritmo
Se dispone de una memoria buffer con n caracteres: L para el presente y n L para el pasado.
Febrero de 2010
21 / 25
Codicacin LZ77
Algoritmo
Se dispone de una memoria buffer con n caracteres: L para el presente y n L para el pasado. Inicialmente el pasado se llena con un carcter arbitrario y se alimenta el presente con los primeros L caracteres de la secuencia a codicar.
Febrero de 2010
21 / 25
Codicacin LZ77
Algoritmo
Se dispone de una memoria buffer con n caracteres: L para el presente y n L para el pasado. Inicialmente el pasado se llena con un carcter arbitrario y se alimenta el presente con los primeros L caracteres de la secuencia a codicar. En cada paso del algoritmo
Febrero de 2010
21 / 25
Codicacin LZ77
Algoritmo
Se dispone de una memoria buffer con n caracteres: L para el presente y n L para el pasado. Inicialmente el pasado se llena con un carcter arbitrario y se alimenta el presente con los primeros L caracteres de la secuencia a codicar. En cada paso del algoritmo
1
Febrero de 2010
21 / 25
Codicacin LZ77
Algoritmo
Se dispone de una memoria buffer con n caracteres: L para el presente y n L para el pasado. Inicialmente el pasado se llena con un carcter arbitrario y se alimenta el presente con los primeros L caracteres de la secuencia a codicar. En cada paso del algoritmo
1
se busca el menor p en el pasado que reproduzca la cadena del presente de l mayor; se forma la produccin con los primeros l + 1 caracteres del presente;
Febrero de 2010
21 / 25
Codicacin LZ77
Algoritmo
Se dispone de una memoria buffer con n caracteres: L para el presente y n L para el pasado. Inicialmente el pasado se llena con un carcter arbitrario y se alimenta el presente con los primeros L caracteres de la secuencia a codicar. En cada paso del algoritmo
1
se busca el menor p en el pasado que reproduzca la cadena del presente de l mayor; se forma la produccin con los primeros l + 1 caracteres del presente; se codica como C = C1 C2 C3 , con C1 = (p 1)r , C2 = (l)r , C3 es el carcter (l + 1)-simo del presente yr r = |X |;
Febrero de 2010
21 / 25
Codicacin LZ77
Algoritmo
Se dispone de una memoria buffer con n caracteres: L para el presente y n L para el pasado. Inicialmente el pasado se llena con un carcter arbitrario y se alimenta el presente con los primeros L caracteres de la secuencia a codicar. En cada paso del algoritmo
1
se busca el menor p en el pasado que reproduzca la cadena del presente de l mayor; se forma la produccin con los primeros l + 1 caracteres del presente; se codica como C = C1 C2 C3 , con C1 = (p 1)r , C2 = (l)r , C3 es el carcter (l + 1)-simo del presente yr r = |X |; se desplazan l + 1 caracteres hacia el pasado en todo el buffer y se realimenta el presente con l + 1 nuevos.
Algoritmos bsicos compresin sin prdidas Febrero de 2010 21 / 25
Codicacin LZ77
Ejemplo
Febrero de 2010
22 / 25
Codicacin LZ77
Ejemplo
Febrero de 2010
22 / 25
Codicacin LZ77
Ejemplo
Febrero de 2010
22 / 25
Codicacin LZ77
Ejemplo
presente
Febrero de 2010
22 / 25
Codicacin LZ77
Ejemplo
presente a a a a a a b a b a c b a
Febrero de 2010
22 / 25
Codicacin LZ77
Ejemplo
presente a a a a a a a b a a a b b a a c b b a a c c b b a a
a a
a a
a a
a a
a a
Febrero de 2010
22 / 25
Codicacin LZ77
Ejemplo
presente a a a a a b a a a a b c a a b a b a b a c a c b b b a a a c c c b b b c a a a
a a a
a a a
a a a
a a a
a a b
Febrero de 2010
22 / 25
Codicacin LZ77
Ejemplo
presente a a a a a a b c a a a b a b c c a a b a a b a c b a c b a c b a b b a c a a c b c c b c b b c a a a a a
a a a c
a a a b
a a a a
a a a c
a a b b
Febrero de 2010
22 / 25
Codicacin LZ78
Ejemplo en la web de Data Compression
Febrero de 2010
23 / 25
Codicacin LZ78
Ejemplo en la web de Data Compression
En vez de usar un buffer como en el caso LZ77, ahora, en el modelo LZ78, las producciones se almacenan dinmicamente en un diccionario y se codican como punteros a ese diccionario.
Febrero de 2010
23 / 25
Codicacin LZ78
Ejemplo en la web de Data Compression
En vez de usar un buffer como en el caso LZ77, ahora, en el modelo LZ78, las producciones se almacenan dinmicamente en un diccionario y se codican como punteros a ese diccionario.
Febrero de 2010
23 / 25
ndice
1
Febrero de 2010
24 / 25
Compresin aritmtica, CA
Febrero de 2010
25 / 25
Compresin aritmtica, CA
Para una idea del algoritmo bsico ver las transparencias 138 del chero arit-PPM.pdf, Implementaci dun compresor aritmtic utilitzant el model estadstic PPM, trabajo de CTI en 2001 de Dami Castell y Daniel Llobera.
Febrero de 2010
25 / 25
Compresin aritmtica, CA
Para una idea del algoritmo bsico ver las transparencias 138 del chero arit-PPM.pdf, Implementaci dun compresor aritmtic utilitzant el model estadstic PPM, trabajo de CTI en 2001 de Dami Castell y Daniel Llobera. Para ms informacin sobre la CA ver el chero ArithCodWNC.pdf, Arithmetic coding for data compression, 1987, de los creadores de este modelo de compresin, I. H. Witten, R. M. Neal y J. G. Cleary.
Febrero de 2010
25 / 25
Compresin aritmtica, CA
Para una idea del algoritmo bsico ver las transparencias 138 del chero arit-PPM.pdf, Implementaci dun compresor aritmtic utilitzant el model estadstic PPM, trabajo de CTI en 2001 de Dami Castell y Daniel Llobera. Para ms informacin sobre la CA ver el chero ArithCodWNC.pdf, Arithmetic coding for data compression, 1987, de los creadores de este modelo de compresin, I. H. Witten, R. M. Neal y J. G. Cleary. Y para entender los modelos adaptativos en la CA, como el PPM, Prediction by partial match, ver el PPMunbounded.pdf, Unbounded length contexts for PPM, 1997, de J. G. Cleary, W. J. Teahan y I. H. Witten.
Ramiro Moreno (Matemtica, UdL) Algoritmos bsicos compresin sin prdidas Febrero de 2010 25 / 25