COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto...

177
Escuela Politécnica Nacional FACULTAD DE INGENIERÍA ELÉCTRICA "COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO EL ALFABETO FUENTE" Tesis previa a la obtención del título de Ingeniero en Electrónica y Telecomunicaciones RUTH AMPARO LÓPEZ PÉREZ Quito, Agosto de 1994

Transcript of COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto...

Page 1: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Escuela Politécnica Nacional

FACULTAD DE INGENIERÍA ELÉCTRICA

"COMPRESIÓN DE ARCHIVOS DE TEXTOCODIFICANDO EL ALFABETO FUENTE"

Tesis previa a la obtención del título deIngeniero en Electrónica y Telecomunicaciones

RUTH AMPARO LÓPEZ PÉREZ

Quito, Agosto de 1994

Page 2: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Certifico que ta presente Tesis ha

sido elaborada en su totalidad por ta

Sra. Ruth Amparo Lópezlpérez.

fng. Cario&fgas

Page 3: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

AGRADECIMIENTO

Agradezco especialmente a DIOStodopoderoso, y a todas laspersonas que de una u otra manerame ayudaron desinteresadamentepara la culminación de esta tesis, yen especial al Ing. Carlos Egas porsu valiosa dirección.

Page 4: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

DEDICATORIA

En mi depositaron la confianza dealcanzar una meta más, y fueposible gracias a! sacrificio yabnegación de mis padres, Antonioe Hilda; a la valiosa compañía de miesposo Víctor Hugo; y a la dulce yalegre existencia de mi pequeña hijaPriscila Alejandra. Por eso lesdedico este trabajo resultado de miesfuerzo.

Ruth Amparo

Page 5: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

ÍNDICE

Introducción I

CAPITULO I

CONCEPTOS BÁSICOS

1.1 Puntes de información 1

1.1.1 Fuentes de información de memoria nula 2

1.1.2 Fuentes de información de Markov 4

1.2 Codificación de fuentes de información 5

1.2.1 Propiedades de los códigos 7

1.2.2 Primerteorema de Shannon 14

1.3 Conceptos generales de la compresión de datos 16

1.3.1 Redundancia 17

1.3.2 El radio de compresión 19

1.3.3 Clases de compresión de datos 21

1.4 Técnicas de compresión de datos 24

1.4.1 Codificación transformativa 24

1.4.2 Codificación predecible 24

1.4.3 Codificación de muestras no redundantes 25

1.4.4 Codificación de fuentes binarias 25

1.4.5 Codificación en cascada 26

1.4.6 Consideraciones para el diseño de las técnicas

de Compresión 26

1.4.7 Parámetros a considerar en la descompresión

Page 6: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

de datos 28

1.5 Aplicaciones de la compresión de datos 30

CAPITULO II

CÓDIGOS PARA COMPRIMIR ARCHIVOS DE TEXTO FUENTE

2.1 Propiedades de los códigos Huffman 33

2.1.1 Eficiencia y redundancia 34

2.1.2 Tasa de compresión 38

2.1.3 Propiedades de codificación 39

2.1.4 Propiedades de decodificación 53

2.2 Propiedades de los códigos BNO 56

2.1.1 Eficiencia y redundancia 57

2.2.2 Tasa de compresión 59

2.2.3 Propiedades de codificación 59

2.2.4 Propiedades de decodificación 62

CAPITULO III

COMPRESIÓN Y DESCOMPRESIÓN DE ARCHIVOS DE TEXTO

3.1 Procesos de compresión de archivos de texto 64

3.1.1 Compresión con el código Huffman 66

3.1.2 Compresión con e! código BNO 78

3.2 Procesos de descompresión de archivos de texto 91

3.2.1 Descompresión con el código Huffman 92

3.2.2 Descompresión con el código BNO 93

3.3 Implementación del programa 93

3.3.1 Diagramas de flujo 94

Page 7: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

3.3.2 Definiciones funcionales 111

3.3.3 Pruebas dei programa 112

3.4 Interpretación de los resultados 120

3.4-. 1 Tamaño comprimido, mayor que el tamaño original 120

3.4.2 Número total de caracteres leídos menor que el ta-

maño que el tamaño en bytes del archivo fuente 124

3.4.3 Gráficos de la codificación Huffman y BNO, en rela-

ción al valor teórico l(si) 144

3.4.4 Cantidad de información con respecto a la fuente 145

3.4.5 Longitud media del código, mayor que la longitud

mínima 146

3.4.6 Valores de compresión con respecto a la codificación 146

3.4.7 La eficiencia del código 149

3.4.8 El máximo radio de compresión 151

3.4.9 Los valores de la longitud media 152

3.4.10 Cantidad de reducción en los requerimientos de memorial 53

3.4.11 Tiempos de ejecución 153

CONCLUSIONES Y RECOMENDACIONES 159

Bibliografía 163

Anexo 1 Manual de Usuario

Anexo 2 Manual del Programador

Page 8: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

INTRODUCCIÓN

Desde, que el hombre empezó a manejar !a información sintió la necesidad

de transmitirla de la forma rnás rápida, segura y confiable, esta es ia razón

por la cual en el siglo XIX desarrolló el Código Morse, que resultó una

eficiente forma de transmisión.

Esta técnica de transmisión dio paso a desarrollar las primeras formas de

codificación, es decir, realmente es el primer código de longitud variable

utilizado en comunicaciones.

Con el avance de la tecnología se crearon diferentes técnicas de conversión

de señales analógicas a digitales que facilitó el manejo de cualquier tipo de

información. De tal manera que, en la década anterior se empezó a

manipular grandes cantidades de información digital y, los procesos de

codificación poco a poco fueron pasando de la teoría a la práctica.

Debido a que en la actualidad crece cada vez más el volumen de

información, es un requerimiento indispensable comprimirla para poder

transmitirla o almacenarla más rápidamente y aumentar la eficiencia del

sistema de comunicación.

Todo proceso de codificación cuyo objetivo es optimizar el sistema de

comunicación, se basa en la Teoría de la Información, siendo la

COMPRESIÓN, una área que últimamente ha adquirido mucha importancia.

Page 9: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Actualmente es imprescindible la compresión de datos ya que el volumen de

información en un computador personal o en cualquier otro dispositivo de

almacenamiento, es un parámetro importante a considerar en sistemas de

comunicaciones.

En la presente Tesis, se tratará solamente, la compresión de la información

contenida en archivos de texto, es decir aquella información almacenada con

caracteres ASCII, donde cada una de sus 256 palabras código, son

representadas por ocho bits.

Teniendo en claro este aspecto, el programa a desarrollarse, será

exclusivamente para los archivos de texto, asf como también los resultados

obtenidos, al final del proceso.

El método a utilizar para la compresión, es la reducción de la redundancia,

mediante la codificación de los símbolos del alfabeto fuente, en función de

las probabilidades de ocurrencia, utilizando el código Huffman y el código

BNO; los cuales, teóricamente proveen el máximo radio de compresión.

i

Estos códigos tienen como característica común, el poseer palabras código

de longitud variable, razón por la cual se analizará un método práctico, para

limitar exactamente la longitud de cada palabra código.

El lenguaje de programación utilizado en los procesos de codificación,

compresión decodíficación y descompresión, es el C++, por su característica

de lenguaje estructurado orientado a objetos.

Se desarrollan las ideas fundamentales de la Teoría de la Información,

introducción II

Page 10: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

especialmente sobre su medida e interpretación, considerando un tipo

particular pero importante de información; la información binaria.

Todos estos conceptos se aplica a la compresión de archivos de texto; por lo

tanto, durante todo el desarrollo de la presente tesis se establece un punto de

encuentro entre la Teoría de la Información y los parámetros elementales

para lograr una buena compresión.

Finalmente, como Schumann dijo:" No tengas miedo a las palabras 'teoría",

"bajo cifrado", "contrapunto", etc.; vendrán a tu encuentro si haces lo mismo

con ellas."1

ILOS GRANDES COMPOSITORES, Introducción a la música, pág. 1

Introducción

Page 11: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CAPITULO I

CONCEPTOS BÁSICOS

1.1 FUENTES DE INFORMACIÓN

La medida de la información depende de las probabilidades de los símbolos

que sirven para representarla, y, esta cantidad de información obedece a

ciertas propiedades y leyes fundamentales que se detallan a continuación.

CANTIDAD DE INFORMACIÓN

Sea E un suceso que puede presentarse con probabilidad P(E). Cuando E

tiene lugar, se dice que se ha recibido I(E) unidades de ¡nformación.-donde:

0-1)

I(E) = cantidad de información

P(E) = probabilidad de ocurrencia

Dependiendo de la base del logaritmo empleado en la definición se obtiene

una determinada unidad, así:

Con el logaritmo de base 2 la unidad se denomina bit.

Page 12: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

bits

Empleando logaritmos naturales, la unidad es el nat.

I (E) = In—!— Tjats (1-3)V P(E) '

En el caso de logaritmos de base 10, la unidad de información es el Hartiey.

~ 4)

En general empleando logaritmos de base r,

/(-£) = loa, unidades de orden r (1-5)r P(E)

Todos los conceptos que a continuación se mencionan, pueden ser

encontrados en cualquier libro de Teorfa de la Información por lo cual se

enunciarán los conceptos más fundamentales.

1.1.1 FUENTES DE INFORMACIÓN DE MEMORIA NULA

Una fuente de información discreta se caracteriza por emitir una secuencia

de sfmbolos pertenecientes a un alfabeto de q símbolos.

El conjunto de sfmbolos que genera la fuente se llama alfabeto fuente y, se lo

representa de ta siguiente manera:

Cap/Tuto / 2

Page 13: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

í-V

j,: símbolo de la foente

' = 1,2,3, .......... ,q

Los símbolos emitidos sucesivamente se eligen de acuerdo con una ley fija

de probabilidades, y cuando son estadísticamente independientes se trata de

una fuente de memoria nula, las probabilidades de ocurrencia de los

símbolos, se representan pon

P(s,} donde / = 1,2,3,.... ...... ,q (1-7)

Puede describirse completamente a la fuente de memoria nula mediante el

alfabeto fuente y las probabilidades con que los símbolos se generan.

ENTROPÍA

La información media suministrada por una fuente de información de

memoria nula es:

-A _ „ . T . . unidades de información ., rt>}P(st)I(s,) - (1-8)¡~f símbolo de S

P(»l) : probabilidad del símboto s¡

l(8|) : cantidad de información generada cuando se emite el sfmbolo s\a magnitud que es la cantidad media de información por símbolo de la

fuente, recibe el nombre de entropía de la fuente de memoria nula, y se

Capitulo I 3

Page 14: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

representa como H(S).

(1 - 9)/-i - w

La base del logaritmo determina las unidades a utilizarse.

PROPIEDADES DE LA ENTROPÍA

Existe una relación entre el número de símbolos del alfabeto fuente con la

cantidad de información que se ha generado.

Para una fuente de memoria nula con un alfabeto fuente como el descrito en

la ecuación (1-6) y con probabilidades según (1-7), se cumple que:

Hr(s)ílo&q (1-10)

El valor máximo de la entropía es igual a logaritmo de q, y ese valor se

alcanza si todos los símbolos, de la fuente son equiprobables.

1.1.2 FUENTE DE INFORMACIÓN DE MARKOV

Un tipo de fuente de información de q símbolos más general que la de

memoria nula, consiste en aquella en que la presencia de un determinado

símbolo S¡ depende de un número finito m de símbolos precedentes.

A esta fuente se la conoce como fuente de Markov de orden m y viene

definida por su alfabeto según la ecuación (1-6), y el conjunto de

Capitulo I ' 4

Page 15: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

probabilidades condicionales que determinan la ocurrencia de cada símbolo

viene dado por

í = U,3, .............. ,q

jr =12,3, ............ }m

En otro tipo de fuente se define el estado, como el número de símbolos de

que depende la emisión del siguiente.

1.2 CODIFICACIÓN DE FUENTES DE INFORMACIÓN

La tabla 1-1 muestra un ejemplo sencillo que codifica en función de los

símbolos binarios O y 1 , fuentes de Información discreta.

TABLA 1-1 Codificación Binarla de los Dígitos Decimales

DÍGITO REPRESENTACIÓNDECIMAL ' BINARIA

0 00001 00012 00103 00114 01005 01016 01107 01118 10009 1001

Capitulo I

Page 16: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

La correspondencia entre los dígitos decimales y binarios constituye un

ejemplo de código. Las 10 secuencias binarias se denominan palabras

código y los 10 dígitos decimales, símbolos de la fílente a codificar

(mensajes).

CÓDIGO

Si se tiene un conjunto de símbolos de un alfabeto dado según la ecuación

(1-6), se define un código como la correspondencia de todas las secuencias

posibles de símbolos de S, a secuencias de símbolos de algún otro alfabeto

X S recibe el nombre de alfabeto fuente y X alfabeto código.

,xr] alfabeto código (1-12)

LONGITUD MEDIA DE UN CÓDIGO

Es el número promedio de símbolos del alfabeto código utilizado para

codificar un símbolo del alfabeto fuente y, se lo calcula con la siguiente

expresión:

(1-13)(-1

pt: probabilidad de los

símbolos de la fuente

//; longitud de la palabra código

asociado al sfmbolo con pt

Cap/fufo

Page 17: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

1.2.1 PROPIEDADES DE LOS CÓDIGOS

CÓDIGO BLOQUE

Un código bloque es aquel que asigna cada uno de los símbolos del alfabeto

fuente S a una secuencia fija de símbolos del alfabeto Código X. Esas

secuencias fijas reciben el nombre de palabras código.

La tabla 1-2 muestra un ejemplo de código bloque binario

TABLA 1-2 Código Bloque Binario

SÍMBOLOS PALABRASDE LA FUENTE CÓDIGO

s-j Os2 1153 00

CÓDIGO BLOQUE NO SINGULAR

Un código bloque se denomina no singular si todas sus palabras código son

distintos.

En la tabla 1-3 se da un ejemplo.

Al analizar este ejemplo, se nota que si se recibe la secuencia 011 puede

Capitulo I 7

Page 18: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

corresponder a s-|S2 o a 5354.

TABLA 1-3 Código Bloque no Singular

SÍMBOLOS CÓDIGODE LA FUENTE

s-j O

54 01

Si bien se puede realizar una decodificación correcta de un código no

singular, cuando se transmite una por una las palabras código; existen

problemas para realizar una decodificación correcta cuando se transmiten

secuencias de palabras código en forma continua,

CÓDIGOS UNÍVOCAMENTE DECODIFICABLES.

EXTENSIÓN DE UN CÓDIGO

La n-ésima extensión de un código es simplemente todas las posibles

combinaciones de n símbolos códigos de la fuente original asociadas a las

correspondientes combinaciones de sus n palabras código.

Partiendo de la tabla 1-3 se enuncia un ejemplo de la segunda extensión del

código bloque, el cual se ilustra entabla 1-4

Un código bloque se dice unívocamente decodificable si, y solamente si, su

extensión de orden n es no singular para cualquier valor finito de n. En la

Capítulo I 8

Page 19: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

tabla 1-5 se muestra un ejemplo.

TABLA 1-4 Extensión del Código Bloque

SÍMBOLO FUENTE

S1S1

S1S2

«1S3S1S4S2$1S2s2

S2S3

S2S4

S3S1S3S2S3S3S3S4S4S1S4S2

S4S35454

CÓDIGO

000110100111011111111101101111110101001110110101

TABLA 1 -5 Código Unívocamente Decodificable

SÍMBOLO? CÓDIGODE LA FUENTE

s-j OS2 0183 011SA 0111

Con este código se puede transmitir secuencias de palabras código sin que

se produzca una decodificación errónea.

Capitulo I

Page 20: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CÓDIGOS INSTANTÁNEOS

Un código unívocamente decodificable se denomina instantáneo cuando es

posible decodificar las palabras de una secuencia sin precisar el

conocimiento de los símbolos que les suceden.

Es útil sin embargo disponer de una regla general que permita decir cuándo

un código es instantáneo. Se enuncia a continuación primero el concepto de

prefijo y luego la regla.

PREFIJO

Sea: una palabra código representada

Se denomina prefijo de esta palabra código a la secuencia de símbolos

(VA ..... V O-15)dona e j<,m ¡

REGLA DEL CÓDIGO INSTANTÁNEO

La condición necesaria y suficiente para que un código sea instantáneo es

que ninguna palabra del código sea prefijo de otra.

Ej.; La palabra código 01 1 1 tiene cuatro prefijos, 01 1 1 , 01 1 , 01 , y 0.

En la tabla 1-6 se muestra un ejemplo de código instantáneo.

Capitulo! 10

Page 21: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TABLA 1 -6 Código Instantáneo

SÍMBOLOSDE LA FUENTE

CÓDIGO

54

O10

110111

CLASIFICACIÓN DE LOS CÓDIGOS

En el siguiente esquema se resume ías diferentes clases de códigos

enunciados, notándose una marcada ramificación. Para obtener una

subclase de código en especia!, es necesario que cumpla con todas las

condiciones de las subclases precedentes.

FIGURA 1-1

SUBCLASES DE CÓDIGOS

No Bloque

CCCHGOSSingular

BloqueNo Unívoco

No Instantáneo

Urivoco

Instantáneo

CÓDIGOS COMPACTOS

Un código unívoco será compacto con respecto a la fuente a codificar si su

Capitulo I 11

Page 22: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

longitud media es igual o menor que la longitud media de todos los códigos

unívocos que pueden aplicarse a la misma fuente con el mismo alfabeto

código.

Se puede relacionar la longitud media de un código con la entropía de la

fuente de información de la siguiente manera:

(1-16)

Aplicando a ésta ecuación las propiedades de los logaritmos para una fuente

binaria, se tiene;

(1-17)

En donde:

H2(S) : Entropía [bits/símbolo]

Hf{S) : Entropía obtenida cuando la base del logaritmo utilizado es r

r : Número se símbolos del alfabeto código.

L : Longitud media.

De ésta expresión se desprende que L alcanzará su valor mínimo si y

solamente si, pueden elegirse las longitudes de las palabras l¡, iguales a logr

(1/P¡), es decir para que:

ffr(s) = L (1-18)

debe cumplirse que:

Capitulo I 12

Page 23: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

— (1-19)Pt

para iodo i-1,2,3, 3q

Una condición necesaria para la construcción de un código compacto ,es

que la longitud debe ser un número entero, y muchas veces en la condición

de igualdad el valor de l¡ no es entero.

INECUACIÓN DE KRAFT

La inecuación de Kraft da las condiciones para la existencia de un código

instantáneo, ésta ecuación le dice cuando la longitud de la palabra código

permite la formación de un código instantáneo,

TEOREMA

Una condición necesaria y suficiente para la existencia de un código

instantáneo S de q símbolos, sg (i=1,2,....,q) con palabra codificadas de

longitud:

es que:

r-*<n (1-21)/-i

Capitulo I 13

Page 24: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

donde:

r : Número de símbolos del alfabeto código.

La inecuación condiciona las longitudes de las palabras y no las palabras

mismas.

En el caso del alfabeto binario, la inecuación de Kraft se transforma en:

¿2'* al (1-22)/-i

La inecuación (1-22) dice que puede existir un código binario instantáneo con

q palabras código de longitud l¡, siempre y cuando se cumpla esa inecuación..

1.2.2 PRIMER TEOREMA DE SHANNON

Como se mencionó anterionnente, la condición en la cual la longitud de un

código compacto era numéricamente igual al valor de !a entropía de la

fuente, se alcanzaba cuando, las longitudes de las palabras código según la

ecuación (1-19) generalmente no eran números enteros, El primer teorema

de Shannon da el criterio para alcanzar la longitud mínima igual a la entropía

solucionando este problema.

Al no resuttar un número entero el resultado de la ecuación (1-19), parece

lógico formar un código compacto eligiendo un l¡ igual al número entero

inmediatamente superior a ese valor, entonces:

Capitulo I 14

Page 25: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

log, —áí-ílog,—+1 (1-23)Pi Pi

Multiplicando por p¡, y sumando para todos los valores de i, se tiene:

(1-24)í-l P¡ /-I i-\i /-I

con lo cual:

(1-25)

Esta úftirna ecuación (1-25), puede aplicarse a cualquier fuente de memoria

nula, por consiguiente para la extensión de orden n de la fuente original, se

tiene:

(1-26)

De la ecuación (1-26) se obtiene:

- (l-27<z)n n

(1-275)n

De modo que siempre será posible encontrar un valor de Lp/n tan próximo a

H^S) como se quiera, sin más que codificar la extensión de orden n de S, en

lugar de S.

Cap/fu/o / 15

Page 26: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

La expresión Lp/n, indica que los símbolos Sj de la fuente se han codificado

en grupos de n, en lugar de independientemente.

A la ecuación (1-27a) se la conoce como el Primer Teorema de Shannon o

Teorema de la codificación sin ruido.

1.3 CONCEPTOS GENERALES DE LA COMPRESIÓN DE DATOS.

Al establecer cualquier tipo de comunicación es de vital interés que esta sea

lo más económica y rápida posible, es ahí donde entra la idea de la

compresión de información. En la actualidad existen y se están desarrollando

una gran cantidad de técnicas de compresión para cumplir este objetivo

La compresión de datos es la reducción de la cantidad de espacios de una

señal que debió ser asignado para enviar un mensaje dado o simplemente

poner un dato.

Este espacio que ocupa la señal podría ser un volumen físico ( un medio de

almacenamiento de datos), un intervalo de tiempo (el tiempo requerido para

transmitir un mensaje), o una porción de espectro electromagnético (el ancho

de banda requerido para transmitir un cierto mensaje).

Cada una de estas formas de espacio que ocupa la señal; volumen, tiempo

y ancho de banda, pueden relacionarse entre si de la siguiente manera:

Volumen = f(tiempo, ancho de banda) (1-28)

Esta expresión indica que una reducción en el volumen puede ser trasladado

Cap/fufo / 16

Page 27: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

en una reducción del tiempo de transmisión o ancho de banda. Los

parámetros en los cuales se va a trabajar para realizar la compresión,

usualmente determina cuales de las técnicas de compresión de información

deberán implementarse en el sistema.

Al principio hubo gran interés en reducir el ancho de banda requerido para

transmitir señales analógicas. Tales como en telefonía. Más tarde en

sistemas como el facsímil llegó a ser de suma importancia incrementar la

velocidad de transmisión y finalmente ahora el volumen de ios datos es el

parámetro crítico que necesita de reducción o compresión en muchos

sistemas, especialmente en sistemas digitales, teniendo como ultimo fin el

disminuir el costo del diserto e implementación del sistema de

comunicaciones.

En la actualidad existen grandes volúmenes de información que necesitan ser

transmitidos y almacenados, lo cual influye en el costo de los sistemas. Es

entonces cuando la compresión de datos se vuelve imperiosa ya que en

muchos casos el realizar la compresión no involucra el cambio de todos los

elementos del sistemas.

Existen dos nombres con los cuales suele llamarse a la compresión de datos

y son: compactacíón de datos y, codificación de la fuente.

1.3.1 REDUNDANCIA

La redundancia se refiere al flujo excesivo de información o a los bits

adicionales que se añaden a los datos originales, entonces la información

como tal puede entenderse como, la combinación de información valida e

Capítulo I 17

Page 28: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

información redundante. Un ejemplo de esto son los bits de paridad que se

añade a la información como método de detección de errores.

Normalmente no se transmite la redundancia en un sistema de compresión

de datos, sin embargo es frecuentemente necesaria reinsertaría para la

descompresión, simplemente porque a falta de ella no se podría reconstruir

la información original.

Se debe definir la redundancia relativa para los dos modelos de fuentes:

modelos de Martcov y modelos estadísticamente independientes:

Para el caso de modelos de Markov cada muestra depende de cierto número

de muestras anteriores. Si se conociera esa dependencia, podría predecirse

la siguiente muestra con lo cual, se transmitiría !a información suficiente de

acuerdo a esa predicción, de tal manera que se pueda reconstruir la

secuencia de la muestra original en el receptor.

En modelos estadísticamente independientes no se podría predecir ni

eliminar las muestras dependientes. En lugar de ello se toma ventaja de la

típica distribución de probabilidad no uniforme.

La redundancia de una fuente de Información, se la define como sigue:

Redundancia = \o%rq-fír(S) (1-29)

donde:

q : Número de símbolos de la fuente a ser comprimida

Hr<S) : Entropía o cantidad de información media suministrada por la

Capítulo i 18

Page 29: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

fuente a comprimir.

logrq: Cantidad de información máxima que podría suministrar esa

fuente.

r : Base del logaritmo utilizado.

Una fuente de redundancia cero tiene a:

(1-30)

La redundancia relativa se define en los siguientes términos:

D j. ¿ • T> r^. RedundanciaR edundancia R elatíva =

Aplicando la ecuación (1-29) en (1-31), se tiene:

Redundancia Relativa = = i - . (1_32)

Se define a RR: redundancia relativa, entonces:

1.3.2 EL RADIO DE COMPRESIÓN.

Para cualquier fuente se busca el máximo radío de compresión de tal forma

que, la fuente resultante de la codificación sea una fuente igual al radio de la

Capítulo! 19

Page 30: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

entropía. La fórmula de! radio máximo de compresión teórico es:

ffr($)

Donde:

q : Número de símbolos de la fuente a ser comprimidos

H|<S) : Entropía o cantidad de información media suministrada por la

fuente a comprimir.

logrq : Cantidad de información máxima que puede suministrar esa

fuente.

Dándose una relación entre el radio máximo de compresión y la redundancia

relativa, que es:

(1-35)

De (1-35) resulta que el radio máximo de compresión es:

Entonces, si a una expresión se la forma de tal manera que su fuente tenga

una redundancia de 75%, una expresión equivalente sería aquella cuyo

máximo radio de compresión sea 4 a 1.

La tasa de compresión real, es la relación del número de símbolos/bit total de

Capítulo I 20

Page 31: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

la palabra código después de la descompresión para el número de

símbolos/bit antes de la descompresión. Su expresión matemática es:

símbolos .fuente comprimida

tasa compresión . = - , - (1 - 37)"at ro símbolos , , - - ,

A» - juente originalbits

Hay a menudo una diferencia significativa entre el límite teórico del radio de

compresión que uno podría calcular y el verdadero radio de compresión que

uno obtiene en los diferentes sistemas prácticos; las unidades de Información

teóricas no suelen ser números enteros, en cambio en la práctica se guarda

la información en números enteros (1 bit).

1.3.3 CLASES DE COMPRESIÓN DE DATOS

No se podría hablar de una clasificación estrictamente como tal ya que a

pesar de los numerosos esfuerzos por agrupar las técnicas de compresión de

datos no se han puesto de acuerdo la gran cantidad de autores que tratan

sobre el tema, sin embargo, podemos enunciar dos grupos principales de

compresión:

REVERSIBLE IRREVERSIBLE

Codificación sin perdida Codificación con perdida

de información o de información o

Reducción de la redundancia Reducción de la entropía

Basándose en esta terminología, se hará referencia a cada uno de ellos. Se

trata de la primera clasificación usada en 1962 por Blasbalg y Van Blerkom.

Capitulo I 21

Page 32: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

La operación de reducción de la entropía resurta en una reducción de la

información puesto que la entropía se define como la información media

suministrada por la fuente. La información perdida nunca será recuperada es

por eso que se trata de una operación irreversible.

Un ejemplo típico de una técnica con reducción de la entropía, es la DPCM

en donde la pérdida de información se da en el momento de muestreo la

serial análoga.

La información que se transmite o almacena, se le puede entender como la

combinación de información valida e información redundante. La operación

de reducción de la redundancia implica remover o al menos reducir la

redundancia en tal forma que pueda ser restituida la información

posteriormente. La reducción de la redundancia es siempre un proceso

reversible, de ahí que siempre será interesante y eficaz utilizar técnicas de

reducción de la redundancia.

Un simple ejemplo de reducción de la redundancia es la eliminación de datos

repetitivos. Si se envía un dato que no cambia por un largo período de

tiempo, entonces muchos datos simples consecutivos serán repetitivos. Una

técnica obvia para anular esto es contar el número de repeticiones entre

cambios en los valores simples y enviar solamente los cambios junto con las

cuentas de repetición que intervinieron. Con lo cual se aprecia claramente

que la estructura del dato original podrá siempre reconstruirse de esta

compresión de datos, no se perderá información.

En la figura 1-2 se muestra la clasificación de las técnicas de compresión de

datos partiendo de los dos aspectos analizados la reducción de la entropía y

Cap/futo; 22

Page 33: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

o Q> •o

FIG

UR

A 1

-2

CLA

SIF

ICA

CIÓ

N

DE

LA

S T

ÉC

NIC

AS

DE

CO

MP

RE

SIÓ

N D

E D

AT

OS

Com

pre

sió

n d

e D

ato

s

I

Codific

ació

nIra

ns

f ot T

nerti

vw

Reducció

n R

edundancia

Codific

ació

nde m

uestr

as

no r

edundan.

Codific

ació

nde

fuente

sbin

arios

OT

RO

S

Page 34: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

la reducción de la redundancia. Los códigos Huffman y BNO se encuentran

ubicados dentro de las técnicas de reducción de la redundancia.

1,4 TÉCNICAS DE COMPRESIÓN DE DATOS

A manera de introducción se enunciarán brevemente algunas técnicas de

compresión de datos, descritas en la figura 1-2. Estas técnicas darán una

idea de como forman parte dentro de los sistemas de compresión de datos; y

en que forma su desempeño puede ser cuantitativamente comparado, entre

el límite teórico de la función de la tasa de distorsión con la función de la

entropía en unos caso o con la función de la redundancia en otros.

1.4.1 CODIFICACIÓN TRANSFORMATIVA

Es una forma de cuantización por bloque, en la cual la correlación original cíe

muestras analógicas a un bloque, son luego correlacionadas por una

transformación lineal y después cuantizadas óptimamente. El tipo de

transformación lineal puede ser Fourier, Hadamard y Haar.

La transmisión de errores para este tipo de muestras transformadoras tendrá

un reducido efecto en la reconstrucción de las mismas.

1.4.2 CODIFICACIÓN PREDECIBLE

La codificación predecible es una forma de cuantización secuencia! en la

cual, la diferencia entre la muestra siguiente y el valor predecible se

cuantifica. Este enfoque se motivó por el hecho de que, para muchísimas

fuentes de datos, la diferencia en la variación por exceso fue menor que la

Capitulo I 24

Page 35: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

variación del dato original, entonces se hace posible utilizar un pequeño

rango cuantizador con lo que se obtiene una compresión. Hay dos métodos,

la modulación delta y la modulación de código por pulso diferencial.

1.4.3 CODIFICACIÓN DE MUESTRAS NO REDUNDANTES

Excluir los valores repetitivos, es un concepto popular de como desarrollar

una compresión de datos, lo cual es un caso especial en este tipo de

codificación. Esta es una técnica que decide entre muestras que son

redundantes y no redundantes de acuerdo a algún algoritmo preasignado y

entonces transmiten las muestras de información no redundantes con

apropiada secuencia.

1.4.4 CODIFICACIÓN DE FUENTES BINARIAS

Cuando se trata de fuentes de datos binarios se requieren técnicas

especiales de compresión de datos.

Una de las razones es que se puede modelar una fuente binaria en un

sistema más realista que una fuente analógica, con modelos relativamente

simples. Con estos modelos se puede cuidadosamente diseñar esquemas de

compresión óptimos para fas fuentes binarias.

Algunas veces, las técnicas mencionadas anteriormente se usan

conjuntamente, puesto que ciertas aplicaciones requieren diseños y

adaptaciones especiales de cada una de ellas.

Capitulo I 25

Page 36: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

1.4.5 CODIFICADORES EN CASCADA

Es considerable usar una disposición en cascada como técnica de

compresión de la información, un ejemplo de elío es el uso de codificadores

DPCM con un rango total de cuantización en el lazo de adelante, seguido de

un codificador Huffman. Una razón típica para tal disposición es evitar la

distorsión en imágenes.

En otros casos, dos o más algoritmos de compresión se ponen en cascada

para alcanzar el radio de compresión requerido, tales como en el caso de

reducción de la entropía seguida por la reducción de la redundancia que se

aplica en transmisión de imágenes.

La cantidad de arreglos en cascada que pueden ser hechos está limitada por:

la derivación de la entropía, máximo radio de compresión y complejidad del

sistema,

1.4.6 CONSIDERACIONES PARA EL DISEÑO DE LAS TÉCNICAS

DE COMPRESIÓN.

La incorporación de la compresión de datos en sistemas grandes, tiene que

ser planteado cuidadosamente con un número mínimo de restricciones,

considerando que la operación de compresión es para obtener el máximo

beneficio.

Si se comprime información binaria en ciertos puntos del sistema, es

necesario juntarla con los otros elementos del sistema, al no considerar este

simple hecho cuidadosamente, podría producirse efectos desastrosos, en el

Capítulo I 26

Page 37: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

sistema de comunicación.

En general, al intentar diseñar sistemas, se debe garantizar que a más de

cumplir los requerimientos necesarios, sea de un costo real. Los

requerimientos necesarios se refieren a fa compresión en sf y a la

descompresión.

Los requerimientos a considerar en la compresión son de 2 tipos:

operabilidad del sistema y costo del sistema.

La compresión de la información debe ser utilizada como último recurso

después de haber intentado optimizar el sistema de comunicaciones con

otros diseños; por ejemplo en una situación de limitación del ancho de banda.

Si la compresión de la información reduce considerablemente el costo del

sistema, es a menudo una justificación suficiente para utilizaría.

Teniendo que hallar una verdadera necesidad de compresión de la

información, se examina a continuación los requerimientos que debe estar

sujeta fa descompresión, estos son: radio de compresión, distorsión y

complejidad1.

El requerimiento sobre el radio de compresión, usualmente indica si es

necesario aplicar la reducción de la entropía o la reducción de la

redundancia.

La complejidad de los algoritmos de compresión no depende solamente del

IDATA COMPRESSION TECHNIQUES AND APPLICATIONS, pág. e?Capitulo l 27

Page 38: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

algoritmo en sí, sino que está sujeta a los requerimientos de: secuenciación

de la información, memoria intermedia (buffer) y control de errores^.

1.4.7 PARÁMETROS A CONSIDERAR EN LA DESCOMPRESIÓN DE

DATOS

RADIO DE COMPRESIÓN

El radio de compresión constituye quizás, el principal parámetro a

considerase, al decidir comprimir cualquier información.

Entonces, si se pretende alcanzar un gran radio de compresión, para lograr

tal objetivo se debería aplicar un poderoso algoritmo o en su defecto

concatenar algunos algoritmos, además, se podría alcanzar este propósito

con una apropiada consideración de la entropía de la información con lo cual,

no se introducirá ninguna distorsión o de lo contrario, se podría intentar con

otros métodos, pero a lo mejor esto implicaría perder parte de la información.

Recordando que:

: Número de símbolos a codificar

: Entropía

Se puede comparar este parámetro para distorsión cero con el radio de

compresión real si es o no el requerido.

2DATA COMPRESSION TECHNIQUES AND APPLICATIONS, pág. 67

Capitulo I 28

Page 39: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Si el valor que se requiere es menor que el máximo permitido se puede

utilizar exclusivamente la reducción de la redundancia.

SÍ se requiere que el radio de compresión se aproxime al máximo valor

entonces se hallaría una solución con cierta combinación de reducción de la

entropía y reducción de la redundancia.

Si lo básico es el costo del sistema, entonces el radio de compresión podría

ajustarse a un análisis de la descompresión. Sin embargo, si lo básico es la

operabilidad del sistema, entonces los requerimientos del radio de

compresión dominarían el diseño y no el factor económico,

DISTORSIÓN MEDIA

La distorsión media es la desviación aparente de la cantidad o la forma de los

mensajes del sistema, después de la descompresión. En otras palabras, es

el nivel de alteración media que la compresión provoca en los mensajes del

sistema después del proceso de la descompresión.

La distorsión media es típicamente la segunda consideración en los

requerimientos establecidos para la compresión de datos. Para muchos

usuarios este concepto no es muy claro porque la distorsión media no puede

ser cero en todos los casos.

Por supuesto quef si solamente se usa reducción de la redundancia, esto es

teóricamente posible, pero obviamente la reducción de la entropía introduce

distorsión e igualmente errores en el canal.

Cap/fu/o/ 29

Page 40: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

De acuerdo a la aplicación dependerán los niveles aceptables de distorsión,

sin que peligre obtener una óptima compresión.

En muchos casos de reducción de la redundancia, la distorsión debicte a

errores del canal es un factor dominante en el diseño de sistemas puesto

que, si el sistema conduce a la necesidad de codificación con control de

errores, esto afectaría el actual radio de compresión.

COMPLEJIDAD

Se podría pensar que este requerimiento de complejidad se lo quiera

minimizar, pero la complejidad total de la descompresión dependerá del

grado de complejidad tanto de la codificación como de la decodificación y

estos son los factores importantes en la selección de los algoritmos de

compresión de datos. Algunos algoritmos tienen codificadores simples y

decodificaciones muy complicados y viceversa.

La necesidad de secuenciación de la información, memoria intermedia y

control de errores en ciertos esquemas en que se utiliza la reducción de la

redundancia, añaden al sistema total mayor complejidad, tanto que algunos

sistemas podrían ser prohibitivamente complejos, por el hecho de incluir

procesos de compresión3.

1.3 APLICACIONES DE LA COMPRESIÓN DE DATOS.

En el siglo XiX el Código Morse resultó una eficiente forma de transmisión de

datos, y hoy se le considera como el primer compresor de datos, dada la

3DATA COMPRESSION TECHNIQUES AND APPLICATIONS, pág. 202

Capítulo I 30

Page 41: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

técnica de esos tiempos.

Es así como la modulación Delta inventada en 1946 y la técnica DPCM

(código por modulación de pulsos diferenciales) inventada en 1952, íueron

aplicadas en la compresión del ancho de banda para el habla y el video.

El código Huffman fue desarrollado en 1952, y desde esa fecha ha sido

usado como un código de longitud variable recomendable para muchas

aplicaciones, hasta la actualidad.

Asf mismo, las técnicas de transformación tales como Fourier, Hadamard y

otras tantas, fueron aplicadas en numerosas ocasiones, particularmente para

compresión de imágenes y habla en los años 60. Durante ese corto tiempo

las técnicas para muestras no redundantes tales como codificación de

longitud sucesiva se aplicó bastante incluyendo la transformación de datos en

telemetría.

Otras técnicas de compresión, son incesantemente diseñadas y adaptadas

para determinadas aplicaciones tales como: la voz, telemetría, televisión,

imágenes, base de datos, etc.

Es de gran interés una buena compresión de la señal de voz digitalizada ya

que se logra transmitir por medio de canales de estrecho ancho de banda.

En telemetría, es muy importante la compresión de datos sean estos control

de misiles, cohetes ó satélites ya que se caracterizan por tener períodos de

alta redundancia.

Capítulo I 31

Page 42: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Otro tipo de dato de telemetría que se comprime es, el registrado al

producirse un fenómeno sísmico y su objetivo es el facilitar el monrtoreo

remoto hacia la central de procesamiento. La más reciente aplicación de

compresión en telemetría ha sido en el campo de la medicina, donde la

información de electrocardiogramas ECG, es comprimida utilizada para

transmitirla mediante líneas telefónicas, lo cual permite diagnósticos de

especialistas situados a mucha distancia del paciente de forma rápida.

El requerimiento imperioso de reducir el ancho de banda especialmente en el

caso de PCM es lo que llevó a desarrollar la compresión en televisión, la cual

ha sido aplicada en vehículos piloteados remotamente y la más última

aplicación es en el campo de Videotex y en el de la TV de alta definición.

En los últimos años se ha tenido que transmitir imágenes al espacio a través

de los satélites y la compresión ha sido aplicada para reducir ei ancho de

banda requerido en la transmisión.

La compresión de base de datos no se usa solamente para reducir su

volumen que suele ser muy grande, sino también, para reducir el tiempo de

acceso al realizar consuítas en ella, por lo que ha sido aplicada en sus dos

partes básicas: los archivos de datos y los archivos índices.

Capitulo I 32

Page 43: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CAPITULOII

CÓDIGOS PARA COMPRIMIR ARCHIVOS DETEXTO FUENTE

Esencialmente existen dos formas de codificación de longitud sucesiva:

longitudes fijas, y longitudes variables (HUFFMAN y BNO).

En este trabajo se ha seleccionado el código HuUtnan y el código BNO, los

cuales en función de las probabilidades de ocurrencia desarrollan algoritmos

muy versátiles de reducción de la redundancia y proveen teóricamente el

máximo radio de compresión; la longitud de las palabras código resultantes,

son de longitud variable.

En la primera parte de este capítulo se desarrollará la teoría de los códigos

Huffman, y en la segunda parte los códigos BNO.

2.1 PROPIEDADES DE LOS CÓDIGOS HUFFMAN.

A principios de la década del 50, más exactamente en 1952 Huffman

desarrolló un procedimiento para codificar fuentes con símbolos

estadísticamente independientes; con lo cual, se logra representar a los

caracteres más frecuentes, con un reducido número de bits, y a los

caracteres menos frecuentes con un gran número de bits.

Page 44: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

De tal manera, de producir la mínima longitud media de bits por símbolo

fuente, se está ante un código más eficiente que aquellos de longitud fija en

el sentido que, para representar cierta información se podrá utilizar menos

símbolos en promedio1.

Debido a su simplicidad, la codificación Huffman seguramente es el método

más conocido en la compresión de datos, como se podrá comprobar

posteriormente con más detalle2.

Para lograr la bondad que se avizora de éste código es necesario conocer

acerca del comportamiento estadístico de la información3.

2.1.1 EFICIENCIA Y REDUNDANCIA

EFICIENCIA DEL CÓDIGO

Este parámetro sirve para medir que tan válido es un código como método

de compresión, es decir, que tan poderoso y apto es para realizar la

compresión; se le conoce también como rendimiento del código.

Para obtener el valor de la eficiencia se necesita haber codificado la fuente y

cuantificado la longitud de cada palabra código, con estos valores se puede

aplicar la ecuación (2-1), la cual indica que la eficiencia de un código

depende de la entropía de la fuente y de su longitud media

1DATA COMPRESSION TECHNIQUES AND APPLICATIONS, pág 552Revtsta BYTE, LOSSLESS DATA COMPRESSION, pág 3093CODING AND INFORMATION THEORY, pág. 51

Capitulo II 34

Page 45: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

(2-D

Donde, r, representa el número de símbolos del alfabeto código. Si el

alfabeto código es binario, se utiliza los símbolos O y 1 para realizar la

codificación, la expresión queda:

<?j -w — 'J . y n — i V y í"í O\ r — ¿ —r // — ( — Xj

Si se requiere de un rendimiento igual a 1, se estará ante un código

compacto de longitud media igual a la entropía, y en este caso la longitud

media a alcanzado su valor mínimo.

Esto se cumple, si y solamente sí, las longitudes de las palabras código son

iguales al logaritmo en base 2 del inverso de su respectiva probabilidad.

Si 7¡=l ' (2-3)=> Hi(S) = L (2-4)

donde Ih(S) =Z/**log/—]

y L ~"

No es posible conseguir un rendimiento Igual a uno, si l¡ no es un entero para

cualquier valor i, en otras palabras, l[ debe cumplir la siguiente condición para

que el rendimiento sea Igual a 1.

Cap/fufo II 35

Page 46: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

(2-6)

donde a un número entero

Si estas condiciones se cumplen, se habrán encontrado las longitudes de las

palabras que constituyen un código compacto. Bastará con elegir:

(2-7)

Para una misma fuente, la cual, se codifica con un código Huffman, el

rendimiento tiende a crecer, al disminuir el número de símbolos del alfabeto

código dado porr.

FIGURA 2-1

0,75-f—i—i—>1 2 3 4 5 6 7 8 3 10 11 12 13

Número de símbolos del código

Se observa en la figura 2-1 que el crecimiento no es monótono. Aprecíese

los valores que adopta para r=2 y

Este gráfico ha considerado que: las probabilidades de los símbolos tiene la

Capitulo II 36

Page 47: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

forma según la ecuación (2-6)4.

REDUNDANCIA DEL CÓDIGO

La codificación Huffman trata de crear un código con una mínima

redundancia, la cual minimiza el número promedio de dígitos para codificar

un símbolo de S5.

Las fuentes en la práctica contienen un gran número de mensajes y en

muchos casos hay un gran número de mensajes con muy poca probabilidad.

Con el código Huffman, palabras código grandes se asocian con mensajes

de poca probabilidad, entonces se tendría que manejar gran cantidad de

palabras código de longitudes muy extensas, y esto añade complejidad a los

requerimientos de programación y almacenamiento6.

La decodificación consiste en recuperar cada símbolo fuente a partir de su

palabra código. Como las palabras son de longitud variable surge el

problema de cómo limitar el fin de una palabra código y el principio de la

siguiente.

Para solventar este problema, se podría pensar en introducir una porción de

datos, pudiendo ser insertados con poca o ninguna distorsión residual, o si

no se desea introducir datos extras, se compensaría esta dificultad, con una

programación más sofisticada y a la vez se lograría reducir la redundancia

que por la naturaleza de la codificación Huffman se tendría.

4TEORlA DE LA INFORMACIÓN Y CODIFICACIÓN, pág. 1045THE CUsere JORNAL, DATA COMPRESSION USING HUFFMAN COD1NG, pág. 556THE CUsere JORNAL, DATA COMPRESSION USING HUFFMAN CODING, pág. 56

Capitulo II 37

Page 48: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Es decir que la técnica de reducción de ta redundancia tiene como meta

reducir el numero de bits requeridos para codificar en bíoque los datos con

cero o mínima distorsión.

Si la redundancia es:

Redundancia = \~ n = \ (2-g)

Para obtener una redundancia del código igual a cero, la longitud media por

sfmbolo debe ser igual a la entropía de la fuente.

La diferencia entre la longitud media por símbolo y la entropía de la fuente

constituirla fo que se puede comprimir.

2.1,2 TASA DE COMPRESIÓN

Para las fuentes estadísticamente independientes, como es el caso de los

códigos Huffman, la máxima tasa de compresión se da cuando la

probabilidad de cada símbolo es una potencia negativa de 2. Cuando esas

probabilidades no son una potencia negativa de 2 sino cualquier otro valor, el

código Huffman provee un atto radio de compresión.

En el código Huffman el radio de compresión es simplemente la relación del

número bits utilizados para codificar la fuente después de la compresión,

para el número de bits sin codificar la fuente antes de la compresión, por lo

tanto la fórmula para calcular esa tasa de compresión es:

Capitulo ¡I 38

Page 49: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TASA COMPRESIÓN = "° tí* deSJmés .100 (2-9)n° bits anies compresión

2.1.3 PROPIEDADES DE CODIFICACIÓN

PROPIEDADES QUE CUMPLE EL CÓDIGO HUFFMAN

CÓDIGO NO SINGULAR.- Esta es una propiedad muy Importante para

códigos de longitud variable, la cual consiste en que todas sus palabras

código sean distintas.

CÓDIGO UNÍVOCO.- La primera propiedad que se necesita es que, sea de

decodlficadón única, la recepción de mensajes debe tener una única posible

interpretación 7.

Esta es una condición necesaria y suficiente para que su decodiflcaclón sea

simple, pero difícilmente usual en los códigos de longitud variable8.

CÓDIGO INSTANTÁNEO.- El hecho de que el código Huffman sea

Instantáneo, permitirá que en el proceso de la decodificación se conozca

inmediatamente un mensaje codificado y no se espere otro u otros bits para

decidir a cual palabra código corresponde.

CODIFICACIÓN DE CÓDIGOS HUFFMAN

Primeramente se enuncia el concepto de fuentes reducidas, puesto que para

7CODING AND INFORMATION THEORY, pág. 528CODING AND INFORMATION THEORY, pág. 53

Capitulo It 39

Page 50: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

la construcción del código Huffman, se forman secuencias de fuentes

reducidas, tantas como sean necesarias hasta conseguir una sola fíjente

reducida con un número de símbolos igual al del alfabeto código, que para la

aplicación es binario.

Fuentes Reducidas:

Se considera una fuente S, de q símbolos, y cada símbolo con su respectiva

probabilidad, asf:

(2-10)

P9

Se ordena los símbolos en función de las probabilidades en orden

ascendente, de tal forma que:

(2-11)

Al agrupar los dos úfómos símbolos en uno sólo, se obtiene una nueva fuente

de q-1 símbolos. Esta nueva fuente se la llama fuente reducida de S.

Ya que la codificación Huffman consiste en hallar la mínima longitud media

de la palabra código, es decir el código más eficiente, basándose en sus

probabilidades de ocurrencia, el primer paso para la codificación será

encontrar esa distribución de probabilidades de la fuente a comprimir.

El alfabeto código que se utiliza es un alfabeto binario, constituido por dos

símbolos: el bit O y el bit 1 . El procedimiento de codificación es el siguiente:

Capítulo II 40

Page 51: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

1. Arreglar las probabilidades de la fuente en orden descendente de

mayor a menor.

2. Combinar las dos últimas probabilidades en una sola y ubicar ésta

suma en forma descendente dentro de las anteriores. Y continuar con

la construcción de fuentes reducidas hasta tener sólo dos

probabilidades equivalentes de la fuente.

3. Asignar un CERO y un UNO a los símbolos representados por las dos

últimas probabilidades.

4. Retroceder para cada par de probabilidades hasta el principio,

añadiendo O y 1 respectivamente.

5. Para cada mensaje escribir la secuencia de O con 1 de izquierda a

derecha9.

Los procedimientos de codificación Huffman, dan como resultado, códigos

de longitud variable, en los cuales, la longitud de las palabras código varían

aproximadamente inversamente con la probabilidad de los mensajes10.

Si las probabilidades de ocurrencia de los símbolos a codificar son

suficientemente diferentes, la codificación de longitud variable puede ser

significativamente más eficiente que la codificación en bloque como es el

caso del código ASCII, que usa 8 bits para todas las letras y símbolos.

9DATA COMPRESSION TECHNIQUES AND APPLICATIONS, póg 5710DATA COMPRESSION TECHNIQUES AND APPLICATIONS, pág 57

Capitulo II 41

Page 52: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CASOS DE CODIFICACIÓN HUFFMAN

Existe un número interesante de casos de codificación Huffman que se

enunciarán a continuación:

1. PRIMER CASO.- Si todos los símbolos a codificar, son igualmente

probables, y si existe exactamente:

q = 2m símbolos fuente

q : Número de símbolos de la fuente a codificar

m : Longitud de cada una de las palabras código

Entonces el código Huffman será un código bloque, y todas las

palabras código tendrán la misma longitud igual a m. Si no son

exactamente 2m símbolos a codificar, se obtendrá un código bloque

acortado.

Ejemplo: Para una fuente de cuatro símbolos con probabilidades

equiprobables se tiene:

V/>, / = 1,2,3,4 Pt=-^ = ~ -0.25

Entonces, se forman las fuentes reducidas tales que:

S Sí S2Sí pi Si pi Si p¡

s1 0.25^ s1 0.5xxsf 0.5s2 0.25^.y<s2 0.25)Xs2 0.5$3 0.25lA$3 0.25Js4 0.25J

Capítulo íl 42

Page 53: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Y aplicando la codificación regresiva, se tiene:

Se ha obtenido un código bloque, ía longitud de las palabras código es

única e igua! a 2 bits.

SEGUNDO CASO.- Si la suma de las probabilidades de los 2 últimos

símbolos menos probables es más grande que la de! símbolo más

probable, de acuerdo al proceso Huffman la correspondiente palabra

símbolo irá al tope del arreglo descendente de probabilidades, si se

presenta la siguiente condición:

Pq : Valor de la probabilidad del símbolo menos probable

Pq_1 : Valor de la probabilidad del penúltimo símbolo menos

probable.

P1 : valor de la probabilidad del símbolo más probable.

Si los siguientes 2 símbolos menos probables se combinan y dan un

valor mayor que el tope anterior, se procede de igual manera, y así

sucesivamente. Al final del proceso se conseguirá un código bloque

acortado.

Ejemplo: Se considera la siguiente fuente S de seis símbolos, con

Capítulo II 43

Page 54: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

sus respectivas probabilidades. Sus fuentes reducidas son:

ssi

s1s233

s4$5s6

pi

0,210.190.180.16 /0.1 4\I0.12]

S1si

S1

Is2I s3

s435

0.260.210.19 i0.1 8\/0.1 Gj

S2si

s1fs21 33

s4

Pi

0.340.260.21\/0.191

J

S3sí p¡

,s1 0.40/ s2 0.43\/

s3 0.26J

S4si pf

^$1 0.60s2 0.40

Se tiene que:

i = A = 0.14

= 0.21

0.12 + 0.14 > 0.21

0. 26 > 0.21

La codificación regresiva es la siguiente:

Con lo cual se ha conseguido un código bloque acortado, de los 6

símbolos, 4- tienen una longitud Igual a 4 bits, y los 2 restantes tienen

una longitud de 2 bits

SÍ tas probabilidades de los símbolos de la fuente son muy diferentes

Capítulo II 44

Page 55: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

se conseguirá una economía significativa del proceso de codificación

Huffman, y cuando haya gran diferencia de probabilidades de

ocurrencia se darán palabras código de longitud variable11.

El proceso de codificación no es único desde diversos puntos de vista, esto

trae consigo el siguiente caso de codificación:

3. TERCER CASO.- Cuando dos probabilidades son iguales, P1=P2; al

reubicar dentro del arreglo en forma descendente se puede pensar

que el orden en que se los coloque será independiente en el resultado

obtenido sobre la palabra código, pero las palabras código

resultantes pueden tener una cierta longitud en el caso de decidir

poner p-j debajo de p2, y otra longitud si se pone p-j encima de p2-

Sin embargo, en cualquier caso, la longitud media de la codificación

de mensajes será la misma.

Ejemplo: Si para un conjunto S de 6 letras del abecedario, se tiene

el conjunto de probabilidades P¡ respectivamente, tales que:

» = {0.4,0.2,0. 1,0.1, 0.1,0.1}

Si se combina tos dos estados tan altos como sea posible, se

conseguirá las fuentes reducidas concatenadas de la siguiente

manera:

UCODING AND INFORMATION THEORY, pág. 69

Capitulo II 45

Page 56: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

ssi

s1s2s3s4s5s6

0.40.20.10.1 /0.1}/0.1

S1si

s1

/s2/s3/ s4

s5

Pi

0.40.20.20.1\/0.1 ¡

J

S2si

s1s2

/s3s4

Pi

0.40.20.2\/0.2¡

S3sí pi

,s1 0.4/s2 Q.4\/

s3 0.2}

S4s¡ pl

Xs7 0.6^ s2 0.4

Entonces las longitudes respectivas serán:

Resumiendo se tiene:

Símbolo //

La longitud media es:

/-I

= 0.4(2)-i-0.2(2) + 0. 4-0.1(3) + 0.1(3)

Z, = 2.4 bits I símbolo

Capitulo II

Page 57: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Caso contrario, si se combina ios dos estado como los más bajos

posibles, entonces se obtiene lo siguiente:

ssi

s1s2s3s4s5s6

Pl

0,40.20.10.10.1 \/0.1

S1si

s1s2s3

/ s4s5

0.40.20.2ÜJ)0.1 J

S2sí

$1s2$3

^s4

Pi

0.40.20.2)/0.2\

S3si

S1

xs2

Pf

0.40.4\/0.2J

S4si pi

.sí 0.6s2 0.4

La codificación regresiva, resulta en:

1

01

OOW^

wn^ooooVOOOlf

— sl

— ¿2

-/^/^A%

i01

000

°°10L--001 ij

slS2

•%•54

1 —OK

000

001

1o

r *-

*> Olí

Resumiendo se tiene:

Símbolo l¡

a 1b 2c 4d 4e 4f 4

La longitud media es:

Capitulo II 47

Page 58: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

= 2.4 bits! símbolo

Ambos códigos tienen la misma eficiencia y longitud media pero no

las mismas longitudes de sus palabras código.

Se podría optar por uno de ellos, el que menos varianza presente sus

longitudes con respecto a la longitud media. La ecuación de fa

varianza es:

varianza =2jU~£) (2-13)i-i

De acuerdo al ejemplo se tendría:

v ariamaaí1a = 0,176

=1.84

El primer código, es significativamente menos variable, y

posiblemente será el código preferible. Por lo tanto, parece que,

siempre que se mueva los estados combinados tan aíto como sea

posible, dará un código de mínima varianza12.

12CODING AND INFORMATION THEORY, pág. 67

Capítulo II 48

Page 59: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Analizando paso a paso el procedimiento manual de la codificación Huffman,

se puede observar que cada una de las palabras código pueden formar parte

de un árbol de decisión:

Ejemplo: Si las palabras código resultantes de una fuente S, son:

s¡ palabras código

s2 0153 00154 000

Se puede construir un camino entre sucesión de ceros y sucesión de unos de

acuerdo a la figura 2-2.

FIGURA 2-2 !

si :

84

Esto indica que la codificación Huffman es un procedimiento altamente

recursivo, y puede hacer uso del concepto de codificación de árbol.

CODIFICACIÓN DE ÁRBOL

Se considerará el siguiente ejemplo: Un alfabeto fuente de 5 símbolos, si,

con sus respectivas probabilidades pf.

Capítulo II 49

Page 60: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

si I si $2 53 54 85i

pí | 0.3 0.2 0.2 0.1 0.1

Haciendo uso de los procesos de codificación Huffman, se tendrá las

siguientes fuentes reducidas:

ss/ PI

S1 0.3s2 0.2s3 0.2s4 0.1]s5 0.1

S1s¡ Pi

s1 0.352 0.2s3 0.2 /

^s4 0.2<r

S2s¡ p¡

yS7 0.4

/ s2 0.3}^s3 0.2}

S3s/ Pi

^s1 0.6s2 0.4

Y aplicando la codificación regresiva, se tiene:

111

Como se mencionó anteriormente, cada una de las palabras código pueden

formar parte de un árbol de decisión; entre avanzar con un cero (0), o

avanzar con un uno (1).

Empezando con ei estado inicial, si ei primer dígito binario es un O, causará

un primer punto de decisión, hacia el estado s1 o s2, caso contrario

provocará un segundo punto de decisión, es decir si es un UNO lo recibido se

dirigiría hacia el estado s3, s4, o s5, de acuerdo al ejemplo que se está

analizando.

Capítulo II 50

Page 61: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Gráficamente se muestra en la figura 2-3

FIGURA 2-3

Estado inicial

Primer puntode decisión

Haclas1,s2

Segundo puntode decisión

Hacia s3,s4,s5

Para el siguiente dígito binarlo, a partir del primer punto de decisión, se iría al

estado s1, si es un CERO lo recibido, ya que el segundo dígito de su palabra

código es un O, caso contrario debe dirigirse al estado s2, puesto que el

segundo dígito de su palabra código es un 1.

Gráficamente se muestra en la figura 2-4

FIGURA 2-4 !

2°purto1* puntocíectetón

hacia 33,34,35

De igual manera, partiendo del segundo punto de decisión, se iría al estado

s3, si es un CERO lo recibido ya que el segundo dígito de su palabra código

Capítulo II 51

Page 62: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

es un O, caso contrario se tendría un tercer punto de decisión, si es un UNO,

es decir se iría hacia el estado s4 o s5.

Gráficamente se muestra en la figura 2-5

FIGURA 2-5

estado inicial

2° puntocfectstin

si s2

3° puntodecisión

hacia s4,35

Desde el tercer punto de decisión, se irfa al estado s4 si es un CERO lo que

se recibe ya que el tercer dígito de su palabra código es un Of caso contrario

debe dirigirse al estado s5( puesto que el tercer dígito de su palabra código

es un 1.

Gráficamente se muestra en la figura 2-6

Capítulo ¡I 52

Page 63: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Se nota claramente que en este proceso, cada bit de cada palabra código es

examinado una sola vez, y que los estados terminales de éste árbol, resultan

ser ios 5 símbolos del alfabeto fuente, s1,52,53,54,55,

La codificación es instantánea, y al hacer uso de un árbol de decisión para la

codificación, las palabras código se halla fácilmente recorriendo el árbol

desde la raíz hasta un estado terminal (hoja del árbol).

El esquema del árbol de decisión provee un método muy cómodo y práctico

para lograr la codificación, haciendo uso de unas ramas simples de dos

caminos, un camino para el bit CERO y el otro para el bit UNO.

Un árbol de decisión, en realidad es una estructura de árbol; esta estructura

se explicará con más detalle en el capítulo III, cuando se analice el

procedimiento de compresión. .

2.1.4 PROPIEDADES DE DECODIFÍCACION.

PROPIEDADES A CUMPLIR EL CÓDIGO HUFFMAN

CÓDIGO UNÍVOCO.- Esta propiedad es necesaria porque ios mensajes

comprimidos están concatenados entre sf por las respectivas palabras

código, y en la descompresión se necesita decidir exactamente cuales

secuencias de ceros y unos son palabras código, a fin de poder hallar su

correspondiente símbolo fuente, indudablemente, si toda la secuencia de

cada una de las palabras código es única, se puede tener un sistema de

señales únicamente decodificable.

Capitulo II 53

Page 64: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CÓDIGO INSTANTÁNEO.- Al considerar como se decodificarían los

mensajes, es valioso contar con un código que permita identificar cada una

de las palabras código sin necesidad de analizar los símbolos que le

suceden.

Esta facilidad se tiene cuando el código es instantáneo, y eí código Huffman

cumple con la propiedad de decodificación instantánea. Por lo tanto al

decodificar, inmediatamente se conoce el fin de una palabra código y no se

requiere mirar los bits adicionales para decidir a cual símbolo corresponde.

Esta constituye una de las principales propiedades que hacen de! código

Huffman uno de los más poderosos, fáciles y simples en el proceso de

decodificación. \N DEL CÓDIGO HUFFMAN

De acuerdo a la definición y a las propiedades de codificación Huffman se

puede observar que el método para la decodificación, resultaría simple y

rápido si cada símbolo recibido se examina una sola vez, dentro de!

esquema de estructura de árbol, se consigue vencer el problema

fundamental de decodificación de los mensajes, identificando de manera

precisa y exacta el final de una palabra código y el principio de la siguiente.

Por consiguiente, la decodificación de un código Huffman requiere la

construcción de una estructura de árbol binario.

Ejemplo: Se parte de un sencillo ejemplo de codificación Huffman, con el

propósito de mostrar un esquema de estructura de árbol binario.

Capítulo II 54

Page 65: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

• Fuente a codificar: {T,E,S,I}

• Para fines del procedimiento de codificación, basta con encontrar la

frecuencia de cada símbolo, la cual se la puede obtener del mensaje a

comprimir que es: TESIS

Símbolos

Fuente

T

E

S

I

frecuencia

1

1

2

1

Conformando las fuentes reducidas y codificándolas se tiene:

S 2 El 2 ST 3

T I S 2 El 2

E \ 1

/ 1

S 00 El 1 ST

T 01 S 00 El

E 10 T 01

7 11

La estructura de árbol binario resultante es el siguiente:

FIGURA 2-7

* Se puede decodificar fácilmente cualquier secuencia continua de bits,

como por ejemplo: 010111001011, en base a la estructura de árbol

Capitulo II 55

Page 66: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

representada en la figura 2-7, en éste caso representa a ta cadena de

letras: 7T/SE/.

• Esto señala que, una estructura de árbol ofrece las mejores facilidades

para impiementar el código Huffman junto con su propiedad de

decodificación instantánea, y no es necesario delimitar cada una de las

palabras código para decodificarlas.

2.2 PROPIEDADES DE LOS CÓDIGOS BNO

Por el año de 1948 Shannon-Fano sugirió pero no especificó urra técnica de

codificación de las longitudes sucesivas de una fuente con 2 símbolos

estadísticamente independientes, en la cual la probabilidad de ocurrencia del

un símbolo es mucho menor que la del otro símbolo13.

La sugerencia también consistía en que para el símbolo de menor

ocurrencia, se tenga una secuencia especial binaria y para el resto de

símbolos subsecuentes un código de longitud sucesiva, que no debería

contener ninguna de las palabras código que incluya (a secuencia especial

del símbolo infrecuente, y como la probabilidad de símbolo infrecuente tiende

a cero, su longitud debería ajustarse lo más óptimamente posible.

Entonces podría utilizarse un código o un dígito único para el símbolo poco

probable de una fuente de 2 dígitos y esto se emplearía para solventar el

problema de distinción entre las muestras no redundantes y las palabras

código de longitud variable14.

13DATA CQMPRESSION TECHNIQUES AND APPLICATION, páy. 14514DATA COMPRESSIONTECHNIQUES AND APPLICATION, póg. 146

Capitulo II 56

Page 67: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Con estos conceptos preliminares, Wai_Hung Ng desarrolló por 1971 el

código BNO que actualmente se conoce, cuyas siglas en inglés significan:

Código Binario de Unos no consecutivos.

Este código así desarrollado, relaciona a las longitudes sucesivas de

muestras redundantes con palabras código de longitud variable que tengan

ceros consecutivos pero no unos consecutivos, y también la inserción entre

palabras código de una secuencia especial que contendrá unos

consecutivos, con la finalidad de distinguir el final de cada una de las

palabras código enviadas en forma continua15.

2.2.1 EFICIENCIA Y REDUNDANCIA

EFICIENCIA DEL CÓDIGO

Este parámetro proporcionará la medida de ia compresión, indica que tan

poderoso y apto es el código para realizar la compresión

Esta medida resulta luego de haber realizado la codificación respectiva,

encontrado la palabra código para cada uno de los símbolos de la fuente, y

cuantificado su longitud. De acuerdo a la fórmula (2-14) depende de la

entropía de la fuente y de su longitud media.

La variable r toma el valor de 2, puesto que el código BNO utiliza dos

Í5DATA COMPRESSIONTECHNIQUES AND APPLICATION, pág. 146

Capítulo il 57

Page 68: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

símbolos para ia codificación de sus palabras código O y 1

Para calcular H(S) y L se tiene las siguientes fórmulas:

#2(5) = 2 A loga— (2-15)Pt

fL ~ ^^p¡longitudt (2-16)

/-i

Donde longftuti¡ se calcula con la siguiente expresión:

+ IISXCUSNCLÍ ESPECIAL (2 — 17)

SÍ se requiere de un rendimiento igual a 1, se estará ante un código

compacto de longitud media igual a la entropía, y en este caso la longitud

media ha alcanzado su valor mínimo sí y solamente sí cumplen con las

ecuaciones (2-3), (2-4), y (2-5),

REDUNDANCIA DEL CÓDIGO

La codificación BNO trata de crear un código de mínima redundancia, que

minimice el número promedio de bits por carácter, tomando ventaja de la

típica distribución de probabilidad no uniforme que presentan los símbolos de

la fuente.

Entonces al seguir el procedimiento del código BNO, se generan palabras

código de mayor longitud mientras más símbolos tenga la fuente a codificar,

y esto aftadirá complejidad en los requerimientos de diseño y

Capitulo II 58

Page 69: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

almacenamiento para la compresión.

Por lo tanto esta codificación trae con sigo un problema fundamental, tener

que trabajar con palabras de longitud variable, y tratar de organizar cada

sfmbolo del alfabeto código, o sea, la delimitación del fin de una palabra

código y el principio de la siguiente.

Para delimitar cada palabra código es indispensable introducir una porción

de datos, que puedan ser insertados con poca o ninguna distorsión residual,

o en el caso de no introducir datos extras, se compensaría con una

programación más sofisticada y se lograría reducir la redundancia que por la

naturaleza de la codificación BNO se tendría.

2.2.2 TASA DE COMPRESIÓN

El radio de compresión es simplemente la: relación de bits de la fuente antes

de la compresión para los bits de la fuente después de la compresión, por lo

tanto la fórmula para calcular esa tasa de compresión en el código BNO es:

TASA COMPRESIÓN = * *te *****n° bits antes compresión

2.2.3 PROPIEDADES DE CODIFICACIÓN

PROPIEDADES QUE CUMPLE EL CÓDIGO BNO

CÓDIGO NO SINGULAR.- Esta es una propiedad muy importante para

códigos de longitud variable; consiste en que todas sus palabras código sean

Cap/íu/o // 59

Page 70: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

distintas.

CÓDIGO NO UNÍVOCO,- l_a primera propiedad que se observa es, no ser

de decodíflcación única, es decir, en ía decodificación del mensaje, la

secuencia de bits continuos causará ambigüedad en la interpretación de los

símbolos codificados.

CÓDIGO NO INSTANTÁNEO.- El hecho de que el código BNO no sea

unívoco, implica que sea no instantáneo. Entonces para la decodificación

será necesario conocer uno o más bits con los cuales se decida por una

determinada palabra código.

CODIFICACIÓN DEL CÓDIGO BNO

Para codificar símbolos fuentes mediante el código BNO, se necesita

generar las palabras códigos en una cantidad igual a la de los símbolos

fuente, luego asignarlas según la probabilidad de cada símbolo.

La generación de éste código está basado en la fórmula; 2a, donde n es el

número de bits que tendrá una determinada palabra código.

La tabla 2-1 muestra los parámetros particulares para la generación de las

palabras código BNO.

De la secuencia de b'rts que resulten con estos parámetros se escogerán las

palabras del código BNO, en cada uno de los casos la secuencia de bits que

tenga 1's consecutivos, no será considerada como una palabra código BNO.

Capítulo II 60

Page 71: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TABLA 2-1 Generación del Código

n 2"

12345678

248163264128256

Por consiguiente, la longitud sucesiva de las muestras redundantes son

codificadas con palabras código de longitud variable que pueden tener ceros

consecutivos pero no unos consecutivos. Se observa lo dicho en la siguiente

tabla:

TABLA 2-2 Código BNO

longitud sucesiva palabras código

1234567e910111213U151617181920

01

000110000001010 :1001010000 :

00010010010001011000100110100000000001

Capitulo (I 61

Page 72: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Para proceder con la asignación de las palabras código, una vez generadas,

se deberán seguir los siguientes pasos:

1. Arreglar las probabilidades en orden descendente con su respectivo

sfmbolo, de mayor a menor.

2. Asignar al sfmbolo de mayor probabilidad ¡a primera longitud sucesiva, es

decir el CERO, al siguiente asignar la segunda longitud sucesiva, es decir

el UNO y continuar con este procedimiento de acuerdo a número de

longitud sucesiva que corresponda según la tabla BNO.

Los procedimientos de codificación BNO resultan por lo tanto, en la

generación de las palabras código de longitud variable y después en la

asignación de éstos códigos empezando por dos palabras de un bit de

longitud, luego tres palabras código de 2 bits, cinco palabras código de 3 bits,

y así sucesivamente, Entonces se conoce exactamente la longitud de las

palabras código por generarse, según la cantidad requerida para todos los

símbolos del alfabeto fuente,

Este código como se puede apreciar, se genera independientemente de la

probabilidad de los símbolos, pero la asignación si depende de cada una de

las probabilidades. Se aprovecha la frecuencia de ocurrencia de cada

símbolo, para asignar una palabra código de la menor longitud posible, de tal

manera que, los símbolos de mayor probabilidad tengan palabras código de

longitud pequeña y a los de menor probabilidad, palabras de longitud grande.

2.2.4 PROPIEDADES DE DECODIFICACION.

Capítulo fl 62

Page 73: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

PROPIEDADES A CUMPLIR EL CÓDIGO BNO

CODIFICACIÓN ÚNICA,- Desafortunadamente toda secuencia de las

palabras código BNO no es única, por lo cual no se tiene un sistema de

señales únicamente decodificabíe.

Para conseguir una decodificación única, es necesario utilizar el concepto de

banderas, que disminuyen la tasa de compresión.

CODIFICACIÓN NO INSTANTÁNEA.-Al considerarla decodificación de los

mensajes, el código BNO no permite identificar cada una de las palabras

código sin antes analizar los símbolos que la suceden.

El código BNO cumple con la propiedad :de decodrficación no instantánea.

Por lo tanto para decodificar, se requiere mirar los bits adicionales para

decidirá cual símbolo corresponde.

DECODIFICACIÓN DEL CÓDIGO BNO

La decodificación de un código BNO requiere la inclusión de bits de banderas

para identificar de forma precisa y exacta la palabra código, los cuales se

colocarán entre el fin de una palabra código y el principio de otra.

Capitulo ti 63

Page 74: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CAPITULO

COMPRESIÓN Y DESCOMPRESIÓN DEARCHIVOS DE TEXTO

La codificación Huffman, y BNO son técnicas de compresión sin pérdida de

la entropía y son apropiadas para utilizarlas en la compresión de cualquier

clase de datos, ya que la representación de los símbolos después de la

descompresión, es idéntica a los símbolos asignados antes de la compresión.

3.1 PROCESOS DE COMPRESIÓN DE ARCHIVOS DE TEXTO.

El aspecto más Importante a considerar en la compresión es, delimitar

adecuadamente cada una de las palabras código, a fin de no perder la

información durante la decodlficación, y a la vez, que proporcione la mayor

facilidad al momento de separarlas en la descompresión.

Tanto la codificación Huffman como la BNO, parten de las probabilidades de

ocurrencia. Por lo tanto, el primer paso para codificar ios símbolos de las

fuentes a comprimir, es encontrar la distribución de probabilidades.

DISTRIBUCIÓN DE PROBABILIDADES

Page 75: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

De acuerdo a la definición del Código Huffman y del código BNO, a cada

uno de los símbolos de la fuente a codificar, le corresponde una palabra

código de longitud variable, dependiendo de las probabilidades de ocurrencia.

Por lo que, el primer paso para realizar la codificación es, generar una lista

de probabilidades.

Esta lista, podría derivarse del análisis de las ocurrencias estadísticas que se

presenten, en los diferentes textos existentes, tales como, escritos de

medicina, ingeniería, historia, literatura, etc, o podrían ser el resultado de

compilar textos escritos en el idioma inglés, francés, español, etc.

En cada uno de estos textos, existirá una distribución de probabilidades

particular en el sentido de que, ciertos caracteres ASCII se utilizarán más que

otros.

Por ejemplo, la probabilidad de ocurrencia de carácter A, en el idioma

español, no será igual a la probabilidad de ocurrencia en el idioma inglés.

Pero, esta forma de obtener la lista de probabilidades del alfabeto ASCII,

otorga un carácter estático, tanto a la codificación Huffman, como a la

codificación BNO.

Sin embargo, se puede obtener la lista de probabilidades, mediante una

exploración de los símbolos de la fuente a comprimir, y encontrar las

probabilidades de ocurrencia, exclusivamente para ese alfabeto fuente.

Capítulo III 65

Page 76: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Este será el método a utilizar para obtener la distribución de probabilidades,

el cual, proporcionará una lista de probabilidades dinámica, que reflejará

efectivamente, el comportamiento estadístico del alfabeto ASCII de ese

archivo en particular.

Así, se logrará independencia total sobre el contenido en sí del archivo texto,

no interesa si se trata de textos en Inglés, español, japonés, etc. o si son

escritos de: medicina, ingeniería, religión, economía, etc. Lo que realmente

Importa, es que estos archivos sean de tipo ASCII.

A continuación se detalla los procedimientos seguidos para obtener la

compresión de archivos de texto.

3.1.1 COMPRESIÓN CON EL CÓDIGO HUFFMAN.

El código Huffman es claramente instantáneo y único, ya que ningún símbolo

codificado es un prefijo de otro; e) diseño de un código Huffman es altamente

recursivo, por lo que puede utilizarse una estructura de árbol, razón por la

cual primeramente se describen ciertos conceptos preliminares de una

estructura de árbol.

ARBOLES BINARIOS

En varias ocasiones, y muchas veces sin saberlo, trabajamos con los árboles,

por ejemplo: árboles genealógicos, organigramas, directorios en los discos

de un computador personal, etc. Cada uno de estos conceptos, representan

un árbol.

Capítulo III 66

Page 77: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Cuando de programación se trata, el concepto de árbol binario es muy

Importante, puesto que, constituye una de las estructuras de datos que

pueden implementarse, por lo tanto será necesario enunciar el concepto de

árbol binario de forma clara y precisa.

En su forma más elemental, un árbol binario está constituido por un vértice

principal, y de éste se desprenden dos ramas: la rama de la izquierda y la

rama de la derecha.

Su representación gráfica se presenta en la figura 3-1

FIGURA 3-1

Forma elemental de un árbol binario

f vértice \ principa! J

La rama izquierda y derecha también son dos árboles binarios. El vértice

principal se denomina rafz, y cada una de las ramas se denomina árbol

izquierdo y árbol derecho.

Árbol binarlo.- Un árbol binario es un conjunto finito de elementos, cada uno

de ios cuales se denominan nodos. Particularmente a ios nodos terminales se

les llama hojas del árbol. El primer elemento de un árbol binario es la raíz.

Este concepto se Ilustra en la figura 3-2.

Capitulo III 67

Page 78: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

FIGURA 3-2

Árbol binarlo

RAÍZ

roma injuienJa

NODO

rama Izquierda

HOJA

rama derecha

MOCO

rama derecha

HOJA

NODO

rama derecha

HOJA

Nodo.- El nodo es un punto de decisión de un árbol, en este elemento se

guarda: la Información, la dirección de la rama derecha, la dirección de la

rama izquierda, y la dirección de su predecesor en caso de existir. Es decir

cada nodo puede estar ramificado por la izquierda y/o por la derecha, o

puede no tener ninguna ramificación.

FIGURA 3-3

Representación gráfica de una Hoja

efxxtador elpredecesor

opuriodoraJ árbol deta izquierda

Informaciónda nodo

-X;IapLrtador oí árbolda la derecha

Capitulo III 68

Page 79: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Hoja.- Una hoja es un nodo que no tiene ramificaciones. La representación

gráfica de un nodo se muestra en !a figura 3-3.

Peso.- E! peso de un árbol en un nodo dado, es e! número de nodos en el

árbol sin contarse e! mismo. Ver la figura 3-4

FIGURA3-4

E! peso de éste árbol cuya rafz es A, corresponde a! número de nodos de

ese árbol, y es 8. El nodo E tiene un peso de 4. Los nodos B y G tienen un

peso de 2.

En cierto sentido, el árbol binarlo es una forma especial de lista enlazada.

Los elementos que lo constituyen se pueden insertar, eliminar, y acceder en

cualquier orden, la operación de la recuperación de la información es no

destructiva.

PROCEDIMIENTO PARA LA CODIFICACIÓN Y DECODIRCACIÓN

Para la codificación, se implementa una estructura de árbol binario junto con

la definición de código Huffman; y a la vez, esta estructura de árbol se utiliza

Capitulo lll 69

Page 80: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

para realizar la decodificación, el almacenamiento, y la recuperación de las

palabras código de longitud variable, en forma dinámica.

En otras palabras para comprimir con el código Huffman se aplica el método

de búsqueda y rastreo de las palabras código en una estructura de árbol

binario.

MÉTODO DELIMITADOR DE LA PALABRA CÓDIGO

Como se mencionó anteriormente, el aspecto más importante en este tipo de

compresión es, limitar adecuadamente cada una de las palabras código, y

esto se consigue también con la implementación de la estructura de árbol.

El concepto de hoja de un árbol binario, permite limitar adecuadamente cada

una de las palabras código. El decodificador inmediatamente conoce el final

de la palabra, y no tiene que depender de bits adicionales para decidir a cual

símbolo fuente corresponde tal secuencia de O's y 1's; ya que recorre el árbol

desde la raíz hasta una hoja, ésta nos indica eí final de la palabra código.

PROCESOS QUE INVOLUCRAN EL PROGRAMA DE COMPRESIÓN

HUFFMAN:

El programa de compresión está escrito para examinar un archivo texto

automáticamente, conseguir la tabla de probabilidades, y con esta

información construir un árbol binario de codificación instantánea. A

continuación se explica cada uno de estos procedimientos:

1. OBTENCIÓN DE LA TABLA DE PROBABILIDADES

Capitulo III 70

Page 81: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Para realizar este proceso, se accede uno a uno a los caracteres según e!

orden de aparecimiento en e! momento de leer el archivo texto y se crea una

lista doblemente enlazada.

La lista tendrá elementos tipo estructura con campos para almacenar la

frecuencia y el carácter. Su representación gráfica se ilustra en la figura 3-5.

FIGURA 3-5

Elemento de la Lista de Ocurrencias -HUFFMAN-

A medida que se vayan leyendo los caracteres del archivo fuente se

incrementará un contador específico para ese carácter, el cual corresponderá

a la frecuencia de ocurrencia. Por lo tanto a esta lista se !a llamará, Lista de

Ocurrencias de los caracteres ASCII, puesto que cada elemento tendrá un

carácter ASCII con su respectiva frecuencia de ocurrencia.

Una vez concluida la lectura total, se I procederá a ordenar la lista de

ocurrencia descendentemente en función del valor de la frecuencia.

Después se crea una Lista de Hojas de Referencia paralela, apuntando a

cada uno de los elementos de la lista de ocurrencia. De Igual manera susi

elementos son estructuras con campos para almacenar, el carácter, la

Capítulo III 71

Page 82: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

frecuencia, y el número de bits de la palabra código. Su representación

gráfica se muestra en la figura 3-6.

FIGURA 3-6

Elemento de ia Lista de Hojas de Referencia HUFFMAN

cher

freo

N

-> s

La lista de ocurrencia y ia lista de hojas de referencia son las herramientas

creadas para acceder más rápido a cada uno de los caracteres, en ei

momento de la generación del código Huffman, y en el momento de la

compresión y descompresión del texto, respectivamente.

La construcción del código Huffman, empieza con los dos símbolos de

mínima probabilidad, el símbolo de mayor probabilidad será e! último en

considerarse, razón por la cual será de gran ayuda disponer de la lista de

ocurrencias en forma ascendente, para acceder más rápidamente, ya que

mientras sus elementos pasan a formar parte de la estructura de árbol, se

desligarán de la lista; y más fácil resurta desligarlos por el tope.

El árbol de codificación ya generado, tendrá los caracteres de gran

probabilidad cerca de la raíz, mientras que a los caracteres de poca

probabilidad lejos de la raíz, entonces la lista de hojas de referencia se

ordenará en forma descendente, mientras se vaya leyendo los caracteres del

archivo para comprimirlos, se deberá acceder a la hoja del árbol

correspondiente, tantas veces indique su frecuencia y, más rápido se logrará

Capitulo III 72

Page 83: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

esto, al disponer la lista de hojas de referencia ordenada en función de la

frecuencia de mayor a menor.

Por consiguiente, se ordenará la lista de ocurrencias en forma ascendente y

la lista de hojas de referencia en forma descendente, físicamente se

representar en la figura 3-7. Se requiere que estén enlazadas, según avance

el proceso de codificación, se desligarán los elementos de la lista de

ocurrencias, y la única forma de accederá los caracteres rápidamente será a

través de la lista de hojas de referencia, físicamente se puede representar de

acuerdo a la figura 3-8.

2. CODIFICACIÓN HUFFMAN

Para ejecutar este proceso, se hará uso de la lista de ocurrencias, de la lista

de hojas de referencia, y de la estructura de árbol binario. Para ésta última se

creará una lista de árboles.

La lista de árboles está constituida por elementos tipo estructura donde se

almacenarán, el peso del árbol, y la dirección que apunte a una estructura

tipo árbol.

Para construir el árbol, se empezará con los 2 símbolos de mínima

probabilidad, se los combinará como 2 hojas del primer árbol. A la raíz de

éste árbol se asignará la suma de las dos probabilidades, y pasará a ser el

primer elemento de la lista de árboles. Esta lista de árboles se generará en

forma descendente en función de la suma de las probabilidades.

Capítulo fil 73

Page 84: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

FIGURA 3-7

Lista de Ocurrencia y Lista de hojas de referencia (LHR)

ANTES DESPUÉS

Iniciamayorfrec

r r r rFin D-O

Lista de Oeurr. LHR

menorfrec

menorfrec

mayorfrac

Lista ds Ocurr.

mayorfrac

LHR

menorfrec

hoja

FIGURA 3-8

ÁRBOL BINARIO

raíz

mayorLHR fr8C

hoja

úitimo

menorfrec

Capítulo III 74

Page 85: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Entonces, se considerará este nodo junto con el resto de símbolos de la lista

de ocurrencias, y se seleccionará los dos ítems menos probables,

comparando entre, la suma de los dos siguientes símbolos menos

probables, y, la suma de un símbolo menos probable con el primer elemento

de ia lista de árboles. El menor valor resultante, formará parte del siguiente

elemento en la lista de árboles.

En el caso de que el valor de las sumas sean iguales, se dará prioridad al

resultado de la suma de los símbolos ASCII, para equilibrar el peso del árbol

binario, y obtener el código más eficiente.

Se puede continuar con la adición de nuevas hojas, haciendo uso de la

comparación mencionada arriba, lo que Involucra un intercambio de nodos

por medio de la lista de árboles.

Habrá un momento durante la construcción del árbol, en que todos los

símbolos de la lista de ocurrencia pasarán a formar parte de las hojas del

árbol, pero se tendrá cierto número de árboles por combinar. Entonces se

continuará sumando, dos elementos del tope de la lista de árboles, para

formar un nuevo árbol, y se colocará al fin, reduciéndose en un elemento esta

lista de árboles.

Esto continuará hasta construir y combinar todos los elementos de la lista de

árboles, y llegar a conseguir un sólo árbol.

La construcción de este árbol, enlazando doblemente cada uno de sus

elementos, solventará el problema para encontrarlas palabras código.

Capítulo III 75

Page 86: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Es necesario introducir pesos para cada nodo de! árbol, y actualizar esos

pesos según avance el proceso de codificación. Al final ese valor, indicará la

longitud de las palabras código.

La codificación del árbol Huffman, cambia para responder a ias

probabilidades de cada carácter.

Las hojas resultantes, son los símbolos del archivo fuente. Los símbolos más

probables estarán cerca de la raíz y por consiguiente la longitud de las

palabras código será pequeña, mientras que los símbolos menos probables

estarán lejos de la raíz y consecuentemente ta longitud de las palabras

código será grande.

Para codificar un símbolo, a través de la lista de hojas de referencia se

accederá rápidamente a la hoja que le contiene. Como el árbol se construyó

doblemente enlazado, se empieza por la hoja, y se avanza hacia la raíz.

Los tipos de ramas, izquierda o derecha, que describan el camino recorrido

desde la raíz hasta ia hoja, conformarán la palabra código del carácter.

Se recuerda que la rama izquierda representa al bit CERO, y la rama

derecha representa al bit UNO.

3. COMPRESIÓN HUFFMAN

El proceso de compresión hace uso de la lista de hojas de referencia, la

estructura de árbol y un buffer de bits en memoria RAM.

Capítulo III 76

Page 87: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Se comprime el texto, accediendo por segunda vez a los caracteres del

archivo fuente, se busca en ta lista de hojas de referencia, para de ahí

acceder rápidamente a la hoja dentro del árbol. Se procede a codificarlo,

mediante un rastreo de la estructura de árbol binario, partiendo de la hoja

hacia !a raíz.

Los bits de la palabra código encontrados se colocan en forma inversa en el

buffer de bits, puesto que las orientación correcta de la palabra código es,

desde la raíz hacía la hoja del árbol. No se rastrea desde la raíz, debido a

que dependiendo de la frecuencia se tardará más tiempo en encontrar el

carácter.

Se continúa con el siguiente carácter del archivo de igual manera, hasta

terminar con la lectura del archivo.

Cuando se ha completado hasta 1.000 bytes en el buffer, se almacena la

información binaria resultante, en el texto comprimido, junto con un

encabezado necesario para la decodificación.

Al finalizar este proceso, se obtendrá el archivo comprimido con Información

binaria, y llevará como parte de su nombre la extensión ,CPR

La estructura de árbol binario, permitirá cuando llegue el momento de la

descompresión, una decodificación también instantánea, ya que se irá

analizando uno por uno los bits del archivo comprimido, a partir de la raíz del

árbol, hasta encontrar una hoja. Siempre se realizará la decodificación de

una palabra código desde la raíz del árbol. Estos conceptos se analizarán

más adelante en el proceso de la descompresión

Capítulo /// 77

Page 88: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

3.1.2 COMPRESIÓN CON EL CÓDIGO BNO

E! código BNO, por definición es un código no unívoco no instantáneo, y no

recursivo, por consiguiente a primera instancia no sería procedente utilizar el

método de estructura de árbol en su codificación.

Al aplicar un árbol de decisión para codificar un código no instantáneo, se

debería disponer de un algoritmo especial para decodificar la información de

tal forma que, una vez delimitada una palabra código, no empiece la

decodificación desde el principio del árbol, sino que vaya a un sitio apropiado

dentro del árbol de decisión.

Es decir no se debe examinar como en el caso del código Huffman, ya que

en la codificación BNO algunas palabras código son prefijos de otras.

El árbol así conformado podría requerir posiblemente un espacio de

almacenamiento inmenso, e involucrarían algoritmos con gran complejidad.

Razón por la cual se realizará un análisis para añadir banderas entre las

palabras código, esto involucra examinar detalladamente ciertos conceptos a

utilizar en los procedimientos de codificación y decodificación:

PROCEDIMIENTO PARA LA CODIFICACIÓN

Como se mencionó en el capítulo II, la codificación BNO se basa en la

expresión matemática 2n; el desarrollo de esta potencia se muestra en la

tabla 3-1.

Capitulo Ifl 78

Page 89: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TABLA 3-1

Generación de los parámetros del Código BNO

2n

21

22

23

Secuencia generada

2 01

4 00011011

8 000001010011100101110111

Este diagrama, permite encontrarlas palabras código. Realizando un análisis

de la tabla BNO (descrita en el capítulo II), se puede establecer que:

• la 1° palabra código es, el número O representado con 1 bit

• la 2° palabra código es, el número 1 representado con 1 brt

• la 3° palabra código es, el número O representado con 2 brt

• la 4° palabra código es, el número 1 representado con 2 bit

• la 5° palabra código es, el número 2 representado con 2 bit

• la 6° palabra código es, el número O representado con 3 bit

• la 7° palabra código es, el número 1 representado con 3 brt

• la 8° palabra código es, e! número 2 representado con 3 bit

• la 9° palabra código es, el número 4 representado con 3 bit

• la 10° palabra código es, el número 5 representado con 3 bit, etc.

Capítulo III 79

Page 90: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Entonces, si se define dos parámetros nby Neq tales que:

nb = Número de bits de la palabra código

Neq = Número en binarlo, representado con nb bits.

Cada palabra -código será igual a la secuencia binaria del número Neq

representado con nb bits. Por definición, no serán tomados en cuenta las

secuencias que contengan 1's seguidos. La tabla BNO corresponderá a

siguiente par de elementos:

de tal forma que se dará una correspondencia según se puede observar en

la tabla 3-2

TABLA 3-2

Parámetros para generar el Código BNO :

(nb;Neq) BNO

(1;Q) ->( 1;1 ) ->( 2;0 ) ->(2;1 ) ->( 2;2) ->(3;0) ->( 3;1 ) ->( 3;2) ->etc.

01 :000110000001010

La conclusión que se deriva de éste análisis es que, para generar !a palabra

código BNO, bastará con indicar 2 parámetros, uno para determinar la

Cap/tufo III 80

Page 91: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

longitud de la palabra código y otro para indicar la secuencia de O's y 1's

necesarios con esa longitud, es decir: Asignar los parámetros nby Neq.

PROCEDIMIENTO PARA LA DECODIFICACIÓN

Debido a que las característica principal del código BNO, es que no deben

existir unos seguidos en ta palabra código, se aprovecha esta particularidad

para incluir cierta cantidad de 1's como bits de bandera, será un indicativo

claro y conciso el encontrar más de dos 1's seguidos.

En primera instancia, se puede pensar en la inclusión de dos 1's consecutivos

entre las palabras código; se analiza los casos que podrían presentarse:

A) La inclusión de dos 1's entre una palabra código que termine en CERO y

una palabra que empiece con CERO.

B) La inclusión de dos 1 's entre una palabra código que termine en CERO y

una palabra que empiece con UNO.

C) La inclusión de dos 1's entre una palabra código que termine en UNO y

una palabra que empiece con CERO.

i]n[o

Capitulo III 81

Page 92: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

D) La inclusión de dos 1's entre una palabra código que termine en UNO y

una palabra que empiece con UNO.

Los caso A y D, son fácilmente decodificables; como no debe existir 1's

seguidos en una palabra código BNO, ese número par de 1's, limita

perfectamente el final de una de ella y el principio de la otra.

En el caso A, existen dos 1's consecutivos, y sin confusión alguna se nota

claramente que la primera palabra código termina en CERO y la siguiente

empieza con CERO.

En el caso D, existen cuatro 1's seguidos, el segundo y tercer 1's constituyen

los bits de bandera, y limitan inconfundiblemente la primera palabra código,

indicando que termina en UNO; los siguientes dos bits forman parte de la

segunda palabra código, que empieza con UNO.

Los caso B y C, no son fácilmente decodificables, puesto que al

considerarles como una secuencia continua, surge ambigüedad en identificar

los bits de bandera, y por consiguiente también al identificar las palabras

código.

secuencia continua 01110

Aí encontrar los dos 1's consecutivos se puede pensar que la palabra código

termina en CERO, y la siguiente empieza en UNO, se puede optar por el

Capítulo III 82

Page 93: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

caso B. Pero también podría ser que la primera palabra código termine en

UNO y la siguiente empiece con CERO; se trata del caso C.

Este análisis lleva a la conclusión de que no resulta un buen método para la

decodificación incluir solamente dos 1's entre las palabras código, sino que

se requiere más de dos bits de bandera.

Como el problema surge principalmente en los casos B y C, se los examina

con más detalle:

1. Cuando la secuencia se originó al separar una palabra código que terminó

en CERO con otra que empezó con UNO.

1010]! 1[1001

Se puede pensar, añadir después de los bits de bandera, un dígito

Indicando que la primera palabra código termina en CERO; podría ser un

byte que represente al número CERO.

1010]11(00000000}[1001

Entonces, después de toparse con dos 1's consecutivos, se leerla un

byte y sí representa al número CERO, la primera palabra código

terminaría en CERO.

2. Cuando la secuencia se originó al separar una palabra código que terminó

en UNO con otra que empezó con UNO.

00l]ll[0001

Capítulo III 83

Page 94: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Para este caso se puede añadir un byte que represente al dígito UNO;

indicando que la primera palabra código termina en UNO.

00l]ll(0000000l)[0001

Entonces, al toparse con dos 1's consecutivos se leerla un byte a

continuación, si representa al número 1, significa que la primera palabra

código termina en 1; al adoptar esta solución se tendría las siguientes

secuencias binarias:

101011000000001001

00111000000010001

La primera secuencia se confunde con el caso A, antes mencionado; y la

segunda secuencia se trata del caso C, en el cual persiste ia

ambigüedad.

Sin embargo, éste análisis permitió crear un método al que se lo denomina:

inclusión de cola de bits, a continuación se explica detalladamente.

MÉTODO DELIMITADOR DE LA PALABRA CÓDIGO

De todo el análisis hecho anteriormente, se desprende la necesidad de

completar una secuencia de tres 1's cuando !a palabra termine en CERO, y

seguidamente añadir el bit CERO que indicará que la palabra efectivamente

termina en CERO. Cuando la palabra termine en UNO, se completaría la

secuencia de tres 1's añadiendo dos 1's más, y a continuación se añadiría el

bit UNO para indicar que la palabra efectivamente termina en UNO.

Capítulo III 84

Page 95: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Por lo tanto, cuando termine una palabra código en CERO, se añade: tres 1 's

y un cero; cuando termine en UNO, se añade tres 1 's . se representa así

Palabra código que termina en CERO

Palabra código que termina en UNO

Para decodificar las palabras código, dentro de una secuencia continua de

bits; se toma los primeros tres 1ls consecutivos, se lee el siguiente bit, si el bit

leído es O, entonces la palabra código anterior a los bits de bandera termina

en CERO, y si el bit leído es 1 , entonces la palabra código anterior termina

en UNO.

Ejemplo: Si se tiene la secuencia binaria: 0001110010111101, la limitación

de las palabras código sería:

• Primeros tres 1's consecutivos:

000111)0010111101

• Se lee el siguiente bit

ooom>(o)oioimoi

• Como se trata de un CERO, entonces la primera palabra código termina

Capítulo lll 85

Page 96: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

en cero:

000 m>(o)oi0111101

Se continúa la lectura después del bit O entre paréntesis, hasta encontrar

tres 1 's consecutivos.

000|lll)(o)010111)101

Se lee el siguiente bit:

* En este caso se trata de un UNO, entonces la segunda palabra código

termina en un UNO:

|ooo|iii>(o)oioin>(i)oi

Los dos úttimos bits, constituyen la tercera y úttima palabra código de esta

secuencia binaria:

1 JL1° 2°

Capitulo III 86

Page 97: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Este proceso continúa en forma cíclica, hasta terminar con ia lectura del

archivo comprimido, finalmente se ha reconstruido el archivo fuente.

3.2.2 DESCOMPRESIÓN CON EL CÓDIGO BNO.

Primeramente, se crea la lista de ocurrencia con los datos de frecuencia y

carácter que contiene la cabecera. Se completa esta lista con la asignación

de los parámetros nb y Neq, los cuales en el proceso de descompresión

sirven para identificar el símbolo comprimido.

El siguiente proceso consiste en leer ia información comprimida, y en

decodificario con la ayuda de los bits de bandera; una vez identificada la

palabra código BNO se calculan sus parámetros (nb y Neq). Con estos dos

valores se realiza una búsqueda dentro de la lista de ocurrencia; el elemento

de ia lista que posea los mismos valores de nb y Neq contendrá el ASCI! del

símbolo fuente.

El cálculo de los parámetros nb y Neq a partir de la palabra código, consiste

en transformar esa información binaria en información decimal. El número en

decimal resultante es el valor de Neq, y la longitud de la palabra código es el

valor de nb.

Este procedimiento continúa hasta terminar con la lectura de todo el archivo

comprimido; como resultado final se obtiene un archivo totalmente

descomprimido e igual al original.

3.3 IMPLEMENTACIÓN DEL PROGRAMA.

Capitulo III 93

Page 98: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

En esta parte de la tesis, se explica en que forma se aplicó la teorfa expuesta

en los capítulos anteriores para conseguir la compresión y descompresión de

archivos de texto, tanto con el código Huffman como con el código BNO.

3.3.1 DIAGRAMAS DE FLUJO

Debido a que el lenguaje C es un lenguaje estructurado los diagramas de

flujo que se realizan obedecen a esta característica; el lenguaje permite la

compartimentalización de código y datos, esto significa que el lenguaje

puede separar y esconder del resto del programa toda la información y las

instrucciones necesarias para realizar una tarea específica.

En C++ todas las subrutinas son funciones discretas; son los bloques de

construcción del lenguaje C en los cuales tiene lugar toda la actividad del

programa, por lo tanto este tipo de diagramas de flujo que se introduce

permite entender con una lógica más fácil la estructura del programa en C++

Para una mejor comprensión de los diagramas de flujo, se hace una breve

descripción de los símbolos utilizados.

Un rectángulo:

Representa los datos, tales como nombre, directorio y drive, en el que se

encuentra los archivos a manejarse.

Una circunferencia o elipse:

Capítulo (II 94

Page 99: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Representa un proceso a ejecutarse, es decir un conjunto de fases sucesivas

de una operación determinada.

Dos líneas paralelas:

Representan un medio de almacenamiento, el archivo donde se almacenará

la información, pudiendo ser un espacio de! disco duro, o un diskette, etc.

A más de estos símbolos, las líneas rectas y oblicuas, indican flujo de

información hacia donde apunten las flechas.

A) DESCRIPCIÓN DEL SISTEMA:

A continuación se explica el diagrama de bloques mostrado en la figura 3-1;

sobre la descripción general del sistema a Implementarse.

Compresión

Programa que permite comprimir con uno de los dos métodos:

* Código Huffman, ó

* Código BNO

Se obtendrá un archivo comprimido, sin destruir el archivo fuente.

Se implementa en El Lenguaje C++.

Capítulo III 95

Page 100: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

FIGURA 3-12

DESCRIPCIÓN DEL SISTEMA

Inicio

Descompresión

Programa que permite descomprimir archivos; identifica automáticamente el

código utilizado para ia compresión, y sobre este código realiza la

descompresión, todo esto se ¡mplementa en El Lenguaje C++.

B) COMPRESIÓN UTILIZANDO EL CÓDIGO HUFFMAN

1. DIAGRAMA DE FLUJO GENERAL PARA LA COMPRESIÓN

Se explica a continuación las siglas respectivas y el diagrama de flujo, según

la figura 3-13

SIGLAS:DFDAC

Datos fuentesDatos ArchivosCaracteres

Capitulo III 96

Page 101: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

LALCCCACAAPLCLHRF

Lista de datos de archivoListaCódigo comprimidoCaracteres a comprimirÁrbolÁrbol en procesoLista de códigoLista de Hojas de Referencia.Final

FIGURA 3-13

COMPRESIÓN HUFFMAN

P3 T2

Fuentes/nA \a

GenerarCódigo deCompresión

Al

ArchivoFuente

Fuentes (T1).

Se refiere a los datos que definen a los archivos fuentes, sus nombres,

extensiones y fos directorios donde se encuentren ubicados. Es decir datos

del archivo ejecutable, del archivo a comprimir y del archivo comprimido.

Verificación de Fuentes (P1)

Capitulo ¡II 97

Page 102: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Sentencias que permiten la verificación de los datos que definen a los

archivos fuentes, para comprobar su existencia, y decidir si se continúa o no

con el proceso de compresión. Ingresa a este proceso los datos que definen

al los archivos fuentes.

Generar lista de ocurrencias (P2)

Con este proceso se obtiene la frecuencia de ocurrencia de cada carácter,

examinando ei archivo fuente a comprimir. Se genera una Lista de Hojas de

Referencia que permita obtener una mayor velocidad en el proceso de

compresión; por medio de esta lista se accede rápidamente hacia la hoja del

árbol que contenga e! carácter a comprimir, y se obtiene en forma dinámica

la palabra código correspondiente. Este proceso hace uso de los datos del

proceso P1, y da como resultado una lista de ocurrencias y una lista de hojas

de referencia.

Archivo Fuente (A1)

Constituye el texto que se comprimirá; tiene la extensión TXT como parte del

nombre, para Indicar que se trata de archivos con código ASCII, esta

requerimiento en el nombre de! archivo es opcional. Se accede dos veces a

este archivo tipo texto, la primera vez para generar la lista de ocurrencias, y

la segunda vez para generar el código de compresión.

Archivo Comprimido (A2)

Este archivo es el resultado de comprimir el archivo fuente y lleva como

extensión .CPR , con !o cual es fácil de identificarlo en el proceso de

Capítulo III 98

Page 103: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

verificación de fuentes. En primera instancia se guarda la lista de datos del

archivo original, resultantes del proceso P2, y después el código comprimido

resultante de! proceso P4-.

Generar el Árbol de Código (P3)

Este proceso constituye en si, la codificación Huffman, el cual construye un

árbol binario utilizando la definición del código Huffman. La estructura de

árbol sirve para encontrar cada una de la palabras código de longitud

variable, de tal manera que puedan ser utilizada con la mayor eficiencia en el

proceso de compresión. Se hace uso de la Lista de ocurrencia y de la lista de

árboles. Dando como resultado el árbol de codificación, y la lista de hojas de

referencia debidamente direccionada, y un archivo reporte.

Generar código de Compresión (P4)

Con este proceso se obtiene el archivo comprimido, haciendo uso de los

datos del proceso P3. Como datos se utilizan los caracteres a comprimir, la

lista de hojas de referencia, el árbol de codificación; como datos de salida se

tiene los caracteres comprimidos.

Screen Video (T2)

Muestra una ventana de presentación, en ta cual se indica en forma

secuencial ios procesos que se están realizando y despliega el tiempo de

ejecución de los procesos P2, P3 y P4.

Capitulo Hl 99

Page 104: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Selector de mensajes (T3)

Controla los mensajes de error y mensajes indicativos durante el proceso.

2. DIAGRAMAS DE FLUJO DE CADA UNO DE LOS PROCESOS

VERIFICACIÓN DE FUENTES:

FIGURA 3-U

VERIFICACIÓN DE FUENTES

VERfTCAR

NAO ^ \O FUENTE

"NDO

VEÍFICAR

¿flCHIVO DESTWO

Datos Fu«nt« ^f DIVISOR

D€ DATOS^ /

AD

SIGLAS:NAO: Nombre del Archivo OrigenNDO: Nombre del Directorio OrigenNAD: Nombre del Archivo DestinoNDD: Nombre del Directorio Destino

TO: Tamaño origen

ALGORITMO EN PSEUDOCODIGO:

Recibe los datos fuentes. Al entrar al Divisor de datos, se clasifica:El nombre archivo origen y directorio origenEl nombre archivo destino y directorio destinoSi no existe el directorio origen ni el archivo origen =>Emite mensaje de error "EDO"

Capitulo ¡II 100

Page 105: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Salir del proceso de compresión

SÍ no existe el directorio destino =>Emite mensaje de error "EDD"Salir del proceso de compresión

En caso de que todo este bien, se pondrá ta siguiente información:TO = Determinar tamaño de archivo de origenAO = Directorio origen + archivo origenAD = directorio destino + archivo destinoRetomarlo, AO y AD.

GENERAR LISTA DE OCURRENCIAS:

FIGURA 3-15

GENERACIÓN DE LISTA DE OCURRENCIAS

Datos de arcNvo

EscrttLrade cabecerad* archivocomprimido

Generartóa de hojasde relerencia

Lista

SIGLAS:TO: Tamaño origenDO: Directorio origenAO: Archivo origen

Capitulo III 101

Page 106: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

DD: Directorio destinoAD: Archivo destinoLHR: Lista de Hojas de Referencia

ALGORITMO EN PSEUDOCODIGO:

AO = Preparar archivo origenMientras !EOF(AO), hagaC = Lee carácter de AOAñade C a lista de ocurrenciaAD = Crear archivo destinoEscribir en AD el nombre de archivo origenEscribir en AD el tamaño de archivo origenEscribir en AD el modo de compresión

Mientras no fin de lista, hagaLeer miembro de listaEscribir carácter + frecuencia en ADRetome lista y descriptor AD

GENERAR EL ÁRBOL DE CÓDIGO:

FIGURA 3-16

GENERACIÓN DEL ÁRBOL BINARIO

Arboi en desarroio

Árbol

ALGORITMOS EN PSEUDOCODIGO:

L = Capta listaLHR = Capta lista de hojas de referencia

Capítulo ¡II 102

Page 107: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Mientras no termine de leer elementos de L, haga:Crea "Refhoja""Refrioja" apunta a una hojaAñade "Refhoja" a "Lista de direcciones"Siguiente hojaA = Código Huffman (L)retoma (A)

GENERAR CÓDIGO DE COMPRESIÓN:

FIGURA 3-17

GENERACIÓN DEL CÓDIGO DE COMPRESIÓN

hacia ]Qpacialla

INGRESOABUFFERDEBíTSARCHIVO

FUBCTE

ALGORITMOS EN PSEUDOCODIGO;

ARCHIVOCCM^MDO

Toma árbolToma lista de hojas de referenciaAbre archivo fuente y prepara archivo destinoInícíalizar buffers-códlgoGenerar código (Árbol, lista hojas ref, archivo fuente) => archivo destinoCierra archivo fuente, archivo destinoElimina buffer-códlgoElimina árbolretoma final

Capítulo III 103

Page 108: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

ARCHIVOS FUENTE

* Tipo Texto

* Código ASCII

* Nombre de archivo con extensión .TXT (opcional)

* Tamaño en bytes

ARCHIVO COMPRIMIDO

* Formato completo:

FIGURA 3-18

FORMATO DEL ARCHIVO COMPRIMIDO

MétodoCompresión

CódigoComprimido(mfaytes)

Tamaño Usta deOrtghal Ocirren(4 bytes) (n bytes)

El archivo comprimido consta de dos partes fundamentales: cabecera y

código comprimido.

En la cabecera se guarda la siguiente información:

Capitulo III 104

Page 109: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

• Tamaño original, variable dimensionada con 4 bytes para almacenar

el tamaño del archivo fuente.

• Método de compresión, la dimensión de ésta variable es de un byte,

en este espacio se almacenará una H ó una B, dependiendo si el

código utilizado es Huffman o BNO respectivamente.

HUFFMAN = H

BNO =B

» Lista de ocurrencias; ocupa n bytes, cada elemento de ésta lista

contiene ei carácter con su respectiva frecuencia. Como limitador del

fin de la lista se pone un carácter con frecuencia Igual a cero.

Cada símbolo ASCII se guarda en una variable de 1 byte, y para la

frecuencia la variable entera es de 4 bytes.

En el código comprimido se almacena la secuencia de las palabras

código correspondientes a los símbolos fuente.

LISTA DE HOJAS DE REFERENCIA:

En la figura 3-19 se muestra fa lista de hojas de referencia; almacena

los punteros a las hojas del árbol; se la crea en memoria RAM.

Capítulo III 105

Page 110: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

FIGURA 3-19

LISTA DE HOJAS DE REFERENCIA

Bemertü cia laLteta de Hojas cié Retsroncla

•É—^ -9

char trac •* char trec

^-±

*—

' A

— >

í/n-^Hoja

3. DIAGRAMA DE FLUJO GENERAL PARA LA DESCOMPRESIÓN

FIGURA 3-20

DESCOMPRESIÓN HUFFMAN

A1

Generarel árbol de

código

Lecturade

Encabezado

DescomprimirArchivo

A2Archivo

Descomprimido

SIGLASDFDAC

Capitulo ¡II

Datos fuentesDatos Archivos Comprimidos

106

Page 111: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

LAECCASA+ASACF

Lista de datos de archivoEncabezadoCódigo comprimidoÁrboiSeñal de Avance + árbolSeñal de AvanceCaracteresFinal

Lectura de encabezado (P2)

Este proceso constituye el primer paso de la descompresión, ya que

proporciona los datos particulares tanto del archivo comprimido como

del código utilizado.

Archivo Comprimido (A1)

Constituye el texto que se descomprimirá; tiene la extensión CPR para

indicar que se trata de un archivo comprimido, parámetro válido en el

proceso de verificación de fuentes.

Archivo Descomprimido (A2)

Este archivo es el resultado de la descompresión, lleva como extensión

del nombre .DES.

Generar el Árbol de Código (P3)

La estructura de árbol en este proceso, sirve para decodíficar las

palabras código recorriendo el árbol conforme aparezcan los bits O's y

1's que resulten de examinar el archivo comprimido;

Capitulo III 107

Page 112: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Descomprimir archivo (P4)

Con este proceso se obtiene el archivo original, haciendo uso de los

datos proporcionados al examinar el árbol generado en P3.

C) COMPRESIÓN UTILIZANDO EL CÓDIGO BNO

1. DIAGRAMA DE FLUJO GENERAL PARA LA COMPRESIÓN

FIGURA 3-21

COMPRESIÓN BNO

Generar \Cy Asignar » "*•parámetrosde) código

GenerarCódigoCompresión

ArchivoFuente

P5

SIGLAS:DF : Datos fuentesDA : Datos ArchivosC : CaracteresLA : Lista de datos de archivo

Capitulo III 108

Page 113: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

L : ListaCC : Código comprimidoCAC: Caracteres a comprimirLC : Lista de códigoLB : Lista de bits con BNOF : Final

A continuación se explica solamente los procesos que difieren de los

utilizados con el código Huffman.

Generación y Asignación de parámetros del Código BNO (P3)

Este proceso, asigna para cada carácter de los elementos de la lista de

ocurrencia un par de variables nb y Neq ; representan los parámetros

con que se generarán posteriormente las palabras código.

Generar código BNO (P4)

Este proceso genera una por una las palabras código haciendo uso de

los resultados del proceso P3, mediante la manipulación de bits;

almacena cada una de las palabras código en una lista de bits. Además

enlaza los bits de bandera a cada palabra código, con lo cual se obtiene

una secuencia continua de la palabra código junto con la cola de bits.

Generar código de Compresión (P5)

Con este proceso se obtiene el archivo comprimido, haciendo uso de

los datos proporcionados por el proceso P4.

2. DIAGRAMA DE FLUJO PARA LA DESCOMPRESIÓN

CapftutoIH 109

Page 114: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

A continuación se explica solamente los procesos que difieren del

proceso de compresión BNO, según la figura 3-22, así como también el

significado de las siglas respectivas.

FIGURA 3-22

DESCOMPRESIÓN BNO

Puíntfts

TI

Al

SIGLAS:DFDACLAECCSA+LBSACF

Datos fuentesDatos Archivos ComprimidosUsía de datos de archivoEncabezadoCódigo comprimidoSeñal de Avance •+• Lista de BitsSeñal de AvanceCaracteresFinal

Descomprimir archivo (P4)

Capítulo III 110

Page 115: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Con este proceso se obtiene el archivo original; se logra decodificar la

información binaria (archivo comprimido) comparándola con los

resultados del proceso P3.

3.3.2 DEFINICIONES FUNCIONALES

Se crea un total de cuatro programas ejecutables:

• Huffman Para la compresión con codificación Huffman

• Huffdes Para la descompresión con codificación Huffman

• Bno Para la compresión con codificación BNO

• Bnodes Para la descompresión con codificación BNO

Los programas ejecutables Huffman y Bno; generan a más del archivo

comprimido con extensión .CPR, un archivo adicional, el cual se fe llamará

archivo reporte; se le asigna el mismo nombre del archivo fuente y se le

añade la extensión .RPT.

Los programas ejecutables Huffdes y Bnodes, generan el archivo

descomprimido totalmente en binario, añadiendo la extensión .DES al

nombre del archivo.

El archivo reporte, ofrece la facilidad de contar con los resultados tanto de la

codificación como de ¡os cálculos realizados sobre ciertas propiedades

fundamentales; de la fuente de información , y del código utilizado.

Capítulo III 111

Page 116: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

3.3.3 PRUEBAS DEL PROGRAMA

De acuerdo al dimencionamiento de la cabecera del archivo comprimido, se

clasificó ios archivos texto dentro de cuatro categorías:

1. Archivos texto con tamaños menores o iguales a 10 Kbytes.

2. Archivos texto con tamaños entre 10 y 25 Kbytes

3. Archivos texto con tamaños entre 25 y 50 Kbytes

4. Archivos texto con tamaños mayores a 50 Kbytes

En función de ésta clasificación se seleccionó un total de 15 archivos, con e!

propósito de obtener una variabilidad de ocurrencia de los caracteres ASCII,

se escogieron archivos de diferentes tópicos, tale como archivos resultantes

de programaciones y archivos de documentación escrita. A continuación se

muestra en la tabla 3-3:

La información que contienen los archivos reportes (ver tabla 3-4-) como

efecto del proceso de compresión con el código Huffman y BNO, es la

siguiente:

1. Un listado en el que se indica: la representación gráfica del símbolo, su

valor en ASCII, la frecuencia, la probabilidad, la cantidad de información

que genera et símbolo fuente, la longitud de la palabra código en bits, y la

palabra código. Esto especialmente con la codificación Huffman; con la

codificación BNO, se añada a fa longitud de la palabra código la cantidad

de los bits de bandera, y tamben se indica lia palabra código

Capitulo íll 112

Page 117: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TABLA 3-3LiSTA DE ARCHIVOS DE PRUEBA

CATEGORÍA

PRIMERA

0<Tamaño<10K

SEGUNDA

10K<Tamafto<25K

TERCERA

25K<Tamaño<50K

CUARTATamafto>50K

NOMBRE DE ARCHIVOS

PRUEBAVITETELAANEXO 1VISUAL

TESMPPLAN1PLAN6

TESIIITESISPLAN3TESIII1TESIV

ACTStSPLAN2

TAMAÑOORIGINAL

[byíes]

15

3.012

9.015

5.7118.664

17.13317.68521.283

28.99030.22832.06141.45948.678

64.75771.960

2. Los valores y cálculos obtenidos de:

• número de caracteres leídos

• número de símbolos ASCII existentes (q)

• tamaño del archivo original

• tamaño del archivo comprimido, que es la suma del tamaño del

encabezado, de la lista de ocurrencias y de! código comprimido;

cada valor se indica por separado, para efectos de

interpretación de resultados

• longitud media de las palabras código

• cantidad de información del archivo fuente

Capítulo til 113

Page 118: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TABLA 3-4a

CONTENIDO DEL ARCHIVO PRUEBA.RPTCOMPRESIÓN CON EL CÓDIGO HUFFMAN

PRUEBATXT

USTADO DE CÓDIGOS Y VALORES DE LOS SÍMBOLOS EXISTENTES

SÍMBOLO ASdl FREC. PROB. l(s) BITS CÓDIGO Huffman

[fl[ ][y]u]n]m]M[0][N][H]IB]

[Vi

[102][32][121][117][110][103][37][73][78][72]

[10][255]

0.1333330.13333300666667

0.0666667

0.06666670.06666670.06666670.06666670.0666667

0.06666670.0666667

Z3Q7Z3Q73.3073.9073.3073.3073.9073.9073.3073.3073.307

3.3073.307

011001000

11111110110111001011101010011000

01010100

NUMERO DE CARACTERES LEÍDOS = 15NUMERO DE SÍMBOLOS EXISTENTES q= 13 [símbolos]

TAMAÑOS DEL ARCHIVO ORiGÍNAL15[bytes]TAMÁ¥QS DELARCHIVO COMPRIMIDO:

ENCABEZADO (Tamaño; Modo); 5 bytesLJSTA (Caracteres, Frecuencias) + fin de feta (F=OJ: 70 bytesCÓDIGO: 7 bytes

LONGITUD MEDIA DE LAS PALABRAS CÓDIGO : 3.8667 [bits/simbolo]CANTIDAD DE INFORMACIÓN : 3.6402 [bits/símbolo]CANTIDAD DE INFORMACIÓN MÁXIMA: 3.7004 [bksAimbolo]EFICIENCIA: 0.33273H(s)n>3X-Hís) = 0.060216RADIO MÁXIMO DE COMPRESIÓN : 1.0165REDUNDANCIA: 0.0)72117TASA DE COMPRESIÓN APARENTE: 546.67 %TASA DE COMPRESIÓN REAL 548.67 %

REDUNDANCIA CON RESPECTO A LA FUENTE ASdl: Q.G60Z16 [bits]

Capítulo ¡II 114

Page 119: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TABLA 3-4b

CONTENIDO DELARCHIVO PRUEBA.RPTCOMPRESIÓN CON EL CÓDIGO BNO

PRUEBAJXT

LISTADO DE CÓDIGOS YVALORES DE LOS SÍMBOLOS EXISTENTES

SÍMBOLO ASCI) FREC. PROB. l(s) BITS B1TS[C+B] CÓDIGO BNO==COD!GO[BNO-*-Bandera]

u[y][u]

M[m][a]

[O]

¡HIIBl

[102)

[321

U21]

[117]

[110]

[109]

[97]

[79]

[78]

[72]

[66]

1101

[2551

0.133333

0.133333

0.0666667

0.0666667

0.0666667

0.0666667

0.0666667

0.0666667

0.0666867

0.0666867

0.06S6667

1 0.0658667

1 0.0686667

2.907

2.907

3.907

3.907

3.Q07

3.907

3.907

3.907

3.907

3.907

3.907

3.907

3.907

0—01110

1==1111

00—001110

01—0111 1

10—101110

000=»0001110

001—001111

oío—oiomo100—1001110

loi—lomi0000—00001110

0001'

0010 =

•0001111

=00101110

NUMERO DE CARACTERES LEÍDOS = 16

NUMERO DE SÍMBOLOS EXISTENTES q- 13 [símbolos]

TAMAVOS DELARCHIVO ORIG1NAU15 [b/Tes]

TAMAVOS DELARCHIVO COMPRIMIDO:

ENCABEZADO (Tamaño; Modo): 5 bytesLISTA (Caracteres, Frecuencias) + fin de lista (F-0): 70 bytes

CÓDIGO: 12 bytes

LONGITUD MEDIA DE LAS PALABRAS CÓDIGO : 6.0667 [bits/símbolo)

CANTIDAD DE INFORMACIÓN : 3.6402 [bjts/slmbolo]

CANTIDAD DE INFORMACIÓN MÁXIMA : 3.7004 [bits/símbolo]

EFICIENCIA: 0,60004

H(s}max-H(s) - 0.060216

RADIO MÁXIMO DE COMPRESIÓN : 1.0166

REDUNDANCIA : 0.39996

TASA DE COMPRESIÓN APARENTE: 680 %

TASA DE COMPRESIÓN REAL: 580%

REDUNDANCIA CON RESPECTO A LA FUENTE ASCII: 0.060216 [brts]

Capitulo III 115

Page 120: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

FIGURA 3-23a

VENTANA DE PRESENTACIÓN, UTILIZANDO EL CÓDIGO HUFFMANCOMPRESIÓN

COMPRESIÓN poi código HUFFMAN

Fases de compresión:

Cargando el archivo PRUEBA.TXT

Generando d Árbol binario de código

Geneíando el reporte en PRUEBA.RPT

Generando el archivo PRUEBA.CPR

0.11 [segundos]

O.QQlsegundos)

0,05[ segundos)

Q.Q6[ segundos]

Tiempo total de proceso: 0.27 [segundos]

FIGURA 3~23b

VENTANA DE PRESENTACIÓN, UTILIZANDO EL CÓDIGO HUFFMAN

DESCOMPRESIÓN

DESCOMPRESIÓN por código HUFFMAN

Fases de descompresión:

Cagando ei aichrvo PRUEBA.TXT

Geneíando el Áfbd binario de cócfcgo

Genefando el reporte en

Geneíando el aicNvo PRUEBADES

0.05[ segundos]

Q\QO[segundo$]

CLCS[ segundos]

Tiempo total de proceso: 0.17 [segundos]

Capitulo Hl 116

Page 121: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

FIGURA 3-24a

VENTANA DE PRESENTACIÓN, UTILIZANDO EL CÓDIGO BNO

COMPRESIÓN

COMPRESIÓN pot código BNO

Fases de compresión:

Cargando d archivo PRUEBA.TXT 0.11 [segundos]

G enerando parémetios de código 0.00(segundos]

Generando el reporte en PRUEBA.RPT O.Q6[segundos]

Generando el archivo PRUEBA.CPR 0.05|segundos]

Tiempo total de proceso: 0.27 [segundos]

FIGURA 3-24b

VENTANA DE PRESENTACIÓN, UTILIZANDO EL CÓDIGO BNODESCOMPRESIÓN

DESCOMPRESIÓN por código BNO

Fases de descompresión;

Cargando el archivo PRUEBA.TXT

Generando parámetros de código

Generando el reporte,....

Generando et archivo PRUEBA.DES

Q,05[segundos]

0.00[segundos]

Q,G6[seguridos]

Tiempo total de pfoceso: 0.17 [segundos]

Capitulo ¡II 117

Page 122: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Capitulo III

_j

TA

BL

A 3

-5C

UA

DR

O G

EN

ER

AL

DE

LA

S P

RO

PIE

DA

DE

S D

E C

OD

IFIC

AC

IÓN

Y C

ON

PR

ES

IÓN

CO

N E

L C

ÓD

IGO

HU

FF

MA

N Y

EL C

ÓD

IGO

BN

O

AC

TS

IS

AN

EX

01

P

LAN

1

PLA

N2

P

LAN

3

PLA

N6

TE

LAC

AR

AC

TE

RÍS

TIC

AS

H

UFFM

AN

B

NO

H

UFFM

AN

B

NO

H

UFFM

AN

B

NO

H

UFFM

AN

B

NO

H

UFFM

AN

B

NO

H

UFFM

AN

B

NO

H

UFFM

AN

B

NO

1C

ON

RE

SP

EC

TO

A L

A F

UE

NT

E D

E IN

FO

RM

AC

IÓN

¿M

otaJ

deC

leí

dosí

mbo

los

q

Tam

año

orig

inal

[by

tes]

Tam

año

enca

beza

do

H(S

)H

(s)

nvxi

mo

Red

unda

ncia

fue

nte

R m

áxim

o

61.8

49 78

64.7

57 400

4,86

48

6,28

541,

4206

1,29

20C

ON

RE

SP

EC

TO

AL

DIG

OT

amañ

o có

digo

Long

itud

med

ia [L

]

Ren

dim

ient

o

Red

unda

ncia

cód

igo

Tas

a co

mpr

esió

n ap

aren

i

Tas

a co

mpr

esió

n re

al

39.0

745,

05

0,96

0,04

63,8

2

60,9

6

61.a

49 7864

.757

400

4,86

48

6,28

541,

4206

1 .2

920

52.5

08

6,79

0,72

0,28

85,5

4

81,7

0

5.51

4 655.

711

335

3,57

066,

0224

2.45

161,

6866

3.20

34,

65

0,77

0,23

64,1

6

61,9

5

5.51

4 65

5.71

133

53,

5708

6,02

242,

4516

1,68

66

42

15

6,12

0,59

0,42

82,5

2

79,6

7

17.2

55 5017

.685 26

0

4,32

145,

6439

1,32

251,

3060

10.3

364,

79

0,90

0,10

61,4

159

,92

17.2

55 5017

.685 26

04,

3214

5.64

391

.322

51,

3060

13.9

616,

470.

67

0,33

82,4

2

80,4

1

69.6

58 5471

.960 28

0

4.43

765.

7549

1,31

731,

2969

42.1

13

4,82

0,92

0,08

60,6

9

58,9

1C

ÁLC

ULO

S C

ON

RE

SP

EC

TO

A L

A C

AN

TID

AD

DE

INF

OR

MA

CIÓ

N Q

UE

SU

MIN

ST

RA

LA

FU

EN

TE

(Lon

gAS

CH

-Lon

gM-x

JA-o

rR

edun

danc

iaF

uenl

ejH

(S)

21,4

325

22,6

016

21,4

325

22,6

016

LCU

LOS

CO

N R

ES

PE

CT

O A

L C

ÓD

IGO

CLo

ngA

SC

It-LJ

Long

AS

CII

(Lon

gAS

CII-

Long

M-x

)Lon

Tas

aCom

pr.A

t=1a

m,c

ód/#

'D

ism

Req

Aim

acen

-CO

DtG

36,8

238

39,1

900

63,1

764

36,8

236

15,1

038

39,1

900

84,8

971

15,1

029

24,7

200

40,7

080

41,9

138

55,3

650

58,0

685

41,9

115

24,7

200

40,7

080

23,5

588

55,3

650

76,4

418

23.5

582

29,4

513

23,4

324

40.1

025

45,9

825

59,9

015

40,0

985

29,4

513

23,4

324

19,0

900

45,9

825

80,9

099

19,0

901

28,0

636

22,8

901

39.7

163

44,5

300

60,2

837

39,7

163

LCU

LOS

CO

N R

ES

PE

CT

O A

L T

AM

O O

RJG

INA

L E

N S

YT

ES

DE

LO

S A

RC

HIV

OS

FU

EN

TE

tam

arto

com

prim

ido

[rea

l]

Tas

aCom

pr.R

Mam

.rea

lA:

dism

inuc

ión

en r

eqA

lmac

f

39.4

7460

,957

1

39,0

429

52.9

08

81,7

024

16,2

976

3.53

861

,950

6

38,0

494

4.55

0

79,6

708

20,3

292

10.5

96

59,9

152

40,0

848

14.2

21

80,4

128

19,5

872

42.3

93

58,9

119

41,0

881

69.8

58 5471

.960 280

4,4

37

65,

7549

1,31

731,

2969

56.6

94

6,49

0,68

0,32

61,5

6

79,1

8

28,0

638

22,8

901

18,8

450

44,5

300

81,1

561

18,8

439

56.9

74

79,1

745

20,8

255

31.0

72 5132

.061 26

54.

5439

5,67

241,

1-28

61

,248

4

18.9

554

,88

0,93

0,07

61,8

6

59,9

5

29,0

950

19,8

963

38,9

988

43,2

013

61,0

035

38,9

965

19.2

20

59,9

482

40,0

518

31.0

72 5132

.061

265

4.54

395,

6724

1,12

861,

2484

25.6

25

6.60

0,69

0,31

83,3

2

80,7

5

29,0

950

19,8

963

17,5

313

43,2

013

82,4

697

17,5

303

25.8

90

80,7

523

19,2

477

20.5

95 5221

.283 27

04,

1938

5,70

041,

5066

1,35

92

12.0

21

4,67

0,90

0,10

59,6

8

57,7

5

28,7

450

26,4

297

41,6

350

47,5

775

58,3

685

41,6

315

12.2

91

57,7

503

42,2

497

20.5

95 5221

.283 27

04,1

938

5,70

041

.506

61,

3592

16.1

34

6,27

0,67

0,33

79,6

5

77,0

8

28,7

450

26,4

297

21,6

625

47,5

775

78,3

394

21,6

606

16.4

04

77,0

756

22,9

244

2.99

8 599.

015

305

3,40

185,

8626

2,48

061,

7293

1.62

54

,33

0,78

0,22

64,3

6

21.4

1

26,4

675

42,1

716

45,8

138

57,4

775

54,2

028

45,7

972

1.33

0

21,4

088

78,5

912

2.99

8 599.

015

305

3,40

185,

8826

2,48

081

,729

3

2.07

25,

53

0,62

0,3

879

,29

26,3

7

26,4

675

42,1

718

30,9

075

57,4

775

69,1

127

30,8

873

2.37

7

26,3

672

73,6

328

Page 123: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

8T

AB

LA 3

-5C

UA

DR

O G

EN

ER

AL

DE

LA

S P

RO

PIE

DA

DE

S

DE

CO

DIF

ICA

CIÓ

N Y

C

ON

PR

ES

IÓN

CO

N E

L C

ÓD

IGO

HU

FF

MA

N Y

EL

DIG

O

BN

O

TES

1II

-iUFFM

AN

B

NO

27.6

76 9328

.990 47

54,

5006

6,53

922,

0385

1,45

29

17.5

115,

030,

900,

10

67,5

262

,04

18,2

600

31,1

735

37,1

825

43,7

425

62,8

175

37,1

825

17.9

86

62,0

421

37,9

579

27.8

76 9328

.990 47

54,

5006

6,53

922,

0385

1,45

29

22.2

02

6,37

0.71

0,29

61,3

578

,22

18,2

600

31,1

735

20.3

575

43,7

425

79,6

456

20,3

544

22.6

77

78.2

235

21,7

765

TES

1II1

HU

FFM

AN

B

NO

39.9

04 9641

.459 50

04,

5290

6,61

472,

0857

1,46

05

26.1

765,

250,

660,

1466

,86

64,3

5

17,3

163

31,5

313

34,3

988

43,3

875

65,6

024

34,3

976

26.6

78

64,3

479

35,6

521

39.9

04 98

41.4

59

500

4,52

90

6,61

472,

0857

1,46

05

31.8

866,

39

OJ1

0,29

81,1

678

,12

17,3

163

31,5

313

20,0

938

43,3

875

79,9

068

20,0

932

32.3

86

78,1

157

21,8

843

TE

SIS

HU

FFM

AN

B

NO

29.0

90 90

30.2

28 460

4,49

656,

4919

1,99

541,

4438

18.2

63

5,02

0,90

0,10

64,3

6

61,9

4

18.8

513

30,7

368

37,2

213

43,7

938

62,7

810

37,2

19

18.7

23

61,9

393

38,0

607

29.0

90 9030

.228 46

04,

4965

6,49

191.

9954

1,44

38

23.1

55

6,37

0.71

0,29

1.18

78,1

2

18.8

513

30,7

368

20,4

050

43,7

938

79,5

978

20,4

022

23.6

15

76,1

229

21,8

771

TE

SíV

HU

FFM

AN

B

NO

46.9

66 115

48.6

78 585

4,43

036,

8455

2,41

52

1,54

51

31.6

11

5,38

0,62

0,18

68,5

5

66,1

4

14,4

313

35,2

816

32,6

950

44,6

213

67,3

061

32,6

939

32.1

96

66,1

408

33,6

592

46.9

66 115

48.6

78 585

4,43

036,

8455

2,41

521,

5451

37.5

91

6,40

0,69

0,31

81,2

878

,43

14,4

313

35,2

816

19,9

613

44,6

213

80,0

388

19,9

612

38.1

76

76,4

256

21,5

744

TE

SM

PH

UFFM

AN

B

NO

16.6

16 7717

.133 39

5

4,32

656,

2668

1.94

031,

4485

9.98

34

,81

0,90

0,10

62,4

5

60,5

7

21,6

650

30,9

616

39,9

313

45,9

166

60,0

734

39,9

266

10.3

78

60,5

732

39,4

268

16.6

18 77

17.1

33 395

4,32

656,

2668

1,94

031.

4485

13.2

496.

380,

680,

3282

,10

79,6

4

21,6

650

30,9

616

20,2

738

45,9

188

79,7

268

20,2

732

13.6

44

79,6

358

20,3

642

VIS

UA

LH

UF

FM

AN

B

NO

8.29

4 63

8.66

432

44,

6045

5,97

731,

3728

1,29

81

5.02

54,

85

0,95

0,05

64,5

0

61,7

5

25,2

638

22,9

669

39,4

175

42.4

438

60,5

660

39,4

14

5.34

9

61,7

382

38,2

618

8.29

4 63

8.66

4

324

4,60

455.

9773

1 .3

728

1,29

81

6.75

56,

520,

710,

2985

,36

61,7

2

25,2

838

22,9

669

18,5

588

42,4

438

81,4

444

18,5

556

7.07

9

81,7

059

18,2

941

VIT

EH

UFFM

AN

B

NO

2.90

2

44

3.01

223

04,

1242

5.45

941,

3353

1,32

36

1.62

9

4,4

90,

920,

0864

.06

61,7

2

31,7

575

24,4

587

43,8

838

48,4

475

56,1

337

43,8

663

1.85

961

,719

8

38,2

802

2.90

2 443.

012

230

4,12

425,

4594

1,33

531,

3238

2.23

9

6,17

0,67

0,33

85,0

8

81.9

7

31,7

575

24,4

587

22,8

500

48,4

475

77.1

537

22,8

463

2.46

9

81,9

721

18.0

279

PR

UE

BA

HU

FFM

AN

B

NO

15 13 15 753,

6402

3.70

040,

0602

1,01

65

73,

670,

990,

01

546,

6754

6,67

53,7

450

1,62

58

54,1

663

54,4

975

46,6

667

53,3

3333

3 8254

6,66

67(4

46,6

667)

15 13 15 753,6

402

3,70

040,

0602

1,01

65 12

6,07

0,60

0,40

580.

0058

0,00

53,7

450

1 ,6

258

24,1

663

54.4

975

60,0

000 20

87

580,

0000

(480

,000

0)

Page 124: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

• cantidad de información máxima

« eficiencia del código utilizado

• redundancia con respecto a la fuente

• radio máximo de compresión de la fuente

• redundancia del código

• tasa de compresión aparente

• tasa de compresión real

Además de estos datos, se muestra una ventana de presentación durante los

proceso de compresión y descompresión; en la cual se indican los tiempos

de ejecución de cada uno de los procedimientos que involucran. (Ver figuras

3-23 y 3-24).

3.4. INTERPRETACIÓN DE LOS RESULTADOS.

Con los datos obtenidos en los archivos reportes, se elabora un Cuadro

General (tabla 3-5), en el cual se incluyen los valores del reporte y los

cálculos necesarios para analizar las propiedades de codificación y

compresión de los archivos de texto, basados en los resultados de los 15

archivos de prueba que se indicaron en la tabla 3-3.

3.4.1. TAMAÑO COMPRIMIDO, MAYOR QUE EL TAMAÑO ORIGINAL

La inclusión necesaria e indispensable de la cabecera, influye en el tamaño

del archivo comprimido, y en lugar de tener como resultado un archivo

comprimido más pequeño que el original, resurta un archivo mayor, para

cierto tamaño de archivos fuentes. (Ver tabla 3-5, en las columnas de:

tamaño comprimido real y tamaño original).

Capitulo III 120

Page 125: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CODIFICACIÓN HUFFMAN&KSÍ)Archivo: Actsis.txt

1Gar

12

0.05 0.1 0.15

PROBABILIDAD0.2 0.25

I (si) Huffman

Capítulo III 121

Page 126: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

O000000

CODIFICACIÓN BNO&l(si)Archivo: Actsis.txt

0.050000 0.100000 0.150000 0.200000 0.250000

i (Si) BNO C/Ban.

Capitulo III 122

Page 127: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Esto sucede debido a que en la cabecera se tienen los siguientes tamaños

de bytes:

1. Para el tamaño y el modo se utilizan 5 bytes

2. Para cada carácter se utiliza 1 byte

3. Para la frecuencia de cada carácter se utiliza 4 bytes

En total se utilizan 5 bytes para guardar la información de cada símbolo

4-. Como se incluye un carácter cualquiera con frecuencia igual a cero para

indicar que es fin de línea, esto ocupa 5 byíes

5. Los puntos 1 y 4- son fijos siempre en cualquier archivo y en cualquier

modo de compresión, por lo tanto existen fijos 10 bytes.

6. SÍ se parte de un archivo de 100 bytes de tamaño, en el cual existen 10

símbolos, con ocurrencia equiprobable; la lista de ocurrencia es de

10x5=50 bytes

7. Sumando los valores del punto 5 y 6, para la cabecera se tiene 60 bytes

8. A esto hay que añadir los bytes utilizados para el código comprimido,

supongamos que resulta una longitud promedio de 3 bits-símbolo como

mínimo, entonces da un total de (3/8)x100=37.5 bytes, aproximando a su

inmediato superior, se tiene un tamaño del código comprimido de 4-0

bytes.

9. Sumado los valores 7 y 8 el archivo comprimido tiene un tamaño de 100

bytes

De acuerdo a éste análisis el archivo fuente es igual al archivo real, tomando

en cuenta condiciones promedio; en casos reales resurta mayor el archivo

comprimido, cuando el tamaño del archivo fuente es menor que 100 bytes.

Capitulo ill 123

Page 128: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Por consiguiente para que el archivo comprimido resulte menor que el original

es necesario que su tamaño sea mayor que 100 bytes, debido a que el

tamaño de la cabecera para estos casos resulta significativamente más

grande que e! código comprimido.

Por lo tanto el tamaño de la cabecera no debe ser comparable con el tamaño

del código comprimido, para lograr una verdadera compresión del archivo;

3.4.2 NÚMERO TOTAL DE CARACTERES LEÍDOS, MENOR QUE EL

TAMAÑO EN BYTES DEL ARCHIVO FUENTE

En el reporte del proceso de compresión (ver tabla 3-5), se observa

claramente que el número de caracteres leídos es menor o igual que el

número de bytes del archivo fuente; esto sucede especialmente cuando los

archivos fueron convertidos a texto, utilizando versiones del DOS superiores a

5.0.

Aquellos archivos originados en un editor de texto, no presentan diferencia

alguna entre el número total de caracteres leídos con el número de bytes del

archivo original.

Este comportamiento se presenta solamente en los archivos tipo texto

originados con versiones de! DOS superiores a 5.0; estos sistemas

operativos introducen un conjunto de bits dinámico al final del archivo con el

fin de poder corregir posibles errores de transmisión o en el uso de los

archivos.

Gráficamente se tiene:

Capítulo III 124

Page 129: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

FIGURA 3-25

CONFIGURACIÓN DE ARCHIVOS TEXTO

•tamaño en bytes del archivo texto

de car aderesconfigLraaónde< fin cte archivo

IFF-2S5«cll

Cuando se pretende leer esa zona, el DOS manda en representación de ese

conjunto, el carácter FF del ASCII, igual al 255.

El tamaño de esa zona es en bits, y su tamaño está en función del número y

tipo de caracteres propiamente de información tipo texto, de tal manera que:

[bits]

FeOf : fin de texto

Nc : número y tipo de caracteres

y, para determinar el tamaño del archivo en bytes, es truncada la zona de

Feof, en la división del número de bits para ocho. (1 byte = 8 bits).

Capitulo III 125

Page 130: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

5-O ai "O

z o Ü

4-

CE O u_ Q Z D

3- 2-

üUK

A3-

26a

Hut

tman

&A

rchi

vo:

Pru

eba

(tota

l)

1 ~ 0.06

0.

07

0.08

0.09

0.

1 0.

11P

RO

BA

BIL

IDA

D0.

12

0.13

0.

14

I (S

i)•»—

H

uffm

an

Page 131: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

"O ET o"

z o o cr O u_ Z Q Z

FIG

UR

A 3

-27a

Huf

fman

Arc

hivo

: T

ela

(tota

l)

0.05

0.1

0.15

0.

2P

RO

BA

BIL

IDA

D

,-JL,

0.25

0.3

ro

•*—

Huf

fman

Page 132: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

9Z L ///

UNID.INFORMACIÓN [bits]

o ro O

IC

SD13

O

OÓCn

~ODOOCD> P

E -*•ioo

pOí

pco

3]O

O

g'rbCD

Z5

gf zftó"

5?°

Page 133: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

O t e oJD i —

i

z o o ce O u_ z Q Z D

12-

10-

Q_ 6- 4- 2- 0-

FIG

UR

A 3

-27c

O

1

Arc

hivo

: T

ela

(sup

erio

r)

0.00

05

0.00

1 0.

0015

0.

002

0.00

25

0.00

3 0.

0035

PR

OB

AB

ILID

AD

ro

(s¡)

Huf

fman

Page 134: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

O a X) ^c C O"

z O Ü ce O ü_ Z)

FIG

UR

A 3

-28a

Arc

hivo

: Vis

ual

(tota

l)

0.00

0000

0.

0500

000.

1000

00

0.15

0000

PR

OB

AB

ILID

AD

0.20

0000

0.

2500

00

OJ o

unI (

si)

Page 135: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

///

IE

£>D

O

oooo

póOíoooo

or^ °O oCD O

CD

— PO *-»> en

oooo

poooo

o

CnOOOO

UNID.INFORMACIÓN [bits}

ro -P* o> CD

O >p PO< oo

(D

o

Page 136: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

S1 •

FIG

UR

A 3

-28C

H

14-

.-*-. (O O O CC O ü_ z Q Z D

12-

10- 8- 6-

4+W \

— 4

-»—

f T

Arc

hivo

: Vis

ual

(sup

erio

r

- 4—

f--

4- 0.00

0 0.

001

0.00

2 0.

003

0.00

4 0.

005

0.00

6 0.

007

0.00

8 0.

009

PR

OB

AB

ILID

AD

M

Huf

fman

Page 137: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

s?10

-

<0 z o ü ce o u_ Q z D

Q_ 6- 4- 2

FIG

UR

A 3

-29

aB

NO

&A

rchi

vo:

Pru

eba

(tota

l)

CH

,

0.06

0.

070.

08

0.09

0.

10

0.11

PR

OB

AB

ILID

AD

0.12

0.

13

0.14

03

m

! ff

í\

I (S

I)D

ioN

U*-

C/B

an.

Page 138: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

C

• —5-

_Q O Ü a: O LJL

.Z Q Z D

FIG

UR

A 3

-30aB

NO

&l(s¡

)A

rchi

vo:

Tel

a (to

tal)

0.00

0000

0.

0500

00

0.10

0000

0.

1500

00

0.20

0000

0.

2500

00

0.30

0000

PR

OB

AB

ILID

AD

M

1 ff

\\

l(si)

D M

r\U

vi'

/*% / n

^

u/o

an

.

Page 139: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

"§=

£f

'J5 z o o ce O ü_ Q Z D

FIG

UR

A 3

-30b

BN

O&

l(sí)

Arc

hiv

o:

Te

la (

infe

rior)

10.00

0

8.00

0-

6.00

0-

4.00

0--

2.00

0-

0.00

0 0.00

00.

050

0.10

0 0.

150

0.20

0P

RO

BA

BIL

IDA

D0.

250

0.30

0

O)

n

1 fr

i\

1 (S

I)D

Mi

kbN

U'-i-'

^ /D

í-LI-1.

A

u/tí

an.

Page 140: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

B

Z O O ce O u_ Q Z D

14-

12-

10- 8- 6- 4- 2

0.00

0000

Arc

hivo

: T

ela

(sup

erio

r)

M¿-

--xT

x

0.00

0500

0.

0010

00

0.00

1500

PR

OB

AB

ILID

AD

0.0

02000

0.0

02500

BN

OC

/Ban

.

Page 141: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

5(O z O o ce O z Q Z Z)

FIG

UR

A 3

-31

a-

Arc

hivo

: Vis

ual

(tota

l)

0.00

0000

0.

0500

00

0.10

0000

0.

1500

00P

RO

BA

BIL

IDA

D0.

2000

00

0.25

0000

co

BN

OC

/Ban

.

Page 142: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

o o> X)

z o o en O LJL

Z D Z D

10 4-

FIG

UR

A 3

-31

bB

&l

Arc

hivo

: V

isua

l (in

ferio

r)

0-0.

0000

00

0.05

0000

0.

1000

00

0.15

0000

PR

OB

AB

ILID

AD

0.20

0000

0.

2500

00

co

• i f

f ;\

KSI)

D M

Í^bN

UH

' O

/D

rM

^k

-K u/b

an.

Page 143: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

O 03 "O

o o

F R

R

A 'V

slr

i I v

Jl \J

i\r

\ \j

I \

sA

rchi

vo:

Vis

ual

(sup

erio

r)14

-

12-

10 8-ce o u_ 2 Q

6- 4-

\>.

X

TX

.

0. 0

000

0. 0

01 0

0.

002

0

0. 0

030

0. 0

040

0.00

05

0.00

15

0.00

25

0.00

35

0.00

45P

RO

BA

BIL

IDA

D

O)

(£>

. /

.V

•-

l(s

i)D

MO

bN

UV

^/Q

j-ir

-i

A

u/b

an.

Page 144: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

s(O z o o ce O LJL Z Q Z D

CO

DIF

ICA

CIÓ

N H

UF

hA

rchi

vo:

Tes

mp.

txt

o.oo

o o.

oso

0.10

00.

150

0.20

0P

RO

BA

BIL

IDA

D0.

250

0.30

0 0.

350

-*- I

(si)

1 H

uttm

an

Page 145: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

8 •o ir

en O u_ Z Q Z

CO

DIF

ICA

CIÓ

N B

NO

&K

si)

Arc

hivo

: T

esm

p.tx

t16

r—1

W

H A

±±

14

Z O Ü

o o.oo

o0.

050

0.10

0 0.

150

0.20

0P

RO

BA

BIL

IDA

D0.

250

0.30

0 0.

350

n

i /^;

\ I(

SI) i

D

t- \

1

bN

U

Ar^

/D

^u/

Dan

.

Page 146: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TABLA 3-10

CUADRO GENERAL SOBRE ELTAMAÑO DE LOS ARCHIVOS.CPR

NOMBRE

PRUEBAVITEANEX01VISUALTELATESMPPLAN1PLAN6TESIIITESISPLAN3TESIII1TESIVACTSISPLAN2

TAMAÑO.TXT

153.0125.7118.6649.015

17.13317.68521.28328.99030.22832.06141.45948.67864.75771.960

TASA COMPRENSIÓNHuffman

546,66761,72061,95161,73821,40960,57359,91557,75062,04261,93959,94364,34866,14160,95758,912

BNO

580,00081,97279,67181,70626,36779,63680,41377,07678,22478,12380,75278,11678,42681,70279,175

TAMANIO.CPRMuí/man

821.8593.5385.3491.930

10.37810.59612.29117.98618.72319.22026.67832.19639.47442.393

BNO

872.4694.5507.0792.377

13.64414.22116.40422.67723.61525.88032.38638.17652.90856.974

Capitulo U! 142

Page 147: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TABLA 3-11

CUADRO GENERAL DE LA DISMINUCIÓNEN LOS REQUERIMIENTOS DE MEMORIA

NOMBRE

PRUEBAVITEANEX01VISUALTELATESMPPLAN1PLAN6TESillTESÍSPLANSTESIII1TESIVACTSISPLAN2

TAMAÑO.TXT

153.0125.7118.6649.015

17.13317.68521.28328.99030.22832.06141.45948.67864.75771.960

DramiReqMemoriaHuffman

(446,667)38,28038,04938,26278,59139,42740,08542,25037,95838,06140,05235,65233,85939,04341,088

BNO

(480,000)18,02820,32918,29473,63320,36419,58722,92421,77621,87719,24821,88421,57418,29820,825

Cantidad ReducciónHuffman

-671153217333157085675570898992

11004115051284114781164822528329567

BNO

-72543

1161158566383489346448796313661361719073

105021184914986

Capitulo llf 143

Page 148: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Razón por la cual, el número de caracteres leídos es diferente al número de

bytes el tamaño del archivo fuente.

3.4.3. GRÁFICOS DE LA CODIFICACIÓN HUFFMAN Y BNO, EN

RELACIÓN AL VALOR TEÓRICO l(»|)

Se representa gráficamente la codificación obtenida con ios códigos Huffman

y BNO, en función de las probabilidades de ocurrencia, de tres archivos

representativos (ver figuras 3-26 hasta 3-31 respectivamente); estas curvas

son comparadas con la curva de unidades de información l(s¡), que puede

suministrar cada símbolo fuente en función de las probabilidades de

ocurrencia. Es decir se compara los bits teóricos frente a los bits codificados,

en función de la probabilidad de ocurrencia.

Para visualizar mejor las características que presentan, se ha dividido los

gráficos totales, en dos partes: superior e inferior; se los identifica con los

literales a), b), y c) respectivamente. A continuación se explica et significado

de estos gráficos:

Con codificación Huffmají

Analizando brevemente ios gráficos de los diferentes archivos de prueba

(figura 3-26 hasta 3-28), puede observarse que las unidades de información

teórico, es menor que las unidades de información resultantes de la

codificación Huffman, para probabilidades considerablemente mayores.

A partir de ciertos valores de p¡, la curva de codificación Huffman fluctúa en

los valores de !(s¡); tendiendo progresivamente a ser menor, mientras se

aproxima a valores de p¡ relativamente menores. Llega un "punto en el cual

Capitulo líl 144

Page 149: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

la curva Huffman se aleja paulatinamente de la curva de l(s¡), cuando los

valores de la probabilidad son considerablemente mucho menores; en estos

casos el comportamiento es asintótico por debajo de la curva de l(s¡).

Con codificación BNO

Esta codificación presenta un comportamiento suigéneris; La curva

estrictamente de codificación BNO está por debajo de la curva teórica de

l(s¡), (figura 3-29 hasta 3-31).

La codificación BNO, empieza muy cerca de los valores teóricos para valores

considerablemente mayores de probabilidad, y paulatinamente se va

alejando de i(s¡) hasta que para valores significativamente menores de p¡ el

comportamiento es asintótico por debajo de la curva de l(s¡).

Sin embargo, por la inclusión de bits de bandera la longitud de cada una de

las palabras código se comporta inversamente a cuando se dispone

solamente la de codificación BNO, especialmente para valores grandes de p¡;

las unidades de información resultan mucho más grandes que las unidades

de información teóricas, y a partir de cierto valor de probabilidad fluctúa al

rededor del valor teórico, hasta decrecer, alejándose de la curva teórica y

proseguir con un comportamiento asintótico por debajo de l(s¡).

3.4.4. CANTIDAD DE INFORMACIÓN CON RESPECTO A LA FUENTE

ASCII

Comparando los valores de la cantidad de información suministrada por el

número de símbolos que hace uso un determinado archivo texto [H(S)J, con

Capítulo ¡II 145

Page 150: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

los valores de la cantidad de información máxima que pueden generar ios

símbolos [H(S)rrtáX]J (tabla 3-5); se observa que ningún archivo fuente genera

la máxima cantidad de información, a lo mucho se acera a tal valor, como

sucede para el archivo PRUEBA.

3.4.5. LONGITUD MEDIA DEL CÓDIGO, MAYOR QUE LA LONGITUD

MÍNIMA

Comparado los valores de la longitud promedio de las palabras código [L], y

la longitud mínima posible que debe alcanzarse cuando el rendimiento del

código es igual a uno [H(S)=L], (tabla 3-5); se observa que ningún valor de la

longitud promedio se iguala al valor mínimo, Solamente para el archivo

PRUEBA llega a aproximarse muy cercanamente.

3.4.6. VALORES DE COMPRESIÓN CON RESPECTO A LA

CODIFICACIÓN

De acuerdo a los valores obtenidos para los diferentes archivo de prueba,

(tabla 3-5); puede notarse claramente que, por lo explicado en los puntos 1 y

2, no debe tomarse en cuenta el tamaño de la cabecera ni el tamaño original

del archivo fuente, para analizar la bondad de la codificación con respecto a

la compresión alcanzada; solamente se considerará el tamaño del código

comprimido y e! número total de caracteres leídos.

De los 15 archivos que se escogieron para las pruebas del programa; se

empieza el análisis con aquellos que tienen la mejor tasa de compresión

(mientras menor sea el porcentaje, es mejor la tasa de compresión); o en su

defecto puede recurrirse a los valores de !a disminución de Jos requerimientos

Capítulo Hl 146

Page 151: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

1 ~~ -b ""

PR

UE

BA

V

ITE

A

NE

XO

1

CO

N R

ES

PE

CTO

A L

A F

UE

NTE

DE

INFO

RM

AC

IÓN

Ü to

tal d

e C

leíd

o 15

2.

902

5.51

4s¡

rnt>

olas

q

13

44

65

Tam

a'o

orig

inal

[byt

es]

15

3.01

2 5.

71 1

Tam

a'o

enca

beza

do

75

230

335

H(S

) 3,

6402

4,

1242

3,

5708

H(s

)nK

dmo

3,70

04

5,45

94

6,02

24R

edun

danc

ia fu

ente

0,

0602

1,

3353

2,

4516

R m

-xJr

no

1,01

65

1,32

38

1,68

66C

ON

RE

SP

EC

TO A

L C

ÓD

IGO

Tam

a'o

códi

go

7 1.

629

3.20

3

Long

itud

med

ia [

L]

3.66

7 4,

489

4,64

7R

endi

mie

nto

0.99

3 0,

919

0,76

8R

edun

danc

ia c

ódig

o 0,

007

0.08

1 0,

232

Tasa

com

pres

ión

apar

54

6,67

0 64

,059

84

,164

Tasa

com

pres

íjín

real

54

6,67

0 61

,720

61

,951

CU

AD

RO

VIS

UA

L TE

LA

8.29

4 2.

998

63

598.

664

9.01

5

324

305

4,60

45

3,40

18

5,97

73

5.88

261,

3728

2,

4808

1,29

81

1,72

93

5.02

5 1.

625

4.84

7 4,

335

0.95

0 0,

785

0,05

0 0,

215

64,5

04

64,3

76

61,7

50

21,4

09

TA

BLA

3-6

GE

NE

RA

L D

E L

AS

PR

OP

IED

AD

ES

DE

CO

DIF

ICA

CIÓ

NY

DE

CO

DIF

ICA

CIO

N

DE

L C

ÓD

IGO

H

UF

FM

AN

TE

SM

P

PLA

N1

PLA

N6

16.6

18

17.2

5577

50

17.1

33

17.6

3539

5 26

0

4,32

65

4,32

14

6.26

68

5.64

391,

9403

1,

3225

1,44

85

1,30

60

9.98

3 10

.336

4,80

6 4,

792

0,90

0 0.

902

0,10

0 0,

098

62

45

0

61,4

08

60,5

73

59.9

15

20

59

5 5221

.283 27

04,

1938

5,70

041

,506

6

1.35

92

12.0

214,

669

0,89

80,

102

59,6

80

57,7

50

TESH

I T

ES

IS

27.8

76 9328

.990

47

54,

5006

6,53

92

2,03

85

1 ,4

529

17.5

115,

025

0,89

60,

104

67,5

2162

,042

29.0

90 9030

.228 46

0

4.49

65

6,49

191,

9954

1,44

38

18.2

635,

022

0,89

5

0,10

564

.362

61,9

39

PLA

N3

31.0

72 5132

.061 265

4,54

395,

6724

1,12

86

1,24

34

18.9

55

4,88

00,

931

0,06

961

,556

59,9

48

TES

II11

39.9

04 93

41

45

950

04,

5290

6,61

472,

0857

1 ,46

05

26.1

78

5.24

30,

863

0.13

766

.855

64,3

48

TES1

V

46.9

66 115

43.6

78 585

4,43

03

6,84

552

41

52

1,54

51

31.6

115,

384

0,82

3

0,17

768

,552

66,1

41

AC

TS1S

61.8

49 78

64.7

57 400

4,86

48

6,23

54

1,42

06

1,29

20

39.0

745,

054

0,96

3

0,03

763

,823

60,9

64

PLA

N2

69.8

58 5471

.960 28

04

43

76

5,75

49

1,31

73

1,29

69

42.1

134,

823

0.92

0

0.08

060

,685

58,9

12C

ÁLC

ULO

S C

ON

RE

SP

EC

TO A

LA

CA

NTI

DA

D D

E IN

FOR

MA

CIÓ

N Q

UE

SU

MIN

STR

A L

A F

UE

NTE

(Lco

gAS

CU

-Lon

gM-x

yi

53,7

45

31,7

58

24.7

20R

edun

danc

laFu

ente

A-ii

1,

626

24,4

59

40,7

08C

ÁLC

ULO

S C

ON

RE

SP

EC

TO A

L C

ÓD

IGO

(Lcn

gAS

CK

-L)L

ongA

S'

54,1

66

43,8

84

41,9

14

(Lon

aAS

CR

ongM

-XJL

54

,498

48

,448

55

,365

TaB

aCor

npr-

A=t

am.c

fl(

46,6

67

56,1

34

53,0

39D

Isrn

Req

Alm

aeen

-CO

53

.333

43

,866

41

,91

1

25.2

84

26,4

6822

,967

42

,172

39.4

18

45,8

1442

,444

57

.478

60,5

86

54,2

03

39,4

14

45,7

97

21,6

65

29,4

5130

,962

23

.432

39,9

31

40,1

03

45,9

19

45,9

8360

,073

59

,901

39,9

27

40,0

99

28.7

4526

.430

41,6

3547

,578

58,3

6941

,631

18,2

60

31,1

74

37,1

83

43,7

4362

.817

37,1

83

18,8

5130

.737

37,2

21

43,7

9462

,781

37,2

19

29,0

9519

,896

38.9

99

43,2

0161

,003

33,9

97

17,3

18

31,5

31

34,3

9943

,383

65,6

0234

,393

14.4

3135

.282

32,6

95

44,6

2167

,306

32,6

94

21,1

3322

,602

36,8

24

39,1

9063

,176

36,8

24

28,0

6422

.890

39,7

1644

.530

60.2

8439

.716

LCU

LOS

CO

N R

ES

PE

CTO

AL

TA

MA

¥0 O

RIG

INA

L E

N B

YTE

S D

E L

OS

AR

CH

VO

S F

UE

NTE

tarn

a'o

com

prim

ido

[re

82

1.85

9 3.

538

Taüa

Com

pr.R

=tam

.re£

546.

667

61,7

20

61,9

51di

smin

ució

n en

reqA

im

(446

,667

1 38

,280

38

,049

TIE

MP

OS

DE

EJE

CU

CIÓ

NE

n la

com

pres

ión

0.27

0 3,

570

6,92

0

En

la d

esco

mpr

esió

n 0,

170

1210

2,

410

5.34

9 1.

930

61,7

38

21,4

09

38,2

62

73,5

91

10,6

50

3,84

0

3,68

0 1,

260

10.3

78

10.5

96

60,5

73

59.9

15

39,4

27

40,0

85

20,2

70

20,2

207,

090

7,19

0

12.2

91

57.7

50

42.2

50

23,7

20

8,40

0

17.9

86

62,0

42

37,9

58

34,9

3012

,200

18.7

2361

.939

38,0

61

36.3

60

13,0

70

19.2

2059

,948

40,0

52

36,8

00

13.4

60

26.6

78

64,3

48

35,6

52

51.5

70

16,2

40

32.1

96

66,1

41

33,8

59

61,9

10

22,4

70

39.4

74

60,9

57

39,0

43

75,5

80

26,6

80

42.3

93

58,9

12

41,0

88

81.2

3029

,490

Page 152: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CO

TA

BLA

3-7

CU

AD

RO

GE

NE

RA

L D

E L

AS

PR

OP

IED

AD

ES

DE

CO

DIF

ICA

CIÓ

N Y

CO

MP

RE

SIÓ

N D

EL

DIG

O B

NO

PR

UE

BA

V

ITE

A

NE

1

VIS

UA

L TE

LA

TE

SM

P

PLA

N1

P

LAN

6 TE

SIII

TE

SIS

P

LAN

3 TH

SHI1

T

ES

IVA

CT

SIS

P

LAN

2

CO

N R

ES

PE

CT

O A

LA

FU

EN

TE D

E IN

FO

RM

AC

IÓN

# to

tal b

e C

leíd

o 15

2.

902

Sím

bolo

s q

13

44

Tam

año

orig

inal

[b><

15

3.

012

Tam

año

enca

beza

d

75

230

H(S

) 3,

6402

4,

1242

H(s

)m-x

Jmo

3,70

04

5,45

94

Red

unda

ncia

fuen

te

0,06

02

1 ,3

353

Rm

-Xim

o 1.

0165

1,

3238

CO

N R

ES

PE

CTO

AL

CO

DK

30T

amañ

o có

digo

12

2.

239

Long

itud

mec

ía [L

] 6,

0667

0 6,

172

Ren

dim

ient

o

0.60

004

0.66

8R

edun

danc

ia c

órfig

c 0,

3999

6 0,

332

Tas

a co

mpr

esió

n ap

58

0,00

0 85

,079

Taea

com

pres

ión

re¡

580,

000

81 ,9

72

5.51

4 65

5.71

133

5

3,57

08

6,02

24

2,45

161.

6866

4215

6,11

50.

589

0.41

6

82.5

1779

,671

8.29

4 63

8.66

4

324

4,60

455,

9773

1,37

281,

2981

6.75

5

6,51

50,

707

0,29

3

85,3

63

81,7

17

2.99

8 59

9.01

5

305

3,40

185,

8826

2,48

08

1,72

93

2.07

25,

527

0.615

0,38

579

,286

26,3

67

16.6

18 7717

.133 39

5

4,32

65

6,26

68

1,94

031,

4485

13.2

496.

378

0.67

8

0,32

2

82.1

0479

,636

17.2

55

20.5

9550

52

17.6

85

21.2

83

260

270

4,32

14

4,19

385,

6439

5,

7004

1,32

25

1,50

66

1.30

60

1,35

92

13.9

61

16.1

346,

473

6,26

70.

668

0,

669

0,33

2 0,

331

82,4

17

79,6

5080

,413

77

,076

27.8

76 93

28.9

90 475

4,50

06

6,53

92

2,03

85

1.45

29

22

20

26,

371

0,70

6

0.29

491

,350

78,2

24

29.0

90 9030

.228

460

4,49

65

6,49

19

1,99

541,

4438

23.1

556,

368

0,7

06

0,29

4

1.17

978

,123

31.0

72 51

32.0

61

265

4,54

39

5,67

24

1,12

861,

2484

25.6

256.

598

0,68

9

0,31

183

,323

80,7

52

39.9

04 98

41.4

59 500

4,52

90

6,61

47

2,08

571.

4605

31.8

866.

393

0,70

8

0,29

281

,160

73,1

16

46.9

66 115

48.6

78 585

4,43

036.

8455

2,41

521,

5451

37.5

916.

403

0,69

20,

308

81,2

8478

,426

61.8

49

69.8

5878

54

64.7

57

71.9

60^4

00

280

4,86

48

4.43

76

62854

5,76

43

1,42

06

1,31

731.

2920

1,

2969

52.5

08

56.6

946.

792

6,49

2

0,71

6

0.68

40,

284

0,31

7

85.5

44

81.5

5781

,702

79

,175

LCU

LOS

CO

N R

ES

PE

CTO

A L

A C

AN

TID

AD

DE

MF

OR

MA

CIO

N Q

UE

SU

MIN

STR

A

LA F

UE

NTE

(Lon

gAS

CR

cogM

-J

53,7

450

31.7

58R

edun

Fue

nte/

KS

Jrr

1 ,6

259

24.4

59C

ÁLC

ULO

S C

ON

RE

SP

EC

TO

AL

DIG

O(L

ongA

SC

KJL

ong;

24,1

663

22,8

50

(Lon

gAS

CH

-Lon

gM-)

54

,497

5 48

,448

Tasa

Com

pr.A

=tam

.<

60,0

000

77,1

54

DIs

rnR

eqA

lmac

erv-

C

20

22,8

46

24,7

2040

.708

23,5

59

55,3

6576

,442

23.5

58

25,2

84

22,9

67

18.5

59

42,4

4481

,444

18,5

56

26,4

6842

,172

30,9

0857

,478

69,1

13

30,8

87

21,6

65

30,9

62

20,2

7445

.919

79,7

27

20.2

73

29,4

51

28,7

4523

.432

26

,430

19,0

90

21,6

63

45,9

83

47,5

78

80,9

10

78,3

39

19,0

90

21.6

61

18,2

60

31,1

74

20,3

58

43,7

4379

,646

20,3

54

18,8

5130

,737

20,4

05

43,7

9479

,598

20,4

02

29,0

95

19.8

96

17.5

3143

.201

82,4

70

17,5

30

17.3

16

31.5

31

20,0

94

43,3

88

79,9

07

20,0

93

14,4

31

35,2

82

19,9

61

44,6

2180

,039

19,9

61

21,4

33

28,0

64

22,6

02

22,8

90

15,1

04

18,8

45

39,1

90

44,5

30

84,8

97

81,1

56

15,1

03

18,8

44C

ÁLC

ULO

S C

ON

RE

SP

EC

TO

AL

TA

MA

VO

OR

IGIN

AL

EN

BY

TE

S D

E L

OS

AR

CH

VO

S F

UEN

TE

tam

año

com

prim

ido

87

2.46

9

Tas

aCom

pr-R

=tam

.l 58

0,00

0 81

,972

dism

inuc

ión

en re

qA

(480

,000

) 18

,028

TIE

MP

OS

DE

EJE

CU

CIÓ

N

En la

com

pres

ión

0,27

0 5,

160

Enla

desc

ornp

resi

ói

0,17

0 4,

280

4.55

0

79.6

71

20,3

29

9,83

0

8,07

0

7.07

9

81,7

06

18,2

94

15,3

8013

,180

2.37

7

26.3

6773

.633

5,60

03,

900

13.6

44

79,6

36

20,3

64

29,9

30

25,6

00

14.2

21

16.4

0480

.413

77

,076

19.5

87

22,9

24

30,3

10

35.5

40

27,0

80

30,9

30

22.6

7778

,224

21,7

76

50,6

4043

,230

23.6

15

78,1

23

21,8

77

52,4

6045

,760

25.8

90

80,7

52

19,2

48

55,4

80

49,6

50

32.3

8678

,116

21.8

84

73,0

50

62,2

30

38.1

76

78,4

26

21,5

74

86.4

50

74,0

90

52.9

08

56.9

74

81,7

02

79,1

7518

,298

20

,825

113.

090

12

2,93

010

2,49

0 10

9,41

0

Page 153: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

de almacenamiento ( mientras mayor sea el porcentaje, es mejor la

compresión alcanzada). Estos dos valores son complementarios, si el uno

baja et otro necesariamente sube y viceversa.

3.4.7 LA EFICIENCIA DEL CÓDIGO

Se comienza analizando el comportamiento de ía eficiencia del código,

debido a que este parámetro teóricamente proporciona la medida de la

compresión, e indica que tan poderoso y apto es el código para realizar la

compresión.

Se observa de acuerdo a ia tabla 3-5, que el archivo TELA es el que mejor

se logra comprimir, tanto con el código Huffman como con el código BNO;

examinemos cual es la razón. Se ha producido dos tablas a partir de tos

datos de la tabla 3-5, del código Huffman y BNO, con la finalidad de prestar

mejor visibilidad para el análisis de las carcterísíicas de cada una de éstas

codificaciones y son ia tabla 3-6 y 3-7 respectivamente.

Para el archivo TELA:

De un tamaño de 2998 bytes leídos, se tiene después de la codificación 1625

bytes (sin incluir la cabecera de archivo). La tasa de compresión con respecto

al código es del 54.20%; implica que la disminución de los requerimientos

para el almacenamiento del código comprimido es del 45.79%.

El valor del rendimiento del código Huffman es igual a 0.78476 y del código

BNO es de 0.61545; por sí solos estos valores no indican que se pueda

comprimir tanto, todo lo contrario, se puede pensar que un rendimiento

Capitulóla 149

Page 154: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

relativamente bajo, no ofrece una buena compresión; sin embargo, esto no

se cumple. Se analiza ciertos archivos que ayudarán a aclarar estas

aseveraciones:

Para el archivo ACTSfS:

Este archivo con un rendimiento del código Huffman igual a 0.962, logra una

tasa de compresión del 63.17%, y la disminución en los requerimientos de

almacenamiento es del 36.82%; no se consigue una gran compresión

correspondiente a la gran eficiencia de código que presenta.

Para el archivo PLAN3:

Observando el rendimiento del código Huffman que es det 0.9311, sucede

algo parecido, se logra una tasa de compresión de 61.0035%, y la

disminución en los requerimientos de almacenamiento es del 38.999%.

Para el archivo TES/V:

El rendimiento del código Huffman es del 0.8228, se logra una tasa de

compresión es de! 67.306%, y la disminución en los requerimientos de

almacenamiento es del 32.693%.

Para el archivo VISUAL Y VITE:

Con rendimientos del 0.95004- y 0.91866 , se da una tasa de compresión del

60.586 % y 56.133% respectivamente.

Capitulóla 150

Page 155: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Todos estos valores de compresión no son óptimos comparados con los del

archivo TELA.

3.4.8. El MÁXIMO RADIO DE COMPRESIÓN

Se examina el comportamiento del máximo radio de compresión con

respecto a la fuente ASCII (tabla 3-5), puesto que se va a demostrar que el

código Huffman al proveer del máximo radio de compresión, se obtiene una

muy buena compresión de los archivos de texto.

Al analizar más detenidamente el porqué de los resultados enunciados

anteriormente, se observa que e! máximo radio de compresión del archivo

TELA igual a 1.7293, es el valor más arto sobre todos ios demás archivos; en

especial sobrepasa a los valores de! máximo radio de compresión de

archivos con rendimientos en ei orden de 0.9

En especial, para los archivos antes mencionados, se construye la siguiente

tabla comparativa, tabla 3-8:

TABLA 3-8

Valores del máximo radio de compresión, de la eficiencia del códigoHuffman

y de la disminución en los requerimientos de memoria

DisminuciónARCHIVOS R^y EFICIENClAHuffman memoria %

ACTSISPLAN3TESIVVISUALVITE

1.2931.24841.54511.29811.3238

0.962540.93110.822810.950040.91866

36.823638.996532.693939.926643.8663

Capftulolll 151

Page 156: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

De este cuadro se observa que el archivo VITE es el que mejor se comprime,

y no e! archivo TESIV que posee el valor más grande del máximo radio de

compresión, igual a 1.5451. Lo que demuestra que no necesariamente los

archivos que dispongan un alto valor de Rmáx serán los que más se

compriman.

De éste análisis, se puede pensar que existe otro parámetro determinístico (a

más dei Rmáx Y ^e 'a eficiencia del código) para obtener resultados óptimos

en la compresión de archivos de texto codificando el alfabeto fuente.

3.4.9 LOS VALORES DE LA LONGITUD MEDIA.

Al examinar, porqué se consigue la mejor compresión de! archivo VITE , se

observa que posee el menor valor de la longitud media, igual a 4.4-893; en

tanto que el archivo TESIV posee el más aito valor de este grupo de

muestras, igual a 5.3844. La tabla 3-9 que se muestra a continuación ayuda a

visualizar los resultados a los que se hace referencia.

TABLA 3-9

Valores del máximo radio de compresión, de la eficiencia del código

Huffman, de la disminución en ios requerimientos de memoria y de la longitud

media.

Disminución LongitudARCHIVOS Rfráx EFICIENCIAHufíman memoria % Media

ACTStSPLANSTESIVVISUALVITE

1.2931.24841.54511.29811.3238

0.962540.93110.822810.950040.91866

36.823638.996532.693939.926643.8663

5.05414.88015.38444.84664.4893

Capitulóla 152

Page 157: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Esto demuestra que el otro parámetro que influye en una óptima compresión

a! codificar el alfabeto fuente, es el valor de la longitud media; a menor

longitud media mejor compresión.

3,4.10. Cantidad de reducción en los requerimientos de memoria

El tamaño del archivo comprimido real, se obtiene multiplicando el tamaño

original en bytes por el porcentaje de la tasa de compresión, esto se indica en

la tabla 3-10; la cantidad en que disminuye los requerimíentoss de memoria,

se obtiene multiplicando el porcentaje de la disminución de los requerimientos

de memoria por el tamaño en bytes dei archivo original, esto se indica en la

tabla 3-11.

Por ejemplo, para el archivo TELA que tiene un tamaño original de 9.015

bytes, a! comprimirlo, obtiene un tamaño de 1.930 bytes, produciéndose

7.085 bytes de reducción en los requerimientos de memoria.

3.4.1. Tiempos de ejecución

Para cada uno de los procesos de compresión y descompresión se presenta

en la tabla 3-12 los tiempos de ejecución en segundos.

De estos valores se nota que para todos los archivos el tiempo de ejecución

de compresión Huffman es menor que el tiempo de ejecución de compresión

BNO, se debe a que para los códigos Huffman se utilizó una estructura de

árbol binario; los árboles binarios son muy especiales ya que, se prestan a

búsquedas, inserciones y borrados muy rápidos, y estos resultados

Capítulo III 153

Page 158: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TABLA 3-12

TIEMPOS DE EJECUCIÓN [segundos]

NOMBRE DE

ARCHIVOS

PRUEBA

VITE

ANEXO1

VISUAL

TELA

TESMP

PLAÑÍ

PLAN6

TESIII

TESIS

PLAN3

TESIII1

TESIV

ACTSIS

PLAN2

TAMAÑO

15

3.012

5.711

8.664

9.015

17.133

17.685

21.283

28.990

30.228

32.061

41.459

48.678

64.757

71 .960

COMPRESIÓN

HUFFMAN

0,22

3,62

6,43

10,60

3,84

20,71

20,49

23,62

35,26

36,42

37,19

51,79

61,84

75,63

55,20

BNO

0,22

5,27

9,99

15,38

5,55

29,99

30,76

55,76

50,27

52,62

55,70

72,72

86,23

113,42

123,64

DESCOMPRESIÓN

HUFFMAN

0,17

1,26

2,53

3,90

1,32

7,25

7,41

8,63

12,25

12,80

13,40

18,73

22,13

27,35

29,60

BNO

0,16

4,40

8,02

13,24

4,01

25,70

27,13

31,14

43,51

45,53

49,93

62,50

74,70

103,31

110,29

comprueban su versatilidad; el tiempo de creación de los árboles binarios

está en el orden de centésimas de segundos, ver tabla 3-13.

La compresión BNO utiliza listas y estructuras de listas por lo cual su tiempo

de ejecución es mayor, está en el orden de decenas de segundos, ver tabla

3-14

Capítulo III 154

Page 159: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

TA

BLA

TIE

MP

OS

DE

EJE

CU

CIÓ

N P

AR

CIA

L Y

TO

TA

L D

E L

OS

PR

OC

ES

OS

DE

CO

MP

RE

SIÓ

N Y

DE

SC

OM

PR

ES

IÓN

CO

N E

L C

OD

ICIO

HU

FF

MA

N

Uni

dade

s; s

egun

dos

AR

CH

IVfl

AC

TS

ISA

NE

XO

1P

LA

N1

PLA

N2

PLA

N3

PLA

N6

PR

UE

BA

TE

LAT

ES

IIIT

ES

III1

TE

SIV

TE

SM

PT

ES

ISV

ISU

AL

VIT

E

CO

MP

RE

SIÓ

NLE

CTUR

A24

,28

2,48

6,5

426

,04

11,8

77,

690,

111,

4912

,36

18,2

422

,02

7,09

12,6

93,

681,

26

3EN

.AR

E0,

050,

050,0

00,

050,0

50,

050,

000,

000,

050,0

50,

060,

050,

050,

000,

00

2RE

A.R

E0,

170,

170,

170,

11 0,11-

0,11

0,05

0,16

0,22

0,22

Of2

70,

170,

220,

170,

16

¡EN

.CO

D51,0

24,1

713

,35

54,9

824,7

215

,82

0,06

2,14

22,2

533

,01

39,5

012

,91

23,3

56,

752,

09

TO

TA

L75

,58

6,92

20

f22

81,2

3-

36,8

023

,72

0,27

3,84

34,9

351

,57

61,9

120

,91

36,3

610

,65

3,57

DE

SC

OM

PR

ES

IÓN

AR

.AR

C0,

060,

060,

060,

060,

050,

050,

050,

050,

050,

050,

000,

000,

050,

060,

00

3EN

.AR

E0,

050,

050,

000,

050,

060,

000,

000,

060,

060,

060,

050,

050,

060,

000,

05

¡EN

.AR

C26

,64

2,25

7,08

29,3

313

,24

8,29

0,06

1,09

12,0

318

,07

22,3

66,

9812

,90

3,57

1,10

TO

TA

L26

,68

2,41

7,19

29,4

913

,46

8,40

0,17

1,26

12,2

018

,24

22,4

77,

0913

,07

3,66

1,21

Page 160: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

8 •o I

TA

BLA

3-1

4

TIE

MP

OS

DE

EJE

CU

CIÓ

N P

AR

CIA

L Y

TO

TA

L D

E L

OS

PR

OC

ES

OS

DE

CO

MP

RE

SIÓ

N

Y D

ES

CO

MP

RE

SIÓ

N C

ON

EL

DIG

O B

NO

ARC

HIV

O

AC

TS

ISA

NE

XO

1P

LAN

1P

LAN

2P

LAN

SP

LAN

6P

RU

EB

AT

ELA

TES

IMT

ES

IIHT

ES

IVT

ES

MP

TE

SIS

VIS

UA

LV

ITE

CO

MP

RE

SIÓ

N.É

ÓtÚ

F^

25,3

22,3

76,8

127

,24

. .1

2,19

7,80

0,11

1,53

12,5

218

,34

22,1

47,

2012

,74

3,57

1,20

GE

NftB

0,06

0,05

0,00

0,00

0,05

0,05

0,00

0,06

0,06

0,06

0,05

0,05

0,05

0,00

0,00

CR

EA

-RE

0,27

0,2

20,

220,1

60,

170,

170,

060,

220,

330.

380,

440,

280,

330,

220,

17

{3E

N.C

OD

87,3

97,

1423

,23

95,4

143

,01

27,4

60,

053,

7337

,67

54,2

163

,77

22,3

539

,28

11,5

43,

73

TOTA

L11

3,09

9,83

30,3

111

2,93

55,4

835

,54

0S27

5,60

50,6

473

,05

86,4

629

,93

52,4

615

,38

5,16

DE

SC

OM

PR

ES

IÓN

íAR

iRC

h0,

110,

000,

000,

000,

000,

050,

000,

000,

000,

000,

000,

000,

000,

000,

00

GE

N.P

AR

0,00

0,06

0,05

0,00

0,00

0,00

0,00

0,06

0,06

0,11

0,11

0,05

0,05

0,00

0.00

SEN

-AR

Ct

102,

277,9

626

,97

109,

3649

,54

30,8

70,

063,

7943

,06

62,0

773

,93

25,4

945

,65

13,0

74,

23

TOTA

L10

2,49

8,07

27,0

810

9,41

49,6

53,

930,

173,

9043

,23

62,2

374

,09

25,6

045

,76

13,1

84,

28

Page 161: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Toda la programación se hizo con asignación dinámica de memoria, para

obtener la tabla de probabilidades en forma dinámica, con el objeto de que la

frecuencia de cada símbolo, represente fielmente de acuerdo a la distribución

de probabilidades particular de cada uno de los archivos texto. Con lo cual se

logra reducir el número de bits requeridos para codificar cada símbolo, y esto

lleva a obtener una mejor tasa de compresión.

Por lo tanto según el número total de símbolos q, se producen demoras en el

proceso de crear la lista dinámica de ocurrencias, pues se crean los.

elementos de las listas de acuerdo al orden de aparecimiento de los símbolos

fuente, razón por la cual en la lectura y creación de la lista se tienen tiempos

de ejecución en el orden de las decenas de segundos, valores

significativamente grandes comparados con los de la creación de la

estructura de árbol binario, ver tabla 3-13 y 3-14.

Cuando se realizan los procesos de descompresión se evitan los pasos de

encontrar las palabras código; en el código Huffman se realiza una

búsqueda desde la raíz hacia cada hoja y este acceso es muy rápido

comparado con encontrar cada palabra código a través de la lista de hojas

de referencia, el archivo es leído una sola vez y permite una decodificación

instantánea a partir de la información binaria, por lo cual los tiempos de

descompresión son mucho menores que en la compresión; y en el código

BNO se realiza solamente la asignación de los parámetros de generación nb

y Neq, mas no la generación de las palabras código en sí, por tal motivo el

tiempo de ejecución en la descompresión también es menor que en la

compresión.

Capitulo III 157

Page 162: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

No existe una relación lineal entre (os tiempos de ejecución con el tamaño del

archivo original como podría pensarse; a; mayor tamaño, mayor tiempo de

ejecución, y viceversa.

Esto no sucede debido a que, por ejemplo el archivo ACTSIS de un tamaño

menor que PLAN2 tiene el tiempo de ejecución mayor igual a 75.58s. ya

que posee un número mayor de símbolos fuente (q=78, q=54

respectivamente) y por lo tanto requiere mayor tiempo en la creación

dinámica de la lista de ocurrencia, la lista de hojas de referencia y el árbol

binario. De igual manera sucede con el archivo VISUAL, de menor tamaño

que el archivo TELA tienen tiempos de ejecución de 10.65s y 3.84s.

respectivamente, dispone de un número mayor de símbolos fuente q=63, en

tanto que para el archivo TELA q=59.

Es decir que los tiempos de ejecución están relacionados con la cantidad de

información disponible antes que con el tamaño del archivo, de todas

maneras si influye ese tamaño cuando se ejecutan el proceso de lectura, y el

proceso de compresión.

Capítulo ¡II 158

Page 163: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CONCLUSIONES Y RECOMENDACIONES

Los programas se basan en aplicar dos cosas: algoritmos y estructuras de

datos, y un buen programa consiste en una combinación de ambos,

entonces, elegir e implementar una estructura de datos es tan importante

como las rutinas que la manipulan. Esta es la razón por la cual, se eligió

cuidadosamente implementar una estructura de árbol binario, que permitió

alcanzar óptimamente la codificación del código Huffman, por tratarse de un

proceso altamente recursivo.

También la decodificación del código Huffman resultó óptima al codificar con

una estructura de árbol, y no fue necesario introducir bits de bandera para

limitar las palabras código; la búsqueda y rastreo en el árbol binario solventó\l problema de la limitación del fin de las palabras código, así como manejar

\n versatilidad la longitud variable de las palabras código.

La codificación Huffman es más eficiente para ía compresión de archivos de

texto, cuando tienen gran cantidad de caracteres con alta probabilidad, caso

contrario solamente se logra comprimir hasta un 40% menos.

El código Huffman resultó más óptimo que e! código BNO, para la

compresión; debido a que no fue necesario incluir bits adicionales para limitar

las palabras código, y además provee el mejor radío de compresión.

El código BNO resultó un buen código de compresión, cuando el archivo

dispone de gran cantidad de caracteres con alta probabilidad, caso contrario

solamente se logra comprimir hasta un 24% menos.

Page 164: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Una propiedad muy importante del código Huffman, es el valor que alcanza

la longitud media del archivo codificado; este es un parámetro determinístico

cuando los valores de la eficiencia del código son relativamente buenos, el

archivo que tenga el menor valor de longitud media, proporcionará la mejor

tasa de compresión.

El valor del máximo radio de compresión posible de la fuente, ayuda a

avizorar que tan buena será la tasa de compresión, ya que su definición

conceptual incluye la probabilidad de cada símbolo, sin embargo por sf sólo

este parámetro no determina la efectiva disminución de los requerimientos de

almacenamiento, cuando se codifica los símbolos fuente; esta disminución

depende principalmente de la eficiencia del código utilizado para la

codificación de los símbolos fuente, y de la longitud de las palabras código.

Por lo tanto se ha podido comprobar que los archivos fuente que proveen el

máximo radio de compresión posible de la fuente pueden ser óptimamente

codificados con el código Huffman (en menor porcentaje también con el

código BNO), que aquellos que no presentan un valor menor del máximo

radio de compresión posible de la fuente. Es e! caso de la compresión

alcanzada con el archivo TELA

En e! caso de que el máximo radio de compresión posible de la fuente, la

eficiencia del código utilizado para la codificación de los símbolos fuente, y la

longitud media de las palabras código, obtengan sus respectivos valores

óptimos, se conseguirá un alto grado de compresión; de no ser así se

compensará la deficiencia de uno de ello con la excelencia del otro y

producirán la mejor tasa de compresión.

160

Page 165: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Con respecto al código BNO, la inclusión de bits de bandera para poder

realizar la decodificación de los símbolos código; aumentan ei valor de la

longitud media, razón por la cual produce menor tasa de compresión que el

código Huffman. Sería aconsejable desarrollar una mejor técnica para limitar

las palabras código con el objeto de conseguir mejores niveles de

compresión. A pesar de este inconveniente el código BNO proporciona

niveles aceptables de compresión.

El proceso de codificación del código BNO, es más fácil que el proceso de

codificación del código Huffman; sin embargo no presentan la misma

característica los procesos inversos, esto quiere decir que; el proceso de

decodificación del código Huffman es más fácil que el proceso de

decodificación del código BNO.

Los archivos tipo texto, ¡nicialmente fueron concebidos solo para

almacenamiento, debido a la filosofía con que fue creado el sistema

operativo DOS, del cual surgió los caracteres ASCII; los creadores del DOS,

no dieron mucha importancia a la información de texto, sino más bien a la

información binaria, razón por la cual, los archivos tipo texto presentan cierta

dificultad al utilizarlos en sistemas de comunicaciones; como los encontrados

en la presente tesis.

Hoy en día los sistemas operativos de versiones superiores a 5.0, Incluyen al

final del archivo texto un conjunto de bits FeOf con e! cual se consigue un

control de errores y una mejor administración de los mismos. Sin embargo

ese conjunto de bits desorienta la interpretación de los niveles alcanzados de

compresión.

161

Page 166: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

Los bytes necesarios para llevar a cabo la descompresión, que son

grabados en la cabecera del archivo comprimido y; la diferencia entre el

tamaño original y el número de caracteres leídos, debido a la inclusión del fin

de archivo Feof, influyen mucho en el tamaño final del mismo; es decir en

la tasa de compresión real alcanzada. Sin embargo esa tasa de compresión

real no refleja la verdadera bondad de la eficiencia del código Huffman y

BNO cuando se los utiliza como técnicas de compresión de archivos de texto.

En el proceso de codificación del código BNO, ei conjunto de palabras

código es siempre el mismos para cualquier archivo, en cambio en el proceso

de codificación del código Huffman se crean las palabras código

especialmente para cada archivo, es decir la tabla de codificación para BNO

es estática y para Huffman es dinámica.

El tiempo necesario para realizar la compresión de archivos, utilizando el

código Huffman disminuye cuando, en vez de generar una tabla de

codificación específica, se utilice una tabla preestablecida en la que consten

las palabras código asociada para cada símbolo fuente.

Como el máximo radio de compresión posible de la fuente, indica en cuanto

puede comprimirse el archivo, que depende tanto de la cantidad de símbolos

fuente (pueden ser utilizados hasta 256 símbolos fuente, como máximo) y de

su frecuencia de ocurrencia en el texto; sería conveniente poder comprimir la

entropía de la fuente, además de la reducción de la redundancia del código.

Aplicando las dos técnicas, se pueden alcanzar mayores niveles de

compresión, que aquellos valores alcanzados solamente con la reducción de

la redundancia; método utilizado en la presente tesis.

162

Page 167: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

BIBLIOGRAFÍA

1.- Abramson N. 'Teoría de la información y codificación", McGraw-Hill

Book Company, España,1981.

2.- Becerra C. "Estructura de datos en C", Por Computador Ltda.,

Colombia 1991.

3.- Becerra c. "Lenguaje C para todos los niveles", Por Computador Ltda,,

Colombia, 1991.

4-.- Hchildt H. "Lenguaje C Programación avanzada", Osbome/McGraw-

Hill, México 1990.

5.- García J. "Lenguaje C y Estructura de Datos", McGraw-Hill, España

1992.

6.- Jamsa K. "Lenguaje C Biblioteca de Funciones", Osbome/McGraw-Hill,

España, 1990.

7.- Schildt H. "C: Manual de Referencia", Osbome/McGraw-Hill, España

1991.

8.- Ng Waijiung "Binary Nonconsecutive One Code for Time-Tag Data

Compression", Proc. IEEE , Vol 118, N 10 October 1971, pp. 1358-

1360.

Page 168: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

9.- Held G. "Data Compression", New York. John Wiley & Sons, 1983.

10.- Hankamer M. "A Modified Huffman Procedure wiíh Reduced Memory

Requirement" IEEE Trans on Comm, Vol COM-27 N 6 June 1979, pp

930-932.

11.- Huffman D. "A Method for the Construction of Minimun Redundance

Codes". Proc IRÉ. Vol 40 September 1952.

12.- Golumb S. "Run Length Encodings" IEEE Trans on Info. Theory. Vol IT-

12 N 3 Jule1966.

13.- Lynch T. "Data Compression Techniques and Apücations", Van

Nostrand Reinhold Company, New York, 1984.

14.- Sedgewick R. "AJgorithms", Addison-Wesley Publishing Company",

USA, 1988.

15.- The C Users Journal, "Data Compression Using Huffman Coding",

Algorithms Vol 10 N 2 Febrero 1992.

16.- Hamming R. "Coding and Information Theory", Prentice-Hall Inc. USA,

1980.

164

Page 169: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

ANEXO 1

MANUAL DE USO DEL PROGRAMA

Los tres programas ejecutables:

HUFFMAN.EXE

HUFFDES.EXE

BNO.EXE

BNODES.EXE

Están creados para ejecutarles, con el nombre del programa ejecutable, y

nombre del archivo a comprimir; la extensión TXT del archivo a comprimir es

opcional, lo importante es que esté grabado en ASCII, pudiendo presentarse

los siguientes casos:

1. NOMBRE (ejecutable ) NOMBRE.TXT

En este caso se guardará el archivo .CPR y archivo .RPT en el sitio donde

se encuentre el archivo a comprimir.

2. NOMBRE (ejecutable ) Direccionamienío de archivo a comprimir

NOMBRE.TXT

Page 170: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

En este caso se guardará el archivo .CPR y archivo .RPT en eí sitio donde se

ha direccionado ei lugar en que se encuentre el archivo a comprimir.

3. NOMBRE (ejecutable ) NOMBRE.TXT Direccionamienío de

archivo.CPRy archivo.RPT

En este caso se guardará ei archivo .CPRy archivo .RPT en el sitio donde se

ha direccionado el lugar en que se desea guardar el archivo comprimido y el

archivo reporte

Si se ha ejecutado la compresión mediante el código Huffman por ejemplo, y

se desea ejecutar la compresión mediante el código BNO; ha de tenerse la

precaución de direccionar el almacenamiento de los archivos .CPR y .RPT

en otro sitio, de no ser así, se presentará un aviso que indicará que ya existe

el archivo.CPR y preguntará si desea sobreescribirío, si o no; si se elige si,

se pierde el archivo .CPR anterior, y el archivo.RPT se guarda a continuación

del contenido del anterior archivo.RPT; y si se elige no, no se ejecuta el

programa ejecutable y sale al sistema operativo.

Page 171: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

ANEXO 2

MANUAL DEL PROGRAMADOR

En esta sección, se muestra el árbol de Herencia de Objetos, ¡mplementado

en los procesos de compresión y descompresión, de los archivos de texto. Se

añada el contenido de los objetos para un mejor entendimiento.

de JZerendn de-

Page 172: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

CONTENIDO DE LOS OBJETOS UTILIZADOS

EN COMPRESIÓN Y DESCOMPRESIÓN

ATexto

boolean FileQ;// abrir por default para lectura,

boofean FileWQ;// abrir para escritura,

boolean FileRWQ;//abrir para lectura/escritura,

boofean Read;// para leer caracteres,

boolean Write;// para escribir caracteres,

boolean WriteS;// para escribir cadenas,

boolean Seek; // posicionarse en el archivo,

boolean SeekENDQ; // posicionarse al final del Arch.

void EnceroConís() // encera contadores,

granentero getNCRQ;//numero de caractere leídos,

granentero getNCW();//numero de caracteres escritos,

boolean EOFPageQ;// control de fin de paginación.

ABlnario

boolean FiieQ;// abrir por default para escritura,

boolean FileReadQ;//abrir para lectura,

boolean ReadCab; // lee cabeza del archivo comprimido,

boolean ReadReg; // tee registro de lista ocurrencias,

boolean ReadOct; // lee octetos con bits de código,

boolean WriteCab;// escribir encabezado,

boolean WriteReg;// escribir registro de lista,

boolean WríteOct;// escribir octetos de código,

boolean SeefcSETQ;// posiciona al inicio del archivo,

boolean SeekSETLO;// posiciona al inicio de la lista.

Manual del Programador

Page 173: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

boolean SeekSETCQ;// posiciona al inicio de códigos,

boolean Seek~ENDL();// posiciona al final de la lista,

boolean SeekENDQ;// posiciona al final del archivo,

boolean FeofLQ;// fin de la lista?.

ArbolH

boolean isVoidQ; // esta vacia la lista de arboles?

void DeleteAllQ; // elimina todos los arboles.

PuntoArbol* Créate; // Crea un Árbol.

PuntoArbol* assignCab; // Coloca cabeza de arboles.

PuntoArbol* assignCola; // Coloca cola de arboles.

PuntoArbol* getCabQ; // retoma el árbol cabeza.

PuntoArbol* getColaQ; // retoma el árbol cola.

PuntoArbol* Link; // enlaza un árbol en ia lista.

DatRefArbol* UnUnkQ; // desenlaza un árbol.

LHojasH

Hoja* operator «=(const char&);// insertar Hoja con C.

Hoja* operator «=(Hoja*J;// Insertar Hoja.

Hoja* operator »=(Hoja*)¡// Eliminar Hoja.

Hoja* operator <=(const char&);//lnsertar HojaBNO con C.

void DeleteAll();// elimina todos elementos de lista,

void Sort(const ModoOrd&)¡// ordenamiento de la lista.

Hoja* getUltimoQ; // retoma el utómo de las lista.

Hoja* assígnUlt(Hoja* H)¡ // asigna uftimo de lista.

HojaRer getCabezaRefQ; // retoma hojaRef de cabeza.

Hoja* CreateH(const char&);//crea Hoja con carácter C.

Hoja* CreateH; // crea una Hoja con C y F.

HojaBNO* CreateHB;// crea una HojaBNO con carácter C.

Manual del Programador

Page 174: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

HojaBNO* CreateHB;//crea una HojaBNO con C y F.

HojaRer CreateHR; // crea hoja de referencia,

granentero getNTC();//devueive numero total car.

voíd generateHR();//gertera lista de hojas referenciales.

intgenerateParBNO();//genera parámetros código en BNO.

void DeleteRef();//elimina todas referencias de hojas,

boolean isVoidRefQ; // está vacia lista de hojasRef?

HojaRef

char getCarQ;// devuelve el carácter o símbolo.

HojaRer assignSig;// apunta a la Siguiente HojaRef.

HojaRer getSigQ;

Hoja* assignHoja;// retoma la hoja referenciada.

Hoja* getHojaQ;

unsigned short assignNBits; //asigna numero de bits.

unsigned short getNBits;

Nodo

Miembro* operator«=(Miembro*); //asigna izquierda.

Miembro* operator»=(Míembro*); // asigna derecha.

Miembro* operatorQ; // devuelve izquierda o derecha.

Hoja

char getCarQ; // devuelve el carácter o símbolo.

char assignCar;// asigna un símbolo a la hoja.

Hoja* assignSíg;//asigna siguiente para enlace en lista.

Hoja* getSigQ; // devuelve Dír. siguiente.

HojaRer assignHRef;//as¡gna referencia de hojaref.

Manual del Programador

Page 175: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

HojaRef* getHRefQ; // devuelve hojaref.

boolean operator ==(const Hoja*} const; //son iguales?

HoJaBNO

¡nt assignNB(const ¡nt& NB)¡ // asigna numero de bits,

granentero assignNEQ; // asigna numero equivalente,

int getNB();

granentero getNEQQ;

Buffer

int BPos(short int); // Se ubica en la posición Pos.

iní ReadBrtfshort int c); // Lee un bit del buffer.

iní WrtteBit(int x,short ¡nt c);//escribe bit.

PuntoBít* Linfc(PuntoBft*); //enlaza octeto en buffer,

PuntoBít* CreateBrt();//crea un octeto con bit.

voíd DeleteQ;// elimina todos ios octetos menos uno.

void FreeQ; // elimina todos los octetos del buffer.

short int getNBitQ; // retoma numero de bits exisí,

short int assignNBit;

Octeto* getOct; // retorna el octeto con bits.

short int getNQcQ; //retoma numero de octetos buff.

AnalyMem

ListBrt*CreaíeLB¡// Crea Lista bits con parámetros.

ListBit*AddLB; //Añade Lista bits con parámetros,

int AddBít(int);// Añade bit a código [UnComprBNO]

void CompletCode;// Genera bandera para el código,

void FreeQ; // Elimina el LB.

Manual dd Programador

Page 176: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

booiean isVoidQ;// esta vacia la memoria de análisis?

boolean CompletWordQ; //tenemos un palabra de código?

void GenNEQ; // genera el NB y NEQ (parámetros).

BitT* ReadLB; // lee un bit del código.

ListBíT getLBQ;

Huffman

boolean CodHuffmanQ;//Genera Árbol de Código Huffman,

boolean CompresionQ;//Codifica y guarda en archivo,

boolean UnCompres¡on();//Descomprirne y guarda en texto.

// Además contiene controles de presentación en pantalla y cálculos para

generación de reportes junto con control de tiempos en procesos de acción:

* Carga de Archivo fuente a comprimir, el mismo que consiste en:

+ Lectura de caracteres de archivo fuente.

+ Generación de lista de ocurrencias.

+ Generación de lista de referencias.

+ Ordenamiento de hojas en base a ocurrencias.

+ Escritura de Cabecera en archivo comprimido.

* Generación de Árbol de Códigos.

* Generación de Archivo Reportes, el cual efectúa los cálculos para reporte

estadístico y los almacena en un archivo tipo texto.

* Compresión de archivo, que codifica el código y lo guarda en el archivo

comprimido.

Manual del Programador 6

Page 177: COMPRESIÓN DE ARCHIVOS DE TEXTO CODIFICANDO ...Para una fuente de memoria nula co n un alfabeto fuente como el descrito en la ecuación (1-6 ) y con probabilidades según (1-7) s,e

* Descompresión de archivos,

BNO

boolean Compresion();//Cod¡fica y guarda en archivo,

boolean UnCompresion();//Descodifica y guarda en texto.

// Además contiene controles de presentación en pantalla y cálculos para

generación de reportes junto con control de tiempos en procesos de acción:

* Carga de Archivo fuente a comprimir, el mismo que consiste en:

+ Lectura de caracteres de archivo fuente.

+ Generación de lista de ocurrencias.

+ Ordenamiento de hojas en base a ocurrencias.

+ Escritura de Cabecera en archivo comprimido.

* Generación de Parámetros de Códigos (Numero de bits, Numero

equivalente).

* Generación de Archivo Reportes, el cual efectúa los cálculos para reporte

estadístico y los almacena en un archivo tipo texto.

* Compresión de archivo, que codifica el código y lo guarda en el archivo

comprimido.

* Descompresión de archivo.

Manual del Programador