algoritmos básicos para la compresión sin pérdidas - (cti: parte ii

132
Algoritmos Huffman Algoritmos Lempel–Ziv Compresión aritmética Algoritmos básicos para la compresión sin pérdidas (CTI: Parte II de la Lección 2, Compresores sin pérdidas) Ramiro Moreno Chiral Dpt. Matemàtica (UdL) Febrero de 2010 Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 1 / 25

Upload: vankhanh

Post on 06-Jan-2017

220 views

Category:

Documents


0 download

TRANSCRIPT

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmos básicos para la compresión sinpérdidas

(CTI: Parte II de la Lección 2, Compresores sin pérdidas)

Ramiro Moreno Chiral

Dpt. Matemàtica (UdL)

Febrero de 2010

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 1 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Índice

1 Algoritmos Huffman

2 Algoritmos Lempel–Ziv

3 Compresión aritmética

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 2 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Índice

1 Algoritmos HuffmanLos códigos Huffman son optimalesHuffman básicoHuffman adaptativo

2 Algoritmos Lempel–Ziv

3 Compresión aritmética

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 3 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Resumen

Veremos en este apartadoPor qué los códigos Huffman son optimales.El algoritmo del Huffman básico, algoritmo en dos pasos.Finalmente, el algoritmo de Gallager–Knuth para losHuffman adaptativos o en un paso o universal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 4 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Resumen

Veremos en este apartado

Por qué los códigos Huffman son optimales.El algoritmo del Huffman básico, algoritmo en dos pasos.Finalmente, el algoritmo de Gallager–Knuth para losHuffman adaptativos o en un paso o universal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 4 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Resumen

Veremos en este apartadoPor qué los códigos Huffman son optimales.

El algoritmo del Huffman básico, algoritmo en dos pasos.Finalmente, el algoritmo de Gallager–Knuth para losHuffman adaptativos o en un paso o universal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 4 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Resumen

Veremos en este apartadoPor qué los códigos Huffman son optimales.El algoritmo del Huffman básico, algoritmo en dos pasos.

Finalmente, el algoritmo de Gallager–Knuth para losHuffman adaptativos o en un paso o universal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 4 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Resumen

Veremos en este apartadoPor qué los códigos Huffman son optimales.El algoritmo del Huffman básico, algoritmo en dos pasos.Finalmente, el algoritmo de Gallager–Knuth para losHuffman adaptativos o en un paso o universal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 4 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Cota inferior de la longitud media de un códigoinstantáneo

Proposición

La longitud esperada, L, no necesariamente mínima, de uncódigo instantáneo d-ario para una fuente simple S = (X ,X ),con |X | = r , es

L ≥ Hd(X ),

alcanzándose la igualdad cuando pi = d−li , 1 ≤ i ≤ r , es decir,cuando X tiene una distribución de probabilidad d-ádicarespecto a las longitudes de las palabras–código.

Para esas fuentes d-ádicas los códigos de Shannon alcanzansu longitud media mínima, igualando la entropía.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 5 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Cota inferior de la longitud media de un códigoinstantáneo

Proposición

La longitud esperada, L, no necesariamente mínima, de uncódigo instantáneo d-ario para una fuente simple S = (X ,X ),con |X | = r , es

L ≥ Hd(X ),

alcanzándose la igualdad cuando pi = d−li , 1 ≤ i ≤ r , es decir,cuando X tiene una distribución de probabilidad d-ádicarespecto a las longitudes de las palabras–código.

Para esas fuentes d-ádicas los códigos de Shannon alcanzansu longitud media mínima, igualando la entropía.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 5 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Cota inferior de la longitud media de un códigoinstantáneo

Proposición

La longitud esperada, L, no necesariamente mínima, de uncódigo instantáneo d-ario para una fuente simple S = (X ,X ),con |X | = r , es

L ≥ Hd(X ),

alcanzándose la igualdad cuando pi = d−li , 1 ≤ i ≤ r , es decir,cuando X tiene una distribución de probabilidad d-ádicarespecto a las longitudes de las palabras–código.

Para esas fuentes d-ádicas los códigos de Shannon alcanzansu longitud media mínima, igualando la entropía.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 5 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Cota inferior de la longitud media de un códigoinstantáneo

Proposición

La longitud esperada, L, no necesariamente mínima, de uncódigo instantáneo d-ario para una fuente simple S = (X ,X ),con |X | = r , es

L ≥ Hd(X ),

alcanzándose la igualdad cuando pi = d−li , 1 ≤ i ≤ r , es decir,cuando X tiene una distribución de probabilidad d-ádicarespecto a las longitudes de las palabras–código.

Para esas fuentes d-ádicas los códigos de Shannon alcanzansu longitud media mínima, igualando la entropía.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 5 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Árboles ponderados por hojas

DefiniciónDados un árbol con raíz T , con r hojas, y un conjunto de pesosF = {f1, . . . , fr}, fi ∈ Z>0, asociamos a cada hoja un peso fi y acada vértice interno la suma de los pesos de las hojasdescendientes de ese vértice. Llamaremos árbol ponderadopor hojas según F al par (T ,F ) y definimos el peso de (T ,F )como

Peso(T ) =r∑

i=1

fihi ,

siendo hi , 1 ≤ i ≤ r , los niveles de las hojas de T .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 6 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Árboles ponderados por hojas

Definición

Dados un árbol con raíz T , con r hojas, y un conjunto de pesosF = {f1, . . . , fr}, fi ∈ Z>0, asociamos a cada hoja un peso fi y acada vértice interno la suma de los pesos de las hojasdescendientes de ese vértice. Llamaremos árbol ponderadopor hojas según F al par (T ,F ) y definimos el peso de (T ,F )como

Peso(T ) =r∑

i=1

fihi ,

siendo hi , 1 ≤ i ≤ r , los niveles de las hojas de T .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 6 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Árboles ponderados por hojas

DefiniciónDados un árbol con raíz T , con r hojas, y un conjunto de pesosF = {f1, . . . , fr}, fi ∈ Z>0, asociamos a cada hoja un peso fi y acada vértice interno la suma de los pesos de las hojasdescendientes de ese vértice.

Llamaremos árbol ponderadopor hojas según F al par (T ,F ) y definimos el peso de (T ,F )como

Peso(T ) =r∑

i=1

fihi ,

siendo hi , 1 ≤ i ≤ r , los niveles de las hojas de T .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 6 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Árboles ponderados por hojas

DefiniciónDados un árbol con raíz T , con r hojas, y un conjunto de pesosF = {f1, . . . , fr}, fi ∈ Z>0, asociamos a cada hoja un peso fi y acada vértice interno la suma de los pesos de las hojasdescendientes de ese vértice. Llamaremos árbol ponderadopor hojas según F al par (T ,F )

y definimos el peso de (T ,F )como

Peso(T ) =r∑

i=1

fihi ,

siendo hi , 1 ≤ i ≤ r , los niveles de las hojas de T .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 6 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Árboles ponderados por hojas

DefiniciónDados un árbol con raíz T , con r hojas, y un conjunto de pesosF = {f1, . . . , fr}, fi ∈ Z>0, asociamos a cada hoja un peso fi y acada vértice interno la suma de los pesos de las hojasdescendientes de ese vértice. Llamaremos árbol ponderadopor hojas según F al par (T ,F ) y definimos el peso de (T ,F )como

Peso(T ) =r∑

i=1

fihi ,

siendo hi , 1 ≤ i ≤ r , los niveles de las hojas de T .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 6 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código

DefiniciónSea C un código instantáneo par a una fuente S conestadística F = {f1, . . . , fr}, y sea T su árbol de representaciónliteral.

Llamaremos árbol ponderado asociado a C al árbolponderado por hojas de T según F .Llamaremos costo del código C al peso de su árbolponderado asociado.Diremos que C es un código de costo mínimo, o un códigooptimal, si cualquier otro código instantáneo sobre S tieneun costo mayor o igual.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 7 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código

DefiniciónSea C un código instantáneo par a una fuente S conestadística F = {f1, . . . , fr}, y sea T su árbol de representaciónliteral.

Llamaremos árbol ponderado asociado a C al árbolponderado por hojas de T según F .Llamaremos costo del código C al peso de su árbolponderado asociado.Diremos que C es un código de costo mínimo, o un códigooptimal, si cualquier otro código instantáneo sobre S tieneun costo mayor o igual.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 7 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código

DefiniciónSea C un código instantáneo par a una fuente S conestadística F = {f1, . . . , fr}, y sea T su árbol de representaciónliteral.

Llamaremos árbol ponderado asociado a C al árbolponderado por hojas de T según F .

Llamaremos costo del código C al peso de su árbolponderado asociado.Diremos que C es un código de costo mínimo, o un códigooptimal, si cualquier otro código instantáneo sobre S tieneun costo mayor o igual.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 7 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código

DefiniciónSea C un código instantáneo par a una fuente S conestadística F = {f1, . . . , fr}, y sea T su árbol de representaciónliteral.

Llamaremos árbol ponderado asociado a C al árbolponderado por hojas de T según F .Llamaremos costo del código C al peso de su árbolponderado asociado.

Diremos que C es un código de costo mínimo, o un códigooptimal, si cualquier otro código instantáneo sobre S tieneun costo mayor o igual.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 7 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código

DefiniciónSea C un código instantáneo par a una fuente S conestadística F = {f1, . . . , fr}, y sea T su árbol de representaciónliteral.

Llamaremos árbol ponderado asociado a C al árbolponderado por hojas de T según F .Llamaremos costo del código C al peso de su árbolponderado asociado.Diremos que C es un código de costo mínimo, o un códigooptimal, si cualquier otro código instantáneo sobre S tieneun costo mayor o igual.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 7 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código: Ejemplo

0

0

1

10

0

1

110

0

111

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 1

0; 0’5

0

•; 0’5

1

10; 0’3

0

•; 0’2

1

110; 0’15

0

111; 0’05

1

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 8 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código: Ejemplo

0

0

1

10

0

1

110

0

111

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 1

0; 0’5

0

•; 0’5

1

10; 0’3

0

•; 0’2

1

110; 0’15

0

111; 0’05

1

Asociamos a las hojas del árbol del código C sus frecuenciasabsolutas como pesos,

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 8 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código: Ejemplo

0

0

1

10

0

1

110

0

111

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 1

0; 0’5

0

•; 0’5

1

10; 0’3

0

•; 0’2

1

110; 0’15

0

111; 0’05

1

Asociamos a las hojas del árbol del código C sus frecuenciasabsolutas como pesos,C = {0,10,110,111} → F = {50,30,15,5}, obteniendo unárbol ponderado por hojas según F .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 8 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código: Ejemplo

0

0

1

10

0

1

110

0

111

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 1

0; 0’5

0

•; 0’5

1

10; 0’3

0

•; 0’2

1

110; 0’15

0

111; 0’05

1

El peso,∑

fihi , del árbol asociado a C es

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 8 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código: Ejemplo

0

0

1

10

0

1

110

0

111

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 1

0; 0’5

0

•; 0’5

1

10; 0’3

0

•; 0’2

1

110; 0’15

0

111; 0’05

1

El peso,∑

fihi , del árbol asociado a C es

Peso(TC) = 50× 1 + 30× 2 + 15× 3 + 5× 3 = 170.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 8 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Costo de un código: Ejemplo

0

0

1

10

0

1

110

0

111

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 100

0; 50

0

•; 50

1

10; 30

0

•; 20

1

110; 15

0

111; 5

1

•; 1

0; 0’5

0

•; 0’5

1

10; 0’3

0

•; 0’2

1

110; 0’15

0

111; 0’05

1

Nótese que si las frecuencias fuesen relativas el peso sería lalongitud media:

Peso(TC) = L = 1′7.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 8 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Hojas hermanas en los árboles ponderados

LemaDado un conjunto ordenado de pesos, F = {f1 ≤ f2 ≤ · · · ≤ fr},existe un árbol d-ario T ponderado por hojas según F, de pesomínimo, tal que

Si fj > fk , los niveles de esas hojas verifican hj ≤ hk .Los d niveles superiores de T , h1, . . . ,hd son iguales:h1 = · · · = hd .Y las d hojas correspondientes, las de menoresfrecuencias f1, . . . , fd , son hermanas, es decir, hijas de unmismo vértice interno.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 9 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Hojas hermanas en los árboles ponderados

LemaDado un conjunto ordenado de pesos, F = {f1 ≤ f2 ≤ · · · ≤ fr},existe un árbol d-ario T ponderado por hojas según F, de pesomínimo, tal que

Si fj > fk , los niveles de esas hojas verifican hj ≤ hk .Los d niveles superiores de T , h1, . . . ,hd son iguales:h1 = · · · = hd .Y las d hojas correspondientes, las de menoresfrecuencias f1, . . . , fd , son hermanas, es decir, hijas de unmismo vértice interno.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 9 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Hojas hermanas en los árboles ponderados

LemaDado un conjunto ordenado de pesos, F = {f1 ≤ f2 ≤ · · · ≤ fr},existe un árbol d-ario T ponderado por hojas según F, de pesomínimo, tal que

Si fj > fk , los niveles de esas hojas verifican hj ≤ hk .

Los d niveles superiores de T , h1, . . . ,hd son iguales:h1 = · · · = hd .Y las d hojas correspondientes, las de menoresfrecuencias f1, . . . , fd , son hermanas, es decir, hijas de unmismo vértice interno.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 9 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Hojas hermanas en los árboles ponderados

LemaDado un conjunto ordenado de pesos, F = {f1 ≤ f2 ≤ · · · ≤ fr},existe un árbol d-ario T ponderado por hojas según F, de pesomínimo, tal que

Si fj > fk , los niveles de esas hojas verifican hj ≤ hk .Los d niveles superiores de T , h1, . . . ,hd son iguales:h1 = · · · = hd .

Y las d hojas correspondientes, las de menoresfrecuencias f1, . . . , fd , son hermanas, es decir, hijas de unmismo vértice interno.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 9 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Hojas hermanas en los árboles ponderados

LemaDado un conjunto ordenado de pesos, F = {f1 ≤ f2 ≤ · · · ≤ fr},existe un árbol d-ario T ponderado por hojas según F, de pesomínimo, tal que

Si fj > fk , los niveles de esas hojas verifican hj ≤ hk .Los d niveles superiores de T , h1, . . . ,hd son iguales:h1 = · · · = hd .Y las d hojas correspondientes, las de menoresfrecuencias f1, . . . , fd , son hermanas, es decir, hijas de unmismo vértice interno.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 9 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Construcción de códigos optimales

Teorema (Huffman)Dada una fuente S con r caracteres y un código instantáneo C,d-ario, con las propiedades del lema para S, se construye otrocódigo C(r), reducido del C, para una fuente con r − d + 1caracteres, que coincide con S en los r − d caracteres másfrecuentes y tiene un carácter nuevo con frecuencia la suma delas d frecuencias menores de S. Entonces, si C(r) es optimalpara la nueva fuente, C también lo es para S.

Corolario (Código de Huffman)

Aplicando sucesivamente el teorema se obtiene un código deHuffman que es optimal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 10 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Construcción de códigos optimales

Teorema (Huffman)

Dada una fuente S con r caracteres y un código instantáneo C,d-ario, con las propiedades del lema para S, se construye otrocódigo C(r), reducido del C, para una fuente con r − d + 1caracteres, que coincide con S en los r − d caracteres másfrecuentes y tiene un carácter nuevo con frecuencia la suma delas d frecuencias menores de S. Entonces, si C(r) es optimalpara la nueva fuente, C también lo es para S.

Corolario (Código de Huffman)

Aplicando sucesivamente el teorema se obtiene un código deHuffman que es optimal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 10 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Construcción de códigos optimales

Teorema (Huffman)Dada una fuente S con r caracteres y un código instantáneo C,d-ario, con las propiedades del lema para S,

se construye otrocódigo C(r), reducido del C, para una fuente con r − d + 1caracteres, que coincide con S en los r − d caracteres másfrecuentes y tiene un carácter nuevo con frecuencia la suma delas d frecuencias menores de S. Entonces, si C(r) es optimalpara la nueva fuente, C también lo es para S.

Corolario (Código de Huffman)

Aplicando sucesivamente el teorema se obtiene un código deHuffman que es optimal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 10 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Construcción de códigos optimales

Teorema (Huffman)Dada una fuente S con r caracteres y un código instantáneo C,d-ario, con las propiedades del lema para S, se construye otrocódigo C(r), reducido del C, para una fuente con r − d + 1caracteres, que coincide con S en los r − d caracteres másfrecuentes y tiene un carácter nuevo con frecuencia la suma delas d frecuencias menores de S.

Entonces, si C(r) es optimalpara la nueva fuente, C también lo es para S.

Corolario (Código de Huffman)

Aplicando sucesivamente el teorema se obtiene un código deHuffman que es optimal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 10 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Construcción de códigos optimales

Teorema (Huffman)Dada una fuente S con r caracteres y un código instantáneo C,d-ario, con las propiedades del lema para S, se construye otrocódigo C(r), reducido del C, para una fuente con r − d + 1caracteres, que coincide con S en los r − d caracteres másfrecuentes y tiene un carácter nuevo con frecuencia la suma delas d frecuencias menores de S. Entonces, si C(r) es optimalpara la nueva fuente, C también lo es para S.

Corolario (Código de Huffman)

Aplicando sucesivamente el teorema se obtiene un código deHuffman que es optimal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 10 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Construcción de códigos optimales

Teorema (Huffman)Dada una fuente S con r caracteres y un código instantáneo C,d-ario, con las propiedades del lema para S, se construye otrocódigo C(r), reducido del C, para una fuente con r − d + 1caracteres, que coincide con S en los r − d caracteres másfrecuentes y tiene un carácter nuevo con frecuencia la suma delas d frecuencias menores de S. Entonces, si C(r) es optimalpara la nueva fuente, C también lo es para S.

Corolario (Código de Huffman)

Aplicando sucesivamente el teorema se obtiene un código deHuffman que es optimal.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 10 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoPrimer paso

Dado un fichero fuente sobre un alfabeto X = {a,b, c,d ,e},realizamos una lectura, primer paso, que asigne a cadacarácter fuente la frecuencia absoluta con que se presenta.

a;12 b;20 c;15 d;41 e;12c;15a;12 e;12 b;20 d;41

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 11 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoPrimer paso

Dado un fichero fuente sobre un alfabeto X = {a,b, c,d ,e},realizamos una lectura, primer paso, que asigne a cadacarácter fuente la frecuencia absoluta con que se presenta.

a;12 b;20 c;15 d;41 e;12c;15a;12 e;12 b;20 d;41

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 11 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoPrimer paso

Dado un fichero fuente sobre un alfabeto X = {a,b, c,d ,e},realizamos una lectura, primer paso, que asigne a cadacarácter fuente la frecuencia absoluta con que se presenta.

a;12 b;20 c;15 d;41 e;12

c;15a;12 e;12 b;20 d;41

Obtenemos así una lista inicial de los caracteres y susfrecuencias absolutas o pesos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 11 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoPrimer paso

Dado un fichero fuente sobre un alfabeto X = {a,b, c,d ,e},realizamos una lectura, primer paso, que asigne a cadacarácter fuente la frecuencia absoluta con que se presenta.

a;12 b;20 c;15 d;41 e;12

c;15a;12 e;12 b;20 d;41

Para llegar finalmente a esa lista inicial ordenada por pesos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 11 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

Consideremos el mismo ejemplo anterior: alfabeto–fuente X ={a,b, c,d ,e} y pesos F = {12,20,15,41,12}, y la lista ordena-da

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

Consideremos el mismo ejemplo anterior: alfabeto–fuente X ={a,b, c,d ,e} y pesos F = {12,20,15,41,12}, y la lista ordena-da

c;15a;12 e;12 b;20 d;41

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

c;15 b;20 d;4124a;12 e;12

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

c;15 b;20 d;4124

a;12 e;12

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

d;4135c;15 b;20

a;12 e;12

24

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

d;4135

c;15 b;20a;12 e;12

24

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

d;41 59

a;12 e;12 c;15 b;20

24 35

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

d;41

a;12 e;12 c;15 b;20

24 35

59

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

a;12 e;12 c;15 b;20

24 35

10059d;41

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: construcción del árbol de Huffman

a;12 e;12 c;15 b;20

24 35

d;41 59

100

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 12 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: codificación

Codificamos la secuencia ejemplo ’acd’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

e c b

raiz

0 1

1

1

0

0 1 0

a

d

e c b

raiz

0

1

11 0

a

0

100

0

1

d

e b

raiz

0 1

1

1

0

0 1 0

a c

d

e b

raiz

0

11

0

0

a

110

c

0

1

1

e c b

raiz

0 1

1

1

0

0 1 0

d

a e c b

raiz

1

11 0

10

a

d

0

0

0

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 13 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: codificación

Codificamos la secuencia ejemplo ’acd’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

e c b

raiz

0 1

1

1

0

0 1 0

a

d

e c b

raiz

0

1

11 0

a

0

100

0

1

d

e b

raiz

0 1

1

1

0

0 1 0

a c

d

e b

raiz

0

11

0

0

a

110

c

0

1

1

e c b

raiz

0 1

1

1

0

0 1 0

d

a e c b

raiz

1

11 0

10

a

d

0

0

0

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 13 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: codificación

Codificamos la secuencia ejemplo ’acd’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

e c b

raiz

0 1

1

1

0

0 1 0

a

d

e c b

raiz

0

1

11 0

a

0

100

0

1

d

e b

raiz

0 1

1

1

0

0 1 0

a c

d

e b

raiz

0

11

0

0

a

110

c

0

1

1

e c b

raiz

0 1

1

1

0

0 1 0

d

a e c b

raiz

1

11 0

10

a

d

0

0

0

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 13 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: codificación

Codificamos la secuencia ejemplo ’acd’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

e c b

raiz

0 1

1

1

0

0 1 0

a

d

e c b

raiz

0

1

11 0

a

0

100

0

1

d

e b

raiz

0 1

1

1

0

0 1 0

a c

d

e b

raiz

0

11

0

0

a

110

c

0

1

1

e c b

raiz

0 1

1

1

0

0 1 0

d

a e c b

raiz

1

11 0

10

a

d

0

0

0

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 13 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: codificación

Codificamos la secuencia ejemplo ’acd’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

e c b

raiz

0 1

1

1

0

0 1 0

a

d

e c b

raiz

0

1

11 0

a

0

100

0

1

d

e b

raiz

0 1

1

1

0

0 1 0

a c

d

e b

raiz

0

11

0

0

a

110

c

0

1

1

e c b

raiz

0 1

1

1

0

0 1 0

d

a e c b

raiz

1

11 0

10

a

d

0

0

0

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 13 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: codificación

Codificamos la secuencia ejemplo ’acd’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

e c b

raiz

0 1

1

1

0

0 1 0

a

d

e c b

raiz

0

1

11 0

a

0

100

0

1

d

e b

raiz

0 1

1

1

0

0 1 0

a c

d

e b

raiz

0

11

0

0

a

110

c

0

1

1

e c b

raiz

0 1

1

1

0

0 1 0

d

a e c b

raiz

1

11 0

10

a

d

0

0

0

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 13 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: codificación

Codificamos la secuencia ejemplo ’acd’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

e c b

raiz

0 1

1

1

0

0 1 0

a

d

e c b

raiz

0

1

11 0

a

0

100

0

1

d

e b

raiz

0 1

1

1

0

0 1 0

a c

d

e b

raiz

0

11

0

0

a

110

c

0

1

1

e c b

raiz

0 1

1

1

0

0 1 0

d

a

e c b

raiz

1

11 0

10

a

d

0

0

0

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 13 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Compresor Huffman básicoSegundo paso: codificación

Codificamos la secuencia ejemplo ’acd’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

e c b

raiz

0 1

1

1

0

0 1 0

a

d

e c b

raiz

0

1

11 0

a

0

100

0

1

d

e b

raiz

0 1

1

1

0

0 1 0

a c

d

e b

raiz

0

11

0

0

a

110

c

0

1

1

e c b

raiz

0 1

1

1

0

0 1 0

d

a

e c b

raiz

1

11 0

10

a

d

0

0

0

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 13 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Descompresor Huffman básico

Construído el árbol Huffman a partir de la estadística,decodificamos la secuencia ’1001100’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

ea c b

raiz

0

1

1

0

0 1 0

11

d

ea c b

raiz

0

1

10 1 0

10

0d

e c b

raiz

0

1

11 0

10

0

0

a

ad

e c b

raiz

0

1

11 0

11

0

0

a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 14 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Descompresor Huffman básico

Construído el árbol Huffman a partir de la estadística,decodificamos la secuencia ’1001100’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

ea c b

raiz

0

1

1

0

0 1 0

11

d

ea c b

raiz

0

1

10 1 0

10

0d

e c b

raiz

0

1

11 0

10

0

0

a

ad

e c b

raiz

0

1

11 0

11

0

0

a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 14 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Descompresor Huffman básico

Construído el árbol Huffman a partir de la estadística,decodificamos la secuencia ’1001100’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

ea c b

raiz

0

1

1

0

0 1 0

11

d

ea c b

raiz

0

1

10 1 0

10

0d

e c b

raiz

0

1

11 0

10

0

0

a

ad

e c b

raiz

0

1

11 0

11

0

0

a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 14 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Descompresor Huffman básico

Construído el árbol Huffman a partir de la estadística,decodificamos la secuencia ’1001100’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

ea c b

raiz

0

1

1

0

0 1 0

11

d

ea c b

raiz

0

1

10 1 0

10

0

d

e c b

raiz

0

1

11 0

10

0

0

a

ad

e c b

raiz

0

1

11 0

11

0

0

a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 14 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Descompresor Huffman básico

Construído el árbol Huffman a partir de la estadística,decodificamos la secuencia ’1001100’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

ea c b

raiz

0

1

1

0

0 1 0

11

d

ea c b

raiz

0

1

10 1 0

10

0

d

e c b

raiz

0

1

11 0

10

0

0

a

a

d

e c b

raiz

0

1

11 0

11

0

0

a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 14 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Descompresor Huffman básico

Construído el árbol Huffman a partir de la estadística,decodificamos la secuencia ’1001100’.

d

ea c b

raiz

0 1

1

1

0

0 1 0

d

ea c b

raiz

0

1

1

0

0 1 0

11

d

ea c b

raiz

0

1

10 1 0

10

0d

e c b

raiz

0

1

11 0

10

0

0

a

a

d

e c b

raiz

0

1

11 0

11

0

0

a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 14 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Introducción a los códigos adaptativos Huffman (CAH)

Se construyen árboles de Huffman dinámicos: El carácter(k + 1)-ésimo se codifica a partir del árbol construído conlos k caracteres anteriores.Se mantiene una lista de todos los vértices del árbol,ordenada por sus pesos .La modificación de cada árbol mantiene la “siblingproperty” o de los vértices hermanos: dos vérticeshermanos son consecutivos en la lista y el padre de amboses posterior, no obligatoriamente inmediato, a ambos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 15 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Introducción a los códigos adaptativos Huffman (CAH)

Un código universal es el que no depende de la estadística dela fuente y por ello es de aplicación “universal”.

Se construyen árboles de Huffman dinámicos: El carácter(k + 1)-ésimo se codifica a partir del árbol construído conlos k caracteres anteriores.Se mantiene una lista de todos los vértices del árbol,ordenada por sus pesos .La modificación de cada árbol mantiene la “siblingproperty” o de los vértices hermanos: dos vérticeshermanos son consecutivos en la lista y el padre de amboses posterior, no obligatoriamente inmediato, a ambos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 15 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Introducción a los códigos adaptativos Huffman (CAH)

Un código universal es el que no depende de la estadística dela fuente y por ello es de aplicación “universal”.Los códigos adaptativos Huffman, CAH, son universales, encambio el Huffman básico no.

Se construyen árboles de Huffman dinámicos: El carácter(k + 1)-ésimo se codifica a partir del árbol construído conlos k caracteres anteriores.Se mantiene una lista de todos los vértices del árbol,ordenada por sus pesos .La modificación de cada árbol mantiene la “siblingproperty” o de los vértices hermanos: dos vérticeshermanos son consecutivos en la lista y el padre de amboses posterior, no obligatoriamente inmediato, a ambos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 15 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Introducción a los códigos adaptativos Huffman (CAH)

Características básicas de los CAH

Se construyen árboles de Huffman dinámicos: El carácter(k + 1)-ésimo se codifica a partir del árbol construído conlos k caracteres anteriores.Se mantiene una lista de todos los vértices del árbol,ordenada por sus pesos .La modificación de cada árbol mantiene la “siblingproperty” o de los vértices hermanos: dos vérticeshermanos son consecutivos en la lista y el padre de amboses posterior, no obligatoriamente inmediato, a ambos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 15 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Introducción a los códigos adaptativos Huffman (CAH)

Características básicas de los CAH

Se construyen árboles de Huffman dinámicos: El carácter(k + 1)-ésimo se codifica a partir del árbol construído conlos k caracteres anteriores.

Se mantiene una lista de todos los vértices del árbol,ordenada por sus pesos .La modificación de cada árbol mantiene la “siblingproperty” o de los vértices hermanos: dos vérticeshermanos son consecutivos en la lista y el padre de amboses posterior, no obligatoriamente inmediato, a ambos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 15 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Introducción a los códigos adaptativos Huffman (CAH)

Características básicas de los CAH

Se construyen árboles de Huffman dinámicos: El carácter(k + 1)-ésimo se codifica a partir del árbol construído conlos k caracteres anteriores.Se mantiene una lista de todos los vértices del árbol,ordenada por sus pesos .

La modificación de cada árbol mantiene la “siblingproperty” o de los vértices hermanos: dos vérticeshermanos son consecutivos en la lista y el padre de amboses posterior, no obligatoriamente inmediato, a ambos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 15 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Introducción a los códigos adaptativos Huffman (CAH)

Características básicas de los CAH

Se construyen árboles de Huffman dinámicos: El carácter(k + 1)-ésimo se codifica a partir del árbol construído conlos k caracteres anteriores.Se mantiene una lista de todos los vértices del árbol,ordenada por sus pesos .La modificación de cada árbol mantiene la “siblingproperty” o de los vértices hermanos: dos vérticeshermanos son consecutivos en la lista y el padre de amboses posterior, no obligatoriamente inmediato, a ambos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 15 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativo

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativoLista actual de vértices y pesos

Vért. 1 2 3 4 5 6 7 8 9 10 11Pesos 2 3 5 5 5 6 10 11 11 21 32

11

5 5 6

2 31 2

11

3 4 5 6

7 8

9 10

10 11

21

32

5

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativoPath desde el vértice actual al raíz

Vért. 1 2 3 4 5 6 7 8 9 10 11Pesos 2 3 5 5 5 6 10 11 11 21 32

11

5 5 6

21

3 5 6

8

9

7

10

3

4

2

11

5

10 11

21

32

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativoVértice actual y sigs. con igual peso

Vért. 1 2 3 4 5 6 7 8 9 10 11Pesos 2 3 5 5 5 6 10 11 11 21 32

11

5 5 6

21

3 5 6

8

9

7

10

3

4

2

11

5

10 11

21

32

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativoVértice actual (sig. en el path), y sigs. con igual peso

Vért. 1 2 3 4 5 6 7 8 9 10 11Pesos 2 3 5 5 5 6 10 11 11 21 32

11

5 6

21

3 5 6

8

9

7

10

4

2

11

3

5

10 11

21

32

5

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativoIntercambio de subárboles y actualización del path

Vért. 1 2 3 4 5 6 7 8 9 10 11Pesos 2 3 5 5 5 6 10 11 11 21 32

5

11

5 63 6

9 10

11

11

21

32

107

4

8

21 2 3

55

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativoVértice actual (sig. en el path), y sigs. con igual peso

Vért. 1 2 3 4 5 6 7 8 9 10 11Pesos 2 3 5 5 5 6 10 11 11 21 32

5 63 6

9 10

11

21

32

107

4

8

21 2 3

5 5 5

11

11

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativoIntercambio de subárboles y actualización del path

Vért. 1 2 3 4 5 6 7 8 9 10 11Pesos 2 3 5 5 5 6 10 11 11 21 32

11

21

32

11

4

10

3 55

6

21 2 3

5

11 109

865 7

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativoVértice actual (sig. en el path), y sigs. con igual peso

Vért. 1 2 3 4 5 6 7 8 9 10 11Pesos 2 3 5 5 5 6 10 11 11 21 32

21

4

10

3 55

6

21 2 3

5

109

865 7 11

11

3211 Raiz:FIN

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Actualización del árbol adaptativoActualización de los pesos del path

Vért. 1 2 3 4 5 6 7 8 9 10 11Pesos 2 4 5 5 6 6 10 11 12 21 33

21

4

10

3 55

6

21 2

109

865 7 11

11

12

33

6

4

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 16 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Tratamiento de los caracteres de peso cero

21

55

6 11

2

10

4

6

12

33

2

0

xw y z

21

55

6 11

2

10

4

6

12

33

2

0

xw y z C(y)=000010

21

55

6 1110

4

6

12

33

2

2

0

w x z

0

0

21

55

6 1110

4

2

0

w x z

1

1

3

7

13

34

C(y)=00001

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 17 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Tratamiento de los caracteres de peso cero

21

55

6 11

2

10

4

6

12

33

2

0

xw y z

21

55

6 11

2

10

4

6

12

33

2

0

xw y z C(y)=000010

21

55

6 1110

4

6

12

33

2

2

0

w x z

0

0

21

55

6 1110

4

2

0

w x z

1

1

3

7

13

34

C(y)=00001

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 17 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Tratamiento de los caracteres de peso cero

21

55

6 11

2

10

4

6

12

33

2

0

xw y z

21

55

6 11

2

10

4

6

12

33

2

0

xw y z C(y)=000010

21

55

6 1110

4

6

12

33

2

2

0

w x z

0

0

21

55

6 1110

4

2

0

w x z

1

1

3

7

13

34

C(y)=00001

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 17 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Tratamiento de los caracteres de peso cero

21

55

6 11

2

10

4

6

12

33

2

0

xw y z

21

55

6 11

2

10

4

6

12

33

2

0

xw y z C(y)=000010

21

55

6 1110

4

6

12

33

2

2

0

w x z

0

0

21

55

6 1110

4

2

0

w x z

1

1

3

7

13

34

C(y)=00001

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 17 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Los códigos Huffman son optimalesHuffman básicoHuffman adaptativo

Tratamiento de los caracteres de peso cero

21

55

6 11

2

10

4

6

12

33

2

0

xw y z

21

55

6 11

2

10

4

6

12

33

2

0

xw y z C(y)=000010

21

55

6 1110

4

6

12

33

2

2

0

w x z

0

0

21

55

6 1110

4

2

0

w x z

1

1

3

7

13

34

C(y)=00001

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 17 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Índice

1 Algoritmos Huffman

2 Algoritmos Lempel–ZivAlgoritmo LZ77Algoritmo LZ78

3 Compresión aritmética

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 18 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivGeneralidades

Dada una cadena x ∈ X ∗ se “reproduce” a partir de susprefijos.

Se usa un puntero p y la longitud, l , que indican desdedónde y cuánto se reproduce.Una reproducción se construye con el menor p quepermita la mayor l .Se añade un caracter nuevo para formar una producción.

DefiniciónLlamaremos complejidad Ziv–Lempel de una cadena x alnúmero c(x) de producciones que “reproducen” x .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 19 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivGeneralidades

Dada una cadena x ∈ X ∗ se “reproduce” a partir de susprefijos.

Se usa un puntero p y la longitud, l , que indican desdedónde y cuánto se reproduce.Una reproducción se construye con el menor p quepermita la mayor l .Se añade un caracter nuevo para formar una producción.

DefiniciónLlamaremos complejidad Ziv–Lempel de una cadena x alnúmero c(x) de producciones que “reproducen” x .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 19 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivGeneralidades

Dada una cadena x ∈ X ∗ se “reproduce” a partir de susprefijos.

Se usa un puntero p y la longitud, l , que indican desdedónde y cuánto se reproduce.

Una reproducción se construye con el menor p quepermita la mayor l .Se añade un caracter nuevo para formar una producción.

DefiniciónLlamaremos complejidad Ziv–Lempel de una cadena x alnúmero c(x) de producciones que “reproducen” x .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 19 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivGeneralidades

Dada una cadena x ∈ X ∗ se “reproduce” a partir de susprefijos.

Se usa un puntero p y la longitud, l , que indican desdedónde y cuánto se reproduce.Una reproducción se construye con el menor p quepermita la mayor l .

Se añade un caracter nuevo para formar una producción.

DefiniciónLlamaremos complejidad Ziv–Lempel de una cadena x alnúmero c(x) de producciones que “reproducen” x .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 19 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivGeneralidades

Dada una cadena x ∈ X ∗ se “reproduce” a partir de susprefijos.

Se usa un puntero p y la longitud, l , que indican desdedónde y cuánto se reproduce.Una reproducción se construye con el menor p quepermita la mayor l .Se añade un caracter nuevo para formar una producción.

DefiniciónLlamaremos complejidad Ziv–Lempel de una cadena x alnúmero c(x) de producciones que “reproducen” x .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 19 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivGeneralidades

Dada una cadena x ∈ X ∗ se “reproduce” a partir de susprefijos.

Se usa un puntero p y la longitud, l , que indican desdedónde y cuánto se reproduce.Una reproducción se construye con el menor p quepermita la mayor l .Se añade un caracter nuevo para formar una producción.

DefiniciónLlamaremos complejidad Ziv–Lempel de una cadena x alnúmero c(x) de producciones que “reproducen” x .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 19 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivGeneralidades

Dada una cadena x ∈ X ∗ se “reproduce” a partir de susprefijos.

Se usa un puntero p y la longitud, l , que indican desdedónde y cuánto se reproduce.Una reproducción se construye con el menor p quepermita la mayor l .Se añade un caracter nuevo para formar una producción.

DefiniciónLlamaremos complejidad Ziv–Lempel de una cadena x alnúmero c(x) de producciones que “reproducen” x .

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 19 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

secuencia actual⇒producción p l

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

secuencia actual⇒producción p lλ⇒0 – –

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

secuencia actual⇒producción p lλ⇒0 – –0⇒001 1 2

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

secuencia actual⇒producción p lλ⇒0 – –0⇒001 1 2

0 · 001⇒10 4 1

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

secuencia actual⇒producción p lλ⇒0 – –0⇒001 1 2

0 · 001⇒10 4 10 · 001 · 10⇒100 5 2

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

secuencia actual⇒producción p lλ⇒0 – –0⇒001 1 2

0 · 001⇒10 4 10 · 001 · 10⇒100 5 2

0 · 001 · 10 · 100⇒1000 7 3

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

secuencia actual⇒producción p lλ⇒0 – –0⇒001 1 2

0 · 001⇒10 4 10 · 001 · 10⇒100 5 2

0 · 001 · 10 · 100⇒1000 7 30 · 001 · 10 · 100 · 1000→ 101 5 3

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación Lempel–ZivReproducción de una secuencia

Sea la secuencia x = 0001101001000101 ∈ {0,1}∗.

secuencia actual⇒producción p lλ⇒0 – –0⇒001 1 2

0 · 001⇒10 4 10 · 001 · 10⇒100 5 2

0 · 001 · 10 · 100⇒1000 7 30 · 001 · 10 · 100 · 1000→ 101 5 3

Por lo tanto la complejidad es c(x) = 6.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 20 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Algoritmo

Se dispone de una memoria buffer con n caracteres: Lpara el presente y n − L para el pasado.Inicialmente el pasado se llena con un carácter arbitrario yse “alimenta” el presente con los primeros L caracteres dela secuencia a codificar.En cada paso del algoritmo

1 se busca el menor p en el pasado que reproduzca lacadena del presente de l mayor;

2 se forma la producción π con los primeros l + 1 caracteresdel presente;

3 se codifica π como C = C1‖C2‖C3, con C1 = (p − 1)r ,C2 = (l)r , C3 es el carácter (l + 1)-ésimo del presente yrr = |X |;

4 se desplazan l + 1 caracteres hacia el pasado en todo elbuffer y se realimenta el presente con l + 1 nuevos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 21 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Algoritmo

Se dispone de una memoria buffer con n caracteres: Lpara el presente y n − L para el pasado.

Inicialmente el pasado se llena con un carácter arbitrario yse “alimenta” el presente con los primeros L caracteres dela secuencia a codificar.En cada paso del algoritmo

1 se busca el menor p en el pasado que reproduzca lacadena del presente de l mayor;

2 se forma la producción π con los primeros l + 1 caracteresdel presente;

3 se codifica π como C = C1‖C2‖C3, con C1 = (p − 1)r ,C2 = (l)r , C3 es el carácter (l + 1)-ésimo del presente yrr = |X |;

4 se desplazan l + 1 caracteres hacia el pasado en todo elbuffer y se realimenta el presente con l + 1 nuevos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 21 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Algoritmo

Se dispone de una memoria buffer con n caracteres: Lpara el presente y n − L para el pasado.Inicialmente el pasado se llena con un carácter arbitrario yse “alimenta” el presente con los primeros L caracteres dela secuencia a codificar.

En cada paso del algoritmo

1 se busca el menor p en el pasado que reproduzca lacadena del presente de l mayor;

2 se forma la producción π con los primeros l + 1 caracteresdel presente;

3 se codifica π como C = C1‖C2‖C3, con C1 = (p − 1)r ,C2 = (l)r , C3 es el carácter (l + 1)-ésimo del presente yrr = |X |;

4 se desplazan l + 1 caracteres hacia el pasado en todo elbuffer y se realimenta el presente con l + 1 nuevos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 21 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Algoritmo

Se dispone de una memoria buffer con n caracteres: Lpara el presente y n − L para el pasado.Inicialmente el pasado se llena con un carácter arbitrario yse “alimenta” el presente con los primeros L caracteres dela secuencia a codificar.En cada paso del algoritmo

1 se busca el menor p en el pasado que reproduzca lacadena del presente de l mayor;

2 se forma la producción π con los primeros l + 1 caracteresdel presente;

3 se codifica π como C = C1‖C2‖C3, con C1 = (p − 1)r ,C2 = (l)r , C3 es el carácter (l + 1)-ésimo del presente yrr = |X |;

4 se desplazan l + 1 caracteres hacia el pasado en todo elbuffer y se realimenta el presente con l + 1 nuevos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 21 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Algoritmo

Se dispone de una memoria buffer con n caracteres: Lpara el presente y n − L para el pasado.Inicialmente el pasado se llena con un carácter arbitrario yse “alimenta” el presente con los primeros L caracteres dela secuencia a codificar.En cada paso del algoritmo

1 se busca el menor p en el pasado que reproduzca lacadena del presente de l mayor;

2 se forma la producción π con los primeros l + 1 caracteresdel presente;

3 se codifica π como C = C1‖C2‖C3, con C1 = (p − 1)r ,C2 = (l)r , C3 es el carácter (l + 1)-ésimo del presente yrr = |X |;

4 se desplazan l + 1 caracteres hacia el pasado en todo elbuffer y se realimenta el presente con l + 1 nuevos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 21 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Algoritmo

Se dispone de una memoria buffer con n caracteres: Lpara el presente y n − L para el pasado.Inicialmente el pasado se llena con un carácter arbitrario yse “alimenta” el presente con los primeros L caracteres dela secuencia a codificar.En cada paso del algoritmo

1 se busca el menor p en el pasado que reproduzca lacadena del presente de l mayor;

2 se forma la producción π con los primeros l + 1 caracteresdel presente;

3 se codifica π como C = C1‖C2‖C3, con C1 = (p − 1)r ,C2 = (l)r , C3 es el carácter (l + 1)-ésimo del presente yrr = |X |;

4 se desplazan l + 1 caracteres hacia el pasado en todo elbuffer y se realimenta el presente con l + 1 nuevos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 21 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Algoritmo

Se dispone de una memoria buffer con n caracteres: Lpara el presente y n − L para el pasado.Inicialmente el pasado se llena con un carácter arbitrario yse “alimenta” el presente con los primeros L caracteres dela secuencia a codificar.En cada paso del algoritmo

1 se busca el menor p en el pasado que reproduzca lacadena del presente de l mayor;

2 se forma la producción π con los primeros l + 1 caracteresdel presente;

3 se codifica π como C = C1‖C2‖C3, con C1 = (p − 1)r ,C2 = (l)r , C3 es el carácter (l + 1)-ésimo del presente yrr = |X |;

4 se desplazan l + 1 caracteres hacia el pasado en todo elbuffer y se realimenta el presente con l + 1 nuevos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 21 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Algoritmo

Se dispone de una memoria buffer con n caracteres: Lpara el presente y n − L para el pasado.Inicialmente el pasado se llena con un carácter arbitrario yse “alimenta” el presente con los primeros L caracteres dela secuencia a codificar.En cada paso del algoritmo

1 se busca el menor p en el pasado que reproduzca lacadena del presente de l mayor;

2 se forma la producción π con los primeros l + 1 caracteresdel presente;

3 se codifica π como C = C1‖C2‖C3, con C1 = (p − 1)r ,C2 = (l)r , C3 es el carácter (l + 1)-ésimo del presente yrr = |X |;

4 se desplazan l + 1 caracteres hacia el pasado en todo elbuffer y se realimenta el presente con l + 1 nuevos.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 21 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Ejemplo

Sea X = {a, b, c}, r = 3, un buffer de n = 18 caracteres,L = 9 y x = aababacbacbacbcacbacbcaa.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 22 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Ejemplo

Sea X = {a, b, c}, r = 3, un buffer de n = 18 caracteres,L = 9 y x = aababacbacbacbcacbacbcaa.

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 22 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Ejemplo

Sea X = {a, b, c}, r = 3, un buffer de n = 18 caracteres,L = 9 y x = aababacbacbacbcacbacbcaa.

pasado presente

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 22 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Ejemplo

Sea X = {a, b, c}, r = 3, un buffer de n = 18 caracteres,L = 9 y x = aababacbacbacbcacbacbcaa.

pasado presente0 1 2 3 4 5 6 7 8

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 22 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Ejemplo

Sea X = {a, b, c}, r = 3, un buffer de n = 18 caracteres,L = 9 y x = aababacbacbacbcacbacbcaa.

pasado presente0 1 2 3 4 5 6 7 8

a a a a a a a a a a a b a b a c b a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 22 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Ejemplo

Sea X = {a, b, c}, r = 3, un buffer de n = 18 caracteres,L = 9 y x = aababacbacbacbcacbacbcaa.

pasado presente0 1 2 3 4 5 6 7 8

a a a a a a a a a a a b a b a c b aa a a a a a a a b a b a c b a c b a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 22 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Ejemplo

Sea X = {a, b, c}, r = 3, un buffer de n = 18 caracteres,L = 9 y x = aababacbacbacbcacbacbcaa.

pasado presente0 1 2 3 4 5 6 7 8

a a a a a a a a a a a b a b a c b aa a a a a a a a b a b a c b a c b aa a a a b a b a c b a c b a c b c a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 22 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ77Ejemplo

Sea X = {a, b, c}, r = 3, un buffer de n = 18 caracteres,L = 9 y x = aababacbacbacbcacbacbcaa.

pasado presente0 1 2 3 4 5 6 7 8

a a a a a a a a a a a b a b a c b aa a a a a a a a b a b a c b a c b aa a a a b a b a c b a c b a c b c ac b a c b a c b c a c b a c b c a a

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 22 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ78Ejemplo en la web de Data Compression

En vez de usar un buffer como en el caso LZ77, ahora, en elmodelo LZ78, las producciones se almacenan dinámicamenteen un diccionario y se codifican como punteros a esediccionario.

Ved un ejemplo de este modelo en la web de DataCompression,

http://www.data-compression.com/lempelziv.shtml

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 23 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ78Ejemplo en la web de Data Compression

En vez de usar un buffer como en el caso LZ77, ahora, en elmodelo LZ78, las producciones se almacenan dinámicamenteen un diccionario y se codifican como punteros a esediccionario.

Ved un ejemplo de este modelo en la web de DataCompression,

http://www.data-compression.com/lempelziv.shtml

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 23 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Algoritmo LZ77Algoritmo LZ78

Codificación LZ78Ejemplo en la web de Data Compression

En vez de usar un buffer como en el caso LZ77, ahora, en elmodelo LZ78, las producciones se almacenan dinámicamenteen un diccionario y se codifican como punteros a esediccionario.

Ved un ejemplo de este modelo en la web de DataCompression,

http://www.data-compression.com/lempelziv.shtml

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 23 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Índice

1 Algoritmos Huffman

2 Algoritmos Lempel–Ziv

3 Compresión aritmética

Ramiro Moreno (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 24 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Compresión aritmética, CA

Para una idea del algoritmo básico ver las transparencias 1–38del fichero arit-PPM.pdf, Implementació d’un compresoraritmètic utilitzant el model estadístic PPM, trabajo de CTI en2001 de Damià Castellà y Daniel Llobera.

Para más información sobre la CA ver el ficheroArithCodWNC.pdf, Arithmetic coding for data compression,1987, de los creadores de este modelo de compresión,I. H. Witten, R. M. Neal y J. G. Cleary.

Y para entender los modelos adaptativos en la CA, como elPPM, 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 (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 25 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Compresión aritmética, CA

Para una idea del algoritmo básico ver las transparencias 1–38del fichero arit-PPM.pdf, Implementació d’un compresoraritmètic utilitzant el model estadístic PPM, trabajo de CTI en2001 de Damià Castellà y Daniel Llobera.

Para más información sobre la CA ver el ficheroArithCodWNC.pdf, Arithmetic coding for data compression,1987, de los creadores de este modelo de compresión,I. H. Witten, R. M. Neal y J. G. Cleary.

Y para entender los modelos adaptativos en la CA, como elPPM, 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 (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 25 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Compresión aritmética, CA

Para una idea del algoritmo básico ver las transparencias 1–38del fichero arit-PPM.pdf, Implementació d’un compresoraritmètic utilitzant el model estadístic PPM, trabajo de CTI en2001 de Damià Castellà y Daniel Llobera.

Para más información sobre la CA ver el ficheroArithCodWNC.pdf, Arithmetic coding for data compression,1987, de los creadores de este modelo de compresión,I. H. Witten, R. M. Neal y J. G. Cleary.

Y para entender los modelos adaptativos en la CA, como elPPM, 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 (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 25 / 25

Algoritmos HuffmanAlgoritmos Lempel–ZivCompresión aritmética

Compresión aritmética, CA

Para una idea del algoritmo básico ver las transparencias 1–38del fichero arit-PPM.pdf, Implementació d’un compresoraritmètic utilitzant el model estadístic PPM, trabajo de CTI en2001 de Damià Castellà y Daniel Llobera.

Para más información sobre la CA ver el ficheroArithCodWNC.pdf, Arithmetic coding for data compression,1987, de los creadores de este modelo de compresión,I. H. Witten, R. M. Neal y J. G. Cleary.

Y para entender los modelos adaptativos en la CA, como elPPM, 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 (Matemàtica, UdL) Algoritmos básicos compresión sin pérdidas Febrero de 2010 25 / 25