Está en la página 1de 3

CODIGO DEFLATE

DEFINICIN

Es un algoritmo de compresin de datos sin prdidas que usa una combinacin


del algoritmo LZ77 y la codificacin Huffman, fue originalmente definido por
Phil Katz para la versin 2 de su herramienta de archivado PKZIP, y fue ms
tarde especificado como RFC 1951.

El algoritmo original, tal y como fue definido por Katz, fue protegido y asignado
a PKWARE, Inc.1 Sin embargo, y como se detalla en el RFC, deflate se puede
implementar de tal forma que no est cubierto por ninguna patente.

Un conjunto de datos comprimido consiste en una serie de bloques,


correspondientes a bloques sucesivos de datos de entrada. Los tamaos de
bloque son arbitrarios, excepto que los bloques no compresibles estn limitados
a 65.535 bytes.

Cada bloque se comprime usando una combinacin del algoritmo LZ77 y la


codificacin de Huffman, los rboles de Huffman para cada bloque son
independientes de los de bloques previos o posteriores.El algoritmo LZ77 puede
usar una referencia a una cadena duplicada que ocurre en un bloque anterior,
hasta 32K bytes de entrada antes.

PASOS

Asumimos que el orden del alfabeto es ABCD:

Es decir, 0 precede a 10 que precede a 11x, y 110 y 111 son lexicogrficamente


consecutivos.

Dada esta regla, podemos definir el cdigo de Huffman para un alfabeto


simplemente dando las longitudes de bits de los cdigos para cada smbolo del
alfabeto en orden; Esto es suficiente para determinar los cdigos reales. En
ESCUELA POLITCNICA NACIONAL
PROTOCOLOS PARA MULTIMEDIA
nuestro ejemplo, el cdigo est completamente definido por la secuencia de
longitudes de bits (2, 1, 3, 3). El siguiente algoritmo genera los cdigos como
nmeros enteros, destinados a ser ledos desde el bit ms significativo al menos
significativo. Las longitudes de cdigo estn inicialmente en rbol [I] .Len; Los
cdigos se producen en el rbol [I] .Cdigo. [1] [2]

1) Cuente el nmero de cdigos para cada longitud de cdigo. Sea b_cuenta


[N] el nmero de cdigos de longitud N, N> = 1.
2) Encuentre el valor numrico del cdigo ms pequeo para cada longitud
de cdigo:

3) Asignar valores numricos a todos los cdigos, utilizando valores


consecutivos para todos los cdigos de la misma longitud con los valores
de base determinados en el paso 2. Los cdigos que nunca se utilizan (que
tienen una longitud de bit de cero) no se deben asignar un valor.

EJEMPLO

Consideremos el alfabeto ABCDEFGH, con longitudes de bits (3, 3, 3, 3,3, 2, 4, 4).


Despus del paso 1, tenemos:

El paso 2 calcula los siguientes valores de siguiente cdigo:


ESCUELA POLITCNICA NACIONAL
PROTOCOLOS PARA MULTIMEDIA

El paso 3 produce los siguientes valores de cdigo:

Bibliografa

[1] D. Salomon, A Concise Introduction to Data Compression, de A Concise Introduction to


Data Compression, London, Springer, 2008, pp. 108-109.

[2] RFC BASE, [En lnea]. Available: http://www.rfc-base.org/rfc-1951.html. [ltimo acceso:


08 MAYO 2017].

También podría gustarte