Sunteți pe pagina 1din 47

INDICE GENERAL

Indice general
1. Teora de la Informaci
on
1.1. Calculo de probabilidades . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1. Experimento aleatorio. Espacio muestral asociado . . . . . .
1.1.2. Distintas definiciones de Probabilidad . . . . . . . . . . . . .
1.1.3. Probabilidad condicionada . . . . . . . . . . . . . . . . . . . .
1.1.4. Sucesos independientes . . . . . . . . . . . . . . . . . . . . . .
1.1.5. Calculo de Probabilidades Condicionadas y de Intersecci
on de
1.2. Logaritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Cantidad de Informacion . . . . . . . . . . . . . . . . . . . . . . . . .
1.4. Entropa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1. Propiedades de la entropa . . . . . . . . . . . . . . . . . . . .
1.4.2. Interpretacion de la entropa . . . . . . . . . . . . . . . . . .
1.4.3. Otra interpretacion de la entropa . . . . . . . . . . . . . . .
1.5. Entropa Condicionada . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6. Informacion Mutua entre dos Variables . . . . . . . . . . . . . . . . .
1.7. Redundancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
Sucesos
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
1
1
3
5
7
7
8
9
10
10
11
12
13
15
15

2. Compresi
on de datos
2.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Teora de la codificacion . . . . . . . . . . . . . . . . . . .
2.2.1. Definiciones . . . . . . . . . . . . . . . . . . . . . .
2.2.2. Evaluacion de los metodos de compresion de datos
2.3. Metodos estadsticos . . . . . . . . . . . . . . . . . . . . .
2.3.1. Codificacion de Shannon-Fano . . . . . . . . . . .
2.3.2. Codificacion Huffman . . . . . . . . . . . . . . . .
2.3.3. Codificacion aritmetica . . . . . . . . . . . . . . .
2.4. Metodos de diccionario . . . . . . . . . . . . . . . . . . . .
2.4.1. Codificacion Ziv-Lempel . . . . . . . . . . . . . . .
2.5. Conclusiones del captulo . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

17
17
18
18
20
21
22
23
29
32
32
34

.
.
.
.
.
.

35
35
35
37
38
39
40

3. Compresi
on de textos en lenguaje natural
3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Compresion Huffman orientada a byte basada en palabras
3.2.1. Proceso de codificacion . . . . . . . . . . . . . . .
3.2.2. Ejemplos de codificacion Plain y Tagged Huffman
3.3. Codificacion Densa con Post-Etiquetado . . . . . . . . . .
3.3.1. Proceso de codificacion . . . . . . . . . . . . . . .
n: Modelado y Representacio
n
Teora de la Informacio

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

Captulo 1

Teora de la Informaci
on
Tras un breve repaso a los conceptos fundamentales del calculo de probabilidades, daremos
una serie de nociones basicas sobre Teora de la Informacion, introducida por Claude Shannon
a finales de los a
nos cuarenta.

1.1.

C
alculo de probabilidades

1.1.1.

Experimento aleatorio. Espacio muestral asociado

Concepto de Experimento Aleatorio


Definici
on 1.1.1 Un fen
omeno o experiencia se dice aleatorio cuando al repetirlo en
condiciones an
alogas no se puede predecir el resultado. Si, por el contrario, se puede predecir el
resultado de una experiencia a
un antes de realizarla, se dice que el experimento es determinista.
u
t
Son fenomenos aleatorios:
Extraccion de una carta de la baraja
Lanzamiento de un dado
Respuestas a una encuesta
Suceso Elemental
Se denomina Suceso Elemental de un experimento aleatorio a cada uno de los posibles
resultados de dicho experimento que no pueden descomponerse en resultados mas simples. Al
realizar un experimento aleatorio siempre ocurre uno de los sucesos elementales. Al ocurrir un
suceso elemental, quedan excluidos todos los demas.
Ejemplo 1.1.1 Si consideramos el experimento aleatorio resultado de sacar una carta de una
baraja y los sucesos: S1 = Sacar as de oros. S2 = Sacar un as. Solo S1 es elemental, ya que S2
puede descomponerse en sacar el as de oros, el as de copas, el de espadas o el de bastos.
u
t
n: Modelado y Representacio
n
Teora de la Informacio


1.1. CALCULO
DE PROBABILIDADES
Sucesos. Suceso Imposible o Nulo. Suceso Contrario
Definici
on 1.1.2 Un suceso de un experimento aleatorio es cualquier composici
on de los
sucesos elementales de dicho experimento.
u
t
Ejemplo 1.1.2 El experimento aleatorio Estado civil de una persona tiene como sucesos
elementales: S1 = Soltero. S2 = Casado. S3 = Divorciado. S4 = Viudo. A partir de estos podemos
formar: S5 = {S1 , S2 } = Soltero o casado. S6 = {S1 , S3 } = Soltero o divorciado. S7 = {S1 , S4 }
= Soltero o viudo. Y de la misma forma: S8 = {S2 , S3 }; S9 = {S2 , S4 }; S10 = {S3 , S4 };
S11 = {S1 , S2 , S3 }; S12 = {S1 , S2 , S4 }; S13 = {S1 , S3 , S4 }; S14 = {S2 , S3 , S4 }.
u
t
Un suceso puede determinarse por extensi
on (enumerando los elementos) o por intensi
on
(dando una propiedad que se verifica por, y solo por, los elementos de dicho subconjunto).
Diremos que un suceso A se verifica cuando al realizar el experimento se obtiene como
resultado uno de sus sucesos elementales.
Definici
on 1.1.3 El conjunto de todos los posibles resultados de un experimento se llama
espacio muestral.
u
t
Ejemplo 1.1.3 El espacio muestral del experimento que consiste en lanzar una moneda al aire
tres veces es:
E = {(c, c, c), (c, c, x), (c, x, c), (x, c, c), (x, x, c), (x, c, x), (c, x, x), (x, x, x)}
u
t
El conjunto formado por todos los sucesos del espacio muestral se llama espacio de sucesos
S. Es decir, el espacio de sucesos esta formado por todos los subconjuntos del espacio muestral.
Ejemplo 1.1.4 Si la experiencia aleatoria es, por ejemplo, lanzar una moneda, entonces
E = {c, x} y el espacio de sucesos S = {, {c}, {x}, {c, x}}
u
t
Los sucesos definidos por los conjuntos y E se llaman suceso imposible y suceso seguro
respectivamente. El suceso imposible es aquel que nunca se realiza, y el suceso seguro es el que
se realiza siempre.

Algebra
de Sucesos
Suceso complementario: Dado un suceso A, se llama suceso contrario o complementario de
A, y se representa por A, al suceso que se realiza cuando no se realiza A. El suceso contrario de
E es , y viceversa.
Inclusi
on de sucesos: Un suceso A se dice que esta contenido o inducido en otro B si siempre
que se verifica A se verifica B. Se representa A B.
Uni
on de sucesos: Dados dos sucesos A y B se llama uni
on de A y B, y se representa por
(A B), al suceso que se realiza cuando se realiza alguno de ellos, A o B.
2


1.1. CALCULO
DE PROBABILIDADES
Producto o Intersecci
on de sucesos: Dados dos sucesos A y B, se llama suceso intersecci
on
(o producto) de A y B, y se representa por (A B) (o (A B) o (A, B)), al suceso que se realiza
si y solo si se realizan simultaneamente A y B.
Dos sucesos A y B cuya interseccion es el suceso imposible se llaman sucesos incompatibles.
Observese que un suceso y su contrario son siempre incompatibles.
Diferencia de sucesos: Dados dos sucesos A y B, se llama suceso diferencia de A y B, y se
representa por (A \ B), al suceso formado por todos los sucesos de A que no estan en B.

1.1.2.

Distintas definiciones de Probabilidad

Definici
on de Frecuencia Absoluta y Relativa de un Suceso
Se llama frecuencia absoluta de un suceso A, fa (A), al n
umero de veces que se verifica A al
realizar el experimento un n
umero determinado de veces.
Se llama frecuencia relativa de un suceso A, fr (A), al cociente entre su frecuencia absoluta
y el n
umero de veces que se realiza el experimento.
fr (A) =

fa (A)
n

siendo n el n
umero de veces que se repite el experimento.
Propiedades:
1. 0 fr (A) 1
2. fr (E) = 1
3. Si A B = entonces fr (A, B) = fr (A) + fr (B)
La frecuencia relativa de un suceso tiende a estabilizarse hacia un valor a medida que el
n
umero de pruebas del experimento aleatorio crece indefinidamente. Dicho n
umero se denomina
probabilidad del suceso.
Definici
on Axiom
atica de Probabilidad
Sea E el espacio muestral de un experimento aleatorio. Una probabilidad en E es cualquier
funcion P que asigna a cada suceso A un n
umero real P (A) que cumple las siguientes propiedades:
1. 0 P (A) 1
2. P (E) = 1
3. Si A y B son incompatibles (es decir, (A B) = ) entonces:
P (A B) = P (A) + P (B)
Estas tres condiciones reciben el nombre de axiomas de probabilidad.
3


1.1. CALCULO
DE PROBABILIDADES
Propiedades de la Probabilidad
1. P () = 0
2. P (A) = 1 P (A) para todo A P (E)
3. Si A y B son sucesos tales que A B, entonces P (A) P (B)
4. Si A y B son dos sucesos no necesariamente incompatibles, entonces:
P (A B) = P (A) + P (B) P (A, B)
5. P (A \ B) = P (A) P (A, B)
Definici
on de Laplace
Si los resultados de una experiencia aleatoria son casos equiprobables, la probabilidad de un
suceso A es:
no casos favorables
P (A) = o
n casos posibles
Por lo tanto, esta definicion es aplicable a caso como lanzamiento de una moneda o dado,
pero no es valida para casos como Cual es la probabilidad de que al nacer un ni
no este sea
varon?, Cual es la probabilidad de contraer determinada enfermedad?, Cual es la probabilidad
de que acudan mas de 100 pacientes a urgencias?....
Interpretaci
on Bayesiana o Subjetiva
Es una forma mucho mas operativa de definir la probabilidad, que consiste en utilizar la
informacion de la que un sujeto dispone para realizar una apreciacion personal de la probabilidad
de un suceso.
Obviamente, si el sujeto conoce la frecuencia relativa del suceso, y su actuacion es coherente,
utilizara esta como probabilidad. Si no conoce la frecuencia relativa, utilizara cualquier otro
tipo de informacion para dar una estimacion de la probabilidad. Es lo que hacemos cuando, por
ejemplo, decimos: Hay una probabilidad del 60 % de que llueva este fin de semana; tenemos un
50 % de posibilidades de que salga adelante este proyecto...
Evidentemente, la estimacion de la probabilidad variar
a en funcion del sujeto y de la
informacion de la que este disponga. Por eso sera mas correcto decir P (A/I), que se lee:
Probabilidad de que suceda A dado que disponemos de la informacion I. Este tipo de notacion
se usa para la probabilidad condicionada, tal como veremos mas adelante.
La Estadstica clasica se apoya exclusivamente en los datos para estimar las caractersticas
de la poblacion, mientras que la Estadstica Bayesiana utiliza ademas la informacion basada en
el grado de creencia que tiene el experimentador acerca de esas caractersticas. El analisis de los
datos permite variar esa creencia y el resultado puede servir de base para una nueva estimacion.
C
alculo Pr
actico de Probabilidades
La raz del problema esta en la asignacion de probabilidades a los sucesos elementales, ya
que a partir de estos se puede calcular la probabilidad de cualquier suceso compuesto, aplicando
las reglas que hemos visto.
La determinacion de la probabilidad de un suceso elemental puede hacerse:
4


1.1. CALCULO
DE PROBABILIDADES
1. Estudiando la frecuencia relativa mediante la repeticion del experimento hasta ver que
esta se estabiliza.
2. Deduciendolo de la naturaleza del experimento. El caso mas simple es aquel en el que
todos los sucesos elementales seran equiprobables, por lo que todos tendran probabilidad
1/n, siendo n el n
umero de sucesos elementales de E.
En este caso la probabilidad de un suceso compuesto obedece a la formula de:
P (A) =

no casos favorables
no sucesos elementales de A
= o
o
n casos posibles
n sucesos elementales de E

3. Combinando la informacion acerca de la naturaleza del experimento con los resultados de


este.

1.1.3.

Probabilidad condicionada

Para introducirnos en este concepto, veamos primero el siguiente ejemplo: Los resultados de
una encuesta sobre la actitud poltica de 334 personas es el siguiente:

Derechas
Izquierdas
Total

Varones
145
51
196

Mujeres
42
96
138

Total
187
147
334

Ejemplo 1.1.5 Sea A:ser de derechas y B:ser var


on. Se elige una persona al azar, cual es
la probabilidad de que sea de derechas sabiendo que es var
on?
145
Evidentemente, la probabilidad pedida es 196 pues hay 196 varones de los cuales 145 son de
derechas.
u
t
Esta probabilidad se denomina Probabilidad condicionada del suceso A respecto al suceso
B. Dicho de otro modo, la probabilidad condicionada de un suceso A respecto de otro B es la
frecuencia relativa con la que se da el suceso A cuando se ha dado el suceso B.
La probabilidad condicionada P (A/B) no debe confundirse con P (A, B):
1. P (A, B) es la probabilidad de que se den simult
aneamente A y B referida al espacio
muestral.
2. P (A/B) es lo mismo, pero tomando B como espacio muestral de referencia.
Ejemplo 1.1.6 Si consideramos el experimento aleatorio resultado de lanzar un dado, entonces
E = {1, 2, 3, 4, 5, 6}. Podemos tomar los sucesos A = {5, 6} (salir 5 o mas), y B = {2, 4, 6} (salir
par).
En consecuencia, (A, B) = {6} y de aqu:
P (A, B) =

no de elementos de (A, B)
1
=
no de elementos de E
6
5


1.1. CALCULO
DE PROBABILIDADES
Si sabemos que ha sucedido B, el espacio muestral E se reduce a B ya que los u
nicos resultados
posibles son {2, 4, 6}. En tal caso A = {6}, puesto que el 5 no existe en el nuevo espacio muestral,
y entonces:
P (A/B) =

no de elementos del nuevo A


1
=
o
n de elementos de B
3

u
t

Definici
on 1.1.4 Se llama Probabilidad condicionada del suceso A respecto del suceso B, y la
denotaremos por P (A/B), al cociente:
P (A/B) =

P (A, B)
si P (B) 6= 0
P (B)
u
t

Analogamente podemos definir P (B/A).


De lo anterior se deducen claramente las relaciones siguientes:
P (A, B) = P (B) P (A/B)

P (A, B) = P (A) P (B/A)


Ejemplo 1.1.7 De una urna que contiene 9 bolas rojas y 5 negras se extraen sucesivamente 2
bolas. Calcular la probabilidad de los siguientes sucesos:
a) Que las dos sean negras
b) Que las dos sean rojas
c) Que la primera sea roja y la segunda negra
d) Que la segunda sea roja sabiendo que la primera fue negra
u
t
Solucion:
a) Sea N1 : Sacar la 1a Negra, N2 : Sacar la 2a Negra
P (N1 , N2 ) = P (N1 ) P (N2 /N1 ) =

5 4

14 13

b) Sea R1 : Sacar la 1a Roja, R2 : Sacar la 2a Roja


P (R1 , R2 ) = P (R1 ) P (R2 /R1 ) =

9 8

14 13

c) Sea R1 : Sacar la 1a Roja, N2 : Sacar la 2a Negra


P (R1 , N2 ) = P (R1 ) P (N2 /R1 ) =

9 5

14 13

d) Sea N1 : La 1a es Negra, R2 : La 2a es Roja


P (R2 /N1 ) =

9
(quedan 13 bolas de las cuales 9 son rojas)
13
6


1.1. CALCULO
DE PROBABILIDADES

1.1.4.

Sucesos independientes

Definici
on 1.1.5 Dos sucesos A y B se dicen independientes cuando el conocimiento de
que uno de ellos ha ocurrido no modifica la probabilidad de que ocurra el otro. Es decir, si
P (B) = P (B/A)
u
t
Ejemplo 1.1.8 Consideremos el experimento de extraer cartas de una baraja. Cual es la
probabilidad de extraer dos reyes?
a) sin devolver la 1a carta
b) con devolucion
u
t
Solucion: a) R1 : conseguir rey en la 1a extracci
on R2 : conseguir rey en la 2a extracci
on
P (R1 , R2 ) = P (R1 ) P (R2 /R1 ) =
b)
P (R1 , R2 ) = P (R1 ) P (R2 ) =

1.1.5.

4 3

40 39

4 4

40 40

C
alculo de Probabilidades Condicionadas y de Intersecci
on de Sucesos

De la combinacion de la formula de la probabilidad condicionada y de la definicion de sucesos


independientes se puede deducir que si dos sucesos A y B son independientes entonces:
P (A, B) = P (A) P (B)
Esta formula se puede extender para el caso de n sucesos independientes A1 , A2 , ..., An
quedando:
P (A1 , A2 , ..., An ) = P (A1 ) P (A2 ) ... P (An )
Como hemos visto, en el caso de sucesos dependientes tenamos la expresion: P (A, B) =
P (A) P (B/A) que en el caso de tres sucesos sera:
P (A, B, C) = P (A) P (B/A) P (C/A, B)
pudiendo generalizarse tambien esta formula para el caso de n sucesos.
Definici
on 1.1.6 Se dice que un conjunto de sucesos A1 , A2 , ..., An forman un sistema completo
de sucesos para un determinado experimento aleatorio si verifican las dos condiciones siguientes:
a) A1 A2 ... An = E
b) A1 , A2 , ..., An son incompatibles 2 a 2 (es decir, (Ai Aj ) = )
u
t
Teorema de la Probabilidad Total
Sea A1 , A2 , ..., An un sistema completo de sucesos tales que la probabilidad de cada uno de
ellos es distinta de 0, y sea B un suceso cualquiera para el que se conocen las probabilidades
P (B/Ai ), entonces la probabilidad del suceso B viene dada por:
P (B) =

n
X

P (Ai ) P (B/Ai )

i=1

1.2. LOGARITMOS
Ejemplo 1.1.9 Se tienen dos urnas, la no 1 tiene 3 bolas blancas y 2 negras, la no 2 tiene 2
bolas blancas y 3 negras. Se elige una urna al azar y de ella se extrae una bola. Calcular la
probabilidad de que sea blanca.
Sea A1 :elegir la urna no 1, A2 :elegir la urna no 2, B:extraer bola blanca
P (B) = P (A1 ) P (B/A1 ) + P (A2 ) P (B/A2 ) =

1 3 1 2
1
+ =
2 5 2 5
2

u
t

Teorema de BAYES
Sea A1 , A2 , ..., An un sistema completo de sucesos tal que la probabilidad de cada uno de
ellos es distinta de 0, y sea B un suceso cualquiera para el que se conocen las probabilidades
P (B/Ai ), entonces:
P (Ai ) P (B/Ai )
P (Ai /B) = Pn
, i=1,2,..., n
i=1 P (Ai ) P (B/Ai )
Ejemplo 1.1.10 En el ejercicio anterior, supongamos que realizada la extraccion la bola
extrada es blanca. Calcular la probabilidad de que sea de la urna no 1.
P (A1 /B) =

P (A1 ).P (B/A1 )


1/2 3/5
3
=
=
P (A1 ) P (B/A1 ) + P (A2 ) P (B/A2 )
1/2 3/5 + 1/2 2/5
5
u
t

1.2.

Logaritmos

A continuacion se presentan las caractersticas de los logaritmos que seran utilizadas en el


resto del captulo.
1. loga (x) ay = x
2. loga (x) = 0 x = 1
loga (x) > 0 x > 1
loga (x) < 0 x < 1
3. loga (x) no esta definida para x < 0
4. loga (xy) = loga (x) + loga (y)
5. loga ( xy ) = loga (x) loga (y)
6. loga (xn ) = n loga (x)
7. loga (a) = 1
8. loga (an ) = n loga (a) = n

9. loga ( a) = 12 loga (a) = 12


10. loga ( a1n ) = loga (an ) = n loga (a) = n
8


1.3. CANTIDAD DE INFORMACION

1.3.

Cantidad de Informaci
on

Vamos a introducir este concepto partiendo de su idea intuitiva. Supongamos que tenemos
una bolsa con nueve bolas negras y una blanca. Cuanta informacion obtenemos si alguien nos
dice que ha sacado una bola blanca de la bolsa? Y cuanta obtenemos si despues saca otra y
nos dice que es negra?
Obviamente, la respuesta a la primera pregunta es que aporta bastante informacion, puesto
que estabamos casi seguros de que la bola tena que salir negra. Analogamente si hubiera salido
negra diramos que ese suceso no nos extra
na (nos suministra poca informacion). En cuanto
a la segunda pregunta, claramente podemos contestar que el suceso no proporciona ninguna
informacion, ya que al no quedar bolas blancas sabamos que iba a salir negra.
La cantidad de informacion esta relacionada, por lo tanto, con la disminuci
on de la
incertidumbre acerca de la ocurrencia de un suceso. As, si nos dicen que el n
umero que ha
salido en un dado es menor que dos, nos dan mas informacion que si nos dicen que el n
umero
que ha salido es par.
La cantidad de informacion que obtenemos al conocer un suceso es proporcional al n
umero de
valores posibles que este tenga a priori. As, si inicialmente existen 1000 posibilidades, conocer el
suceso nos proporciona mas informacion que si inicialmente tuvieramos 2. Por ejemplo, supone
mayor informacion conocer la combinaci
on ganadora del proximo sorteo de la Lotera Primitiva,
que saber si una moneda lanzada al aire va a caer con la cara o la cruz hacia arriba. Claramente
es mas facil acertar en el segundo caso, puesto que el n
umero de posibilidades a priori -y, por
tanto, la incertidumbre, suponiendo sucesos equiprobables- es menor.
Tambien la cantidad de informacion es proporcional a la probabilidad de aparicion de un
suceso. En el caso de las bolas pueden pasar dos cosas: sacar bola negra, que es mas probable,
y sacar bola blanca, que es menos probable. Sacar una bola negra aumenta nuestro grado de
certeza inicial de un 90 % a un 100 %, proporcionando una ganancia del 10 %. Sacar una bola
blanca aumenta esa misma certeza en un 90 % -puesto que partimos de un 10 %-. Podemos
considerar que la disminucion de incertidumbre es proporcional al aumento de certeza, por lo
cual diremos que el primer suceso -sacar bola negra- aporta menos informacion.
A partir de ahora, con objeto de simplificar la notacion, vamos a emplear una variable
aleatoria V para representar los posibles sucesos que podemos encontrar, P (i) la probabilidad
asociada al suceso i y n sera el n
umero de sucesos posibles.
El concepto de cantidad de informaci
on proporcionada por un suceso i es cuantificable y se
puede definir de la forma:
Ii = log(1/P (i)) = log P (i)
Esta medida puede entenderse tambien como la informacion necesaria para representar que
se ha producido el suceso i.
Su interpretacion es intuitiva; en caso de que P (i) = 1 (probabilidad maxima) entonces i no
es informativa ya que tiene que ocurrir siempre y, por tanto, la cantidad de informacion que nos
aporta sera igual a 0. Igualmente, cuanto mas peque
no sea el valor de P (i) (es decir, es mas
improbable que suceda) mayor es su cantidad de informacion. Esto es logico, ya que el estado de
incertidumbre se reduce en mayor medida [1, 15] -un suceso que no puede ocurrir nos aportara
una cantidad infinita de informacion si llegara a ocurrir-.
La base del logaritmo es arbitraria y u
nicamente esta relacionada con la normalizacion. Si se
emplea logn entonces la unidad de informacion se denomina nat (unidad natural). Si se emplea
log10 entonces la unidad de informacion es dgitos. Generalmente se utiliza 2 como base, de modo
9

1.4. ENTROPIA
que la cantidad de informacion se expresa en bits. As, la cantidad de informacion asociada al
suceso mas simple que consta u
nicamente de 2 posibilidades equiprobables -como en el caso de
tirar una moneda y obtener cara sera igual a 1 bit.

1.4.

Entropa

La cantidad media de informaci


on H(V ) de todos los posibles estados de una variable
aleatoria V , conocida como entropa, es la media ponderada de la cantidad de informacion
asociada a cada uno de sus sucesos, considerando que los pesos en este promedio son las
probabilidades de ocurrencia. La expresion de la entropa, cuyo autor es Claude Shannon [21],
es de la forma:
H(V ) =

n
X

P (i) log P (i)

i=1

La entropa es la informacion media que obtenemos cuando conocemos un suceso dentro de un


conjunto.
Ejemplo 1.4.1 Veamos la entropa de la variable aleatoria asociada a lanzar una moneda al
aire. En este caso tenemos 2 posibles sucesos, cada uno con una probabilidad de 0,5. Por lo
tanto:
H(M ) = P (cara) Icara + P (cruz) Icruz = (0, 5 log2 0, 5 + 0, 5 log2 0, 5) = 1
Este suceso aporta exactamente 1 unidad de informacion.

u
t

Ejemplo 1.4.2 Si la moneda esta trucada (60 % de probabilidades para cara, 40 % para cruz),
se obtiene:
H(M ) = (0, 6 log2 0, 6 + 0, 4 log2 0, 4) = 0, 970
u
t
Ejemplo 1.4.3 Veamos el ejemplo de las bolas (nueve negras y una blanca):
H(B) = (0, 9 log2 0, 9 + 0, 1 log2 0, 1) = 0, 468
u
t

1.4.1.

Propiedades de la entropa

La medida de entropa H(V ) cumple las siguientes propiedades:


1. Si V presenta n sucesos equiprobables, H(V ) es creciente con n. Cuantos mas sucesos
distintos haya mayor sera la incertidumbre que se tenga, entonces mayor sera la cantidad
de informacion.
2. Es una funcion continua de la funcion de probabilidad; esto es, peque
nos cambios en la
funcion de probabilidad ejercen cambios continuos.
3. Es simetrica: El orden de las probabilidades de los sucesos no afecta al resultado.
10

1.4. ENTROPIA
4. Es aditiva: Dadas 2 variables X e Y , si los sucesos de X son independientes de los de Y ,
entonces H(X, Y ) = H(X) + H(Y )
5. H(V ) es m
axima si todas las probabilidades son iguales (es decir, dados n sucesos,
P (i) = 1/n para todo suceso i). Esto corresponde a la situacion donde existe maxima
incertidumbre, por lo que la ocurrencia de uno de los sucesos dara maxima informacion.
En este caso,
H(V ) =

n
X

n
log2 n = log2 n = maxH(V )
n

P (i) log2 P (i) =

i=1

6. H(V ) es mnima si uno de los sucesos tiene probabilidad 1.

1.4.2.

Interpretaci
on de la entropa

Para comprender mejor lo que significa la medida de informacion de Shannon, consideremos


los 2 ejemplos siguientes:
Ejemplo 1.4.4 Supongamos una imagen formada por 16 regiones, una de las cuales
esta sombreada, tal como se muestra en la Figura 1.1. El juego consiste en determinar cual
es la region sombreada haciendo preguntas en las que u
nicamente se puede responder con s
o no. Cual es la mejor estrategia para formular el menor n
umero de preguntas?.
u
t



















Figura 1.1: Juego para encontrar la region sombreada


Si optamos por adivinarlo podramos necesitar, en el peor caso, 16 cuestiones. Una mejor
solucion es hacer preguntas selectivas de la forma:
1. La region sombreada es una de las u
ltimas 8 regiones?
Respuesta: no, por lo que se eliminan las regiones 9 a 16.
2. La region sombreada es una de las 4 regiones restantes de la izquierda?
Respuesta: s, por lo que la region buscada es 1, 2, 5 o 6.
3. La region sombreada es una de las 2 inferiores entre las 4 restantes?
Respuesta: s, por lo que la region buscada es 5 o 6.
11

1.4. ENTROPIA
4. La region sombreada es la izquierda?
Respuesta: no, por lo que la solucion es la region 6.
De este modo, con 4 preguntas se puede determinar cual de las 16 regiones es la sombreada.
Si ahora calculamos la entropa correspondiente a este problema, dado que las 16 regiones
son equiprobables, entonces:
H(V ) =

16
X
1
1
log2
= log2 16 = 4 bits
16
16
i=1

Aparentemente, la cantidad de informacion corresponde con el n


umero mnimo de preguntas
que deben hacerse para determinar cual es el suceso (en este caso, la region sombreada) que ha
ocurrido.
Veamos si esta interpretacion es valida cuando las distribuciones de probabilidad no son
equiprobables.
Ejemplo 1.4.5 Dada una variable X = {x1 , x2 , x3 } cuyas probabilidades son P (1) =
1/2, P (2) = 1/4, P (3) = 1/4.
Aplicando de nuevo el juego s-no, parece obvio preguntar por x1 en primer lugar, ya que
es el suceso con mayor probabilidad. Si la respuesta es no, para determinar si la respuesta es
x2 o x3 necesitaremos u
nicamente otra pregunta.
Por lo tanto, sera necesario realizar entre 1 y 2 preguntas, con la misma probabilidad, lo que
da lugar a una media de 1.5 cuestiones.
Si calculamos la entropa correspondiente a este problema, sera:
H(V ) =

1
1 1
1 1
1
log2 log2 log2
= 1,5 bits
2
2 4
4 4
4
u
t

Por lo tanto, la interpretacion anterior de la entropa es valida tambien aqu.

1.4.3.

Otra interpretaci
on de la entropa

Observese que la entropa es proporcional a la longitud media de los mensajes


necesarios para codificar una serie de valores de V de manera
optima dado un alfabeto
cualquiera. Esto quiere decir que cuanto mas probable sea un valor individual, aportara menos
informacion cuando aparezca, y podremos codificarlo empleando un mensaje mas corto. Si
P (i) = 1 no se necesitara ning
un mensaje, puesto que sabemos de antemano que siempre se va
a dar, mientras que si P (i) = 0, 9 parece mas logico emplear mensajes cortos para representar
el suceso i y largos para los j restantes, ya que el valor que mas veces va a aparecer en una
secuencia de sucesos es precisamente i.
Podemos decir que la entropa de una variable aleatoria es el n
umero medio de bits que
necesitaremos para codificar sus sucesos de una variable, suponiendo que expresemos cada suceso
empleando un mensaje escrito en un alfabeto binario.
Ejemplo 1.4.6 Supongamos que queremos representar los dgitos decimales usando secuencias
de bits. Con 3 bits no tenemos suficiente, pero cuantos mas necesitamos? Si usamos 4 bits tal
vez nos estemos pasando...
Veamos cuanta entropa tienen 10 sucesos equiprobables:
12

1.5. ENTROPIA CONDICIONADA

H(S) =

10
X
1
1
1
log2
= log2
= 3, 32 bits
10
10
10
i=1

u
t
El valor que acabamos de calcular es el lmite teorico, que normalmente no se puede alcanzar.
Lo u
nico que podemos decir es que no existe ninguna codificaci
on que emplee longitudes
promedio de mensaje inferiores a la entropa. Veamos la siguiente codificacion:
Smbolo
0
1
2
3
4
5
6
7
8
9

Codigo
000
001
010
011
100
101
1100
1101
1110
1111

Con esta codificacion empleamos, como media:


36+44
= 3, 4 bits
10
para representar cada mensaje.
Notese que este esquema permite codificar una secuencia de n
umeros por simple
yuxtaposicion, sin ambig
uedades, por lo que no necesitaremos smbolos que act
uen de
separadores, ya que estos alargaran la longitud media de los mensajes.
En una codificacion, la longitud del codigo asignado a cada smbolo de entrada i debe ser
suficiente para representar su cantidad de informacion. Dado que la entropa impone el lmite
inferior del n
umero de smbolos necesarios para la codificacion y que su valor no suele ser un
entero, para aproximarse a la entropa deben emplearse codigos de longitud variable, como el
que se muestra en el ejemplo y los que trataremos en detalle en el siguiente captulo.

1.5.

Entropa Condicionada

Supongamos que tenemos dos variables aleatorias X e Y . Recordemos las distribuciones de


probabilidad mas usuales que podemos definir sobre dicha variable, teniendo n posibles sucesos
para X y m para Y :
1. Distribuci
on conjunta del suceso xi (i-esimo de X) y el suceso yj (j-esimo de Y ):
P (xi , yj )
13

1.5. ENTROPIA CONDICIONADA


2. Distribuciones marginales de X e Y : Representa la distribucion de X sobre todos los
valores de Y , y viceversa:

P (xi ) =

m
X

P (xi , yj )

j=1

P (yj ) =

n
X

P (xi , yj )

i=1

3. Distribuci
on condicionada de X sobre Y y viceversa:
P (xi /yj ) =

P (xi , yj )
P (yj )

P (yj /xi ) =

P (xi , yj )
P (xi )

Definiremos la entropa de las distribuciones que acabamos de referir:


1.
H(X, Y ) =

m
n X
X

P (xi , yj ) log2 (P (xi , yj ))

i=1 j=1

H(X/Y = yj ) =

n
X

P (xi /yj ) log2 (P (xi /yj ))

i=1

2. Haciendo la suma ponderada de los H(X/Y = yj ) obtenemos la expresion de la Entropa


Condicionada de X sobre Y:

H(X/Y ) =

n X
m
X

P (yj )P (xi /yj )log2 (P (xi /yj )) =

i=1 j=1

n X
m
X

P (xi , yj )log2 (P (xi /yj ))

i=1 j=1

3. As como existe una Ley de la Probabilidad Total, analogamente se define la Ley de


Entropas Totales que relaciona la entropa condicionada y la conjunta utilizando la
siguiente formula:
H(X, Y ) = H(X) + H(Y /X)
cumpliendose ademas, si X e Y son variables independientes:
H(X, Y ) = H(X) + H(Y )
14

MUTUA ENTRE DOS VARIABLES


1.6. INFORMACION
4. Teorema de Disminuci
on de la Entropa:
H(X/Y ) H(X)
alcanzandose la igualdad si y solo si las variables X e Y son independientes.
Este teorema representa una idea intuitiva clara: conocer algo acerca de la variable Y
puede que nos ayude a saber mas sobre X -lo cual se debera traducir en una reduccion
de su entropa-, pero en ning
un caso podra hacer que aumente la incertidumbre.

1.6.

Informaci
on Mutua entre dos Variables

Shannon propuso una medida para la cantidad de informacion que aporta sobre una variable
el conocimiento de otra. Se definira, pues, la informaci
on mutua entre las variables X e Y como:
I(X, Y ) = H(Y ) H(Y /X) = H(X) + H(Y ) H(X/Y )
Esto quiere decir que la cantidad de informacion que obtenemos del hecho de conocer X
al medir la incertidumbre sobre Y es igual a la disminuci
on de entropa que este conocimiento
conlleva. Sus propiedades son las siguientes:
1. I(X, Y ) = I(Y, X)
2. I(X, Y ) 0

1.7.

Redundancia

Si una persona lee un mensaje en el que faltan algunas letras, normalmente puede
reconstruirlo. Esto ocurre porque casi todos los smbolos de un mensaje en lenguaje natural
contienen informacion que se puede extraer de los smbolos de alrededor -informacion que, en la
practica, se esta enviando dos o mas veces-, o en otras palabras, porque el lenguaje natural es
redundante. Puesto que tenemos mecanismos para definir la cantidad de informacion que presenta
un suceso, podemos intentar medir el exceso de informacion (redundancia) de un lenguaje.
La redundancia de una variable V se define como:
Red(V ) = 1

H(V )
H(V )
= 1
maxH(V )
log2 n

As, si los sucesos de V son equiprobables entonces H(V ) = maxH(V ) por lo que la
redundancia es 0. Por el contrario, si existe un suceso con probabilidad 1 (y, por lo tanto,
los restantes tendran probabilidad 0) entonces H(V ) = 0 y la redundancia valdr
a 1. Como
consecuencia, el valor de la redundancia siempre toma valores entre 0 y 1.
Ejemplo 1.7.1 Dados 2 sucesos {0,1} con probabilidades 1/4 y 3/4 respectivamente, el valor
de la entropa sera:
H(V ) =

1
1
3
3
log2 log2
= 0, 81 bits
4
4
4
4

y la maxima entropa:
15

1.7. REDUNDANCIA

maxH(V ) = log2 2 = 1 bit


La redundancia sera, por tanto:
Red(V ) = 1

H(V )
0, 81
= 1
= 0, 19
maxH(V )
1

u
t

La medida de la redundancia tambien puede definirse como:


Red(V ) =

v
X
i=1

P (i) longi

v
X

P (i) log2 P (i)

i=1

donde longi es la longitud del codigo que representa el i-esimo smbolo de entrada. El primer
sumando representa las longitudes de los codigos pesados en base a sus probabilidades de
aparicion (es decir, la longitud media de los codigos). La segunda expresion es la entropa. As,
la redundancia es una medida de la diferencia entre la longitud media del codigo y la cantidad
media de informacion. Si una codificacion tiene una longitud media de codigos mnima para una
determinada distribucion de probabilidad discreta, se dice que es una codificacion
optima o de
redundancia mnima. Dado que la entropa es constante para una distribucion de probabilidad
dada, al minimizar la longitud media de los codigos se minimiza la redundancia.
Principalmente hay dos aplicaciones fundamentales de la Teora de la Informacion,
relacionadas directamente con la redundancia:
Codigos de Redundancia Cclica (CRC): permiten introducir un campo de longitud mnima
en el mensaje que proporcione la mayor redundancia posible. As, si el mensaje original
resultase alterado, la probabilidad de que el CRC a
nadido siga siendo correcto es mnima.
Compresion de datos: trata de eliminar la redundancia dentro de un archivo, considerando
cada byte como un mensaje elemental, y codificandolo con mas o menos bits seg
un
su frecuencia de aparicion. En este sentido se trata de codificar exactamente la misma
informacion que transporta el archivo original, pero empleando un n
umero de bits lo mas
peque
no posible. Hablaremos con detalle sobre ello en el proximo captulo.

16

Captulo 2

Compresi
on de datos
2.1.

Introducci
on

Las tecnicas de compresion buscan la reduccion del n


umero de smbolos necesario para
almacenar o transmitir informacion [6]. Dentro del ambito de las bases de datos documentales,
las bibliotecas digitales y la Web, la compresion es un opcion muy atractiva pues permite reducir
los requerimientos de espacio y tiempo de transmision.
A lo largo de los a
nos se han desarrollado numerosos metodos de compresion, desde tecnicas
ad hoc hasta metodos mas formales. Aunque sus resultados son de diferente caracter y cada uno
de ellos resulta adecuado en determinados entornos, todos los metodos se basan en el mismo
principio: realizan la compresion mediante la eliminacion de la redundancia presente en los
datos originales [20]. Si la compresion es efectiva, la longitud de la concatenacion de todos los
codigos de salida sera menor que la longitud de la secuencia de smbolos inicial. Esto depende
fundamentalmente de la cantidad de redundancia de la cadena a comprimir.
El concepto de redundancia es fundamental en el ambito de la compresion. Se relaciona con la
existencia de cierta correlacion entre los elementos de informacion dentro de una coleccion. Esta
correlacion puede ser explotada para conseguir una representaci
on mas peque
na de los datos. As,
por ejemplo, en la mayora de los textos en ingles el caracter E aparece con mucha frecuencia,
mientras que la Z es poco habitual. Esto es lo que se denomina redundancia alfabetica, y sugiere
la asignacion de codigos de tama
no variable a las letras, de modo que el codigo correspondiente
a la E sea mas corto que el codigo para la Z. Un ejemplo de redundancia en las imagenes se
puede observar en el hecho de que los pxeles adyacentes tienden a tener colores similares.
En general, los compresores de datos se pueden dividir en dos familias:
Compresores con perdida (lossy): son utilizados para comprimir representaciones
digitales de se
nales analogicas, como por ejemplo sonidos o imagenes, donde una peque
na
perdida de informacion no es apreciada por el sistema auditivo/visual humano. Dado que
los datos expandidos (descomprimidos) no tienen por que ser una replica exacta de los
datos originales, se pueden obtener ratios de compresion superiores.
Compresores sin perdida (lossless): garantizan la regeneracion exacta de los datos
originales tras la descompresion, ya que no se ha producido la perdida de ning
un tipo
de informacion. Esta es la compresion utilizada sobre ficheros de texto, registros de una
base de datos, bases de datos documentales, colecciones de texto de proposito general,
informacion de una hoja de calculo, etc. Ya que estos datos son com
unmente llamados
datos de texto, dichos compresores se denominan tambien compresores de texto.
n: Modelado y Representacio
n
Teora de la Informacio

17


2.2. TEORIA DE LA CODIFICACION
El resto del captulo se estructura del siguiente modo: En una primera seccion, tras introducir
la terminologa que se empleara en adelante, se define una serie de conceptos que se emplean
habitualmente para la evaluacion de los metodos de compresion. Posteriormente, se dedican las
Secciones 2.3 y 2.4 a una revision de diferentes metodos de compresion de textos, clasificandolos
en estadsticos y de diccionario. Finalmente, en la Seccion 2.5 se recogen las conclusiones
principales extradas del estudio realizado.

2.2.
2.2.1.

Teora de la codificaci
on
Definiciones

Se denominan smbolos de entrada a cada una de las unidades basicas (caracteres, por
ejemplo) en que se divide la cadena (mensaje) a comprimir, y vocabulario (o alfabeto) de entrada
al conjunto de smbolos de entrada diferentes (y sin repeticiones) que componen dicha cadena.
Llamaremos n a la longitud total de la cadena, es decir, el n
umero total de smbolos de entrada
a codificar, y v al n
umero de smbolos que componen el vocabulario de entrada.
Ejemplo 2.2.1 En la cadena de entrada: ABCDEDEDDDF ABBBBC hay 17 smbolos de
entrada:
{A, B, C, D, E, D, E, D, D, D, F, A, B, B, B, B, C}
y el vocabulario esta formado por 6 smbolos: {A, B, C, D, E, F }

u
t

El proceso de codificaci
on hace corresponder a cada smbolo de entrada un c
odigo que lo
representara en la cadena de salida. Cada codigo estara formado por una secuencia de smbolos
de salida que pertenecen a un vocabulario de salida. Llamaremos d al n
umero de smbolos que
componen dicho vocabulario.
El conjunto de smbolos de salida asignados a un vocabulario de entrada forman la
codificaci
on de la cadena de entrada.
Ejemplo 2.2.2 Una posible codificacion para el vocabulario de entrada del ejemplo anterior
podra ser de la forma:
{A(0), B(1), C(10), D(11), E(1100), F (1111)}
donde el vocabulario de salida esta formado por d = 2 smbolos: 0 y 1. De este modo, la cadena
codificada quedara: 011011110011110011111111110111110
u
t
El proceso de decodificaci
on permite realizar la operacion inversa a la codificacion; es decir,
obtener la cadena original a partir de la secuencia codificada.
Denominaremos esquema de codificaci
on al metodo que establece como llevar a cabo los
procesos de codificacion y decodificacion.
Una codificacion es decodificable de forma u
nica si cada codigo es identificable dentro
de la cadena codificada. Es decir, si cualquier cadena tiene una u
nica descomposicion en
concatenacion de smbolos de salida.
Ejemplo 2.2.3 : (1) {A(00), B(01), C(10), D(11)} es decodificable de forma u
nica porque es de
longitud fija.
(2) {A(0), B(10), C(110), D(1110)} es decodificable de forma u
nica porque el 0 los separa.
18


2.2. TEORIA DE LA CODIFICACION
(3) {A(0), B(01), C(001), D(0001)} NO es decodificable de forma u
nica.
(4) {A(0), B(01), C(011), D(0111)} es decodificable de forma u
nica.
(5) {A(0), B(1), C(10), D(11)} (dado que la cadena 11 puede decodificarse como D o como
BB) la codificacion no es decodificable de forma u
nica.
u
t
Un codigo decodificable de forma u
nica es instant
aneo (tambien llamado de prefijo u
nico
o libre) si ning
un codigo es prefijo de otro.
Ejemplo 2.2.4 En el ejemplo anterior, (2) es instant
aneo, pero (4) no lo es.

u
t

Ejemplo 2.2.5 La codificacion:


{A(1), B(1000), C(00)}
es decodificable de forma u
nica (observese que una cadena de la forma 100000 solo puede
decodificarse como BC); sin embargo, no es instant
anea (dado que el codigo asignado a A
es prefijo del codigo correspondiente a B).
Por el contrario:
{A(1), B(01), C(00)}
s es una codificacion de prefijo libre.

u
t

Toda codificacion de prefijo libre es decodificable de forma inmediata; es decir, la cadena


codificada puede dividirse en codigos sin necesidad de hacer un analisis hacia adelante.
Podemos reconocer directamente un codigo sin inspeccionar los siguientes codigos que forman
la cadena comprimida.
Ejemplo 2.2.6 Para decodificar la cadena 10000001, donde la codificacion es de la forma:
{A(1), B(1000), C(00)}
la lectura del primer smbolo 1 no es suficiente para confirmar que el smbolo de entrada sea A.
De hecho, en este caso, no se puede determinar hasta que se haya ledo el u
ltimo smbolo (si la
cadena de ceros hubiese sido de longitud impar entonces el primer codigo sera 1000 y, por lo
tanto, correspondera al smbolo de entrada B).
Este problema no sucede en las codificaciones de prefijo libre, dado que un codigo nunca
puede estar contenido en otro. Una vez reconocido un codigo dentro del texto se tiene la certeza
de que es un codigo final, sin necesidad de tener que comprobar si podra ser parte de otro de
mayor longitud.
u
t
Definici
on 2.2.1 Desigualdad de Kraft-McMillan: Sea un conjunto de c cadenas de entrada y
d smbolos de salida. Entonces existe una codificaci
on instant
anea sii
c
X

dli 1

i=1

donde li es el tama
no de la cadena codificada correspondiente a la cadena de entrada i.

u
t
19


2.2. TEORIA DE LA CODIFICACION
Ejemplo 2.2.7 Existe un codigo binario para 6 mensajes de manera que dos de ellos se
codifiquen con 2 bits, tres con 3 bits y uno con 4 bits?
22 + 22 + 23 + 23 + 23 + 24 = 0,9375 1
con lo que sabemos que existe. Sin embargo, esto no quiere decir que todas las codificaciones
que cumplan estas caractersticas sean instant
aneas.
u
t
Una codificacion de prefijo libre es de prefijo mnimo si, dado un smbolo (o secuencia de
smbolos) de salida X que sea prefijo de alg
un codigo, Xy debe ser necesariamente un codigo
o un prefijo de otro codigo, donde y representa a cada uno de los smbolos del vocabulario de
salida.
Ejemplo 2.2.8 La codificacion:
{A(00), B(01), C(10)}
es un ejemplo de codificacion de prefijo libre que no es mnima. Esto se debe a que como 1
es prefijo del codigo 10 se requerira tambien que 11 fuese codigo o prefijo, y esto no sucede.
Intuitivamente, la restriccion de minimalidad evita el uso de codigos mas largos de lo necesario.
En el ejemplo anterior, el codigo 10 puede sustituirse por 1, obteniendose as una codificacion
de prefijo mnimo con codigos mas cortos.
u
t
Todas las codificaciones que se trataran a lo largo de este estudio son codificaciones de prefijo
mnimo.
Se dice que una codificacion es asint
oticamente
optima si tiene la propiedad de que la
redundancia tiende a 0 cuando la entropa de la distribucion de probabilidad es muy grande. Es
decir, la optimalidad asintotica garantiza que la longitud media de los codigos se aproxima al
mnimo teorico.

2.2.2.

Evaluaci
on de los m
etodos de compresi
on de datos

A la hora de evaluar las tecnicas de compresion de datos deben tenerse en cuenta tres
factores principales: la redundancia [21] (comentada en el captulo anterior), la complejidad de
los algoritmos de codificaci
on y decodificaci
on y el porcentaje (ratio) de compresi
on alcanzado.
Todas estas medidas asumen que el documento a comprimir esta formado por una secuencia
de n smbolos pertenecientes a un vocabulario de v elementos. A cada smbolo i le corresponde
una probabilidad constante pi determinada por la frecuencia de aparicion del smbolo i en la
totalidad del documento. Ademas, los metodos de compresion que se tratan aqu consideran que
los smbolos de entrada son estadsticamente independientes.
Ratio de compresi
on
La cantidad de compresion alcanzada por un esquema de codificacion se puede medir como
un porcentaje de compresion. El termino ratio de compresi
on C compara la longitud de la cadena
obtenida tras la codificacion respecto a la longitud de la cadena de entrada. As, si la longitud
de la cadena de entrada es u bytes y la de la cadena de salida es de c bytes, el porcentaje de
compresion se obtiene como (100 c / u).
20


2.3. METODOS
ESTADISTICOS
Complejidad
Aunque la meta principal de la compresion de datos es desarrollar tecnicas que mejoren cada
vez mas el porcentaje de compresion, otro aspecto que no se debe descuidar es la complejidad
de los algoritmos asociados a la tecnica de compresion. La eficacia de las tecnicas de compresion
viene dada no solo por el porcentaje de compresion alcanzado sino tambien por la eficiencia
computacional (tanto temporal como espacial) de los algoritmos que llevan a cabo los procesos
de codificacion, compresion y descompresion.

2.3.

M
etodos estadsticos

Los primeros metodos de compresion, como el codigo Braille, asignaban codigos de longitud
fija a los smbolos que forman la cadena a comprimir. Las codificaciones de tama
no fijo son u
tiles
por su sencillez pero son redundantes.
Con el fin de conseguir mejores ratios de compresion disminuyendo en lo posible la
redundancia (y, por lo tanto, aproxim
andose al mnimo teorico determinado por la entropa)
se adopto la Ley general de compresi
on, basada en asignar c
odigos de salida cortos a los
smbolos de entrada m
as comunes, y c
odigos largos a los menos habituales. Este es el principio
seguido por los metodos estadsticos, de modo que los codigos generados son de longitud variable.
Los metodos estadsticos (tambien llamados de sustituci
on de orden cero o basados en
smbolos) pueden describirse en terminos de un modelo asociado a la cadena de datos a comprimir
y un esquema de codificaci
on. El modelo asigna probabilidades a los smbolos que forman la
cadena de entrada y, posteriormente, el esquema de codificacion genera un codigo de salida para
cada smbolo de entrada en funcion de estas probabilidades.
Los modelos de datos se pueden clasificar en:
Modelos no adaptativos (est
aticos): Son aquellos donde el mapeo del vocabulario de entrada
al de salida es fijo, de modo que un mensaje dado siempre se representa con el mismo codigo
de salida cada vez que aparece en la cadena a codificar. Los modelos estaticos son rgidos
y no modifican sus operaciones, parametros o tablas en funcion de los datos a comprimir.
Utilizan tablas de probabilidades prefijadas de antemano, independientes de la cadena
de entrada. El uso de compresores basados en modelos no adaptativos es muy especfico;
resultan u
tiles en caso de que todos los datos sean de un mismo tipo. Un ejemplo podra
ser el estandar JPEG para compresion de imagenes.
El problema de estos modelos es el riesgo de que se apliquen sobre una cadena de entrada
que no se ajuste perfectamente al tipo de datos para el que fueron creados. Es lo que
sucede, por ejemplo, con la utilizacion del codigo Morse para codificar un fichero formado
en su mayor parte por valores numericos. En este caso, dado que los n
umeros tienen poca
probabilidad de aparicion en un texto estan asociados a codigos mas largos.
Modelos semiadaptativos (probabilsticos): utilizan probabilidades obtenidas a partir de la
cadena a comprimir. Se realizan dos pasadas: en la primera se lee la cadena completa para
calcular la frecuencia de aparicion de cada smbolo y en la segunda el esquema realiza la
codificacion. Por ello, los datos a comprimir deben estar almacenados o transmitirse dos
veces, lo cual puede ser un inconveniente en ciertos entornos.
Este tipo de modelos tiene dos inconvenientes. Por un lado, se necesita consumir un
tiempo extra para calcular las probabilidades de aparicion de los smbolos en la cadena a
21


2.3. METODOS
ESTADISTICOS
comprimir. Por otro lado, el tama
no del fichero comprimido se ve incrementado debido a la
necesidad de transmitir al decodificador el modelo utilizado (ademas del texto codificado),
dado que la codificacion de un smbolo vara para cada cadena de entrada.
Modelos adaptativos (din
amicos): realizan una estimacion de las probabilidades de los
smbolos que componen el vocabulario de entrada en el momento de la codificacion. El
codificador aprende las caractersticas de la cadena de entrada. Un modelo adaptativo
podra comenzar por considerar, por ejemplo, que todos los smbolos tienen la misma
frecuencia; a medida que se va comprimiendo la cadena de entrada cuenta las apariciones
de cada smbolo y va cambiando sus frecuencias (y, por lo tanto, el modelo).
Las tecnicas de compresion basadas en modelos adaptativos combinan dos aspectos clave:
codifican en una sola pasada la cadena de entrada (el mapeado se realiza dinamicamente
durante la transmision), y pueden comprimir distintas cadenas de entrada sin necesidad
de trabajar con un tipo de datos particular (como textos en ingles, por ejemplo).
El resto de esta seccion se dedica a presentar diferentes tecnicas de compresion estadsticas
basadas en modelos semiadaptativos (en concreto, se estudian las codificaciones Shannon-Fano,
Huffman y Aritmetica). Se dedica una mayor atencion a la codificacion Huffman por ser el
esquema mas empleado actualmente para la compresion de textos en lenguaje natural.

2.3.1.

Codificaci
on de Shannon-Fano

La codificacion de Shannon-Fano fue el primer metodo estadstico que logro una buena
codificacion de longitud variable.
El modo de construir los codigos es el siguiente: los smbolos de entrada i y sus probabilidades
pi se ordenan de forma decreciente. La lista obtenida se divide para formar dos grupos, de modo
que la probabilidad total de ambos grupos tenga un valor similar. A cada smbolo del primer
grupo se le asigna un 1 como primer dgito, y a los smbolos de la segunda mitad se les asignan
codigos comenzando en 0. Este proceso se realiza recursivamente subdividiendo cada grupo en
base al mismo criterio hasta que cada subconjunto posea un solo elemento.
Ejemplo 2.3.1 En la Tabla 2.1 se muestra la codificacion Shannon-Fano para un vocabulario
de entrada formado por 6 smbolos: {A, B, C, D, E, F } y cuyas probabilidades de aparicion en
el texto son las que se muestran en dicha tabla.
Smbolo
A
B
C
D
E
F

Prob.
0,25
0,25
0,125
0,125
0,125
0,125

Paso 1
1
1
0
0
0
0

Paso 2
1
0
1
1
0
0

Paso 3

1
0
1
0

Tabla 2.1: Ejemplo de codificacion Shannon-Fano


En el P aso 1 se divide el vocabulario en dos subconjuntos con frecuencia similar: {A, B} y
{C, D, E, F }. A los dos smbolos del primer conjunto se les asigna un 1 como primer smbolo
22


2.3. METODOS
ESTADISTICOS
de salida, mientras que a los smbolos del segundo conjunto se les asigna un 0. En el P aso 2 se
divide cada conjunto anterior en dos subconjuntos y se sigue el mismo procedimiento. De este
modo, el conjunto {A, B} se divide en {A} y {B} y se asigna un nuevo smbolo de salida a cada
uno (con valor 1 y 0, respectivamente). Igualmente se divide el conjunto {C, D, E, F } en dos
subconjuntos {C, D} y {E, F } y estos, a su vez, (en el Paso 3) se subdividen hasta que todos
los conjuntos esten formados por un u
nico elemento.
El codigo de salida para cada smbolo de entrada estara formado por la concatenacion de los
diferentes smbolos asignados en cada paso, quedando una codificacion de la forma:
{A(11), B(10), C(011), D(010), E(001), F (000)}
u
t
El algoritmo de Shannon-Fano da lugar a un codigo de prefijo mnimo, aunque no siempre se
trata de una codificacion optima. La longitud media de los codigos se encuentra entre la entropa
H y la entropa mas un smbolo, dado que la longitud de cada codigo i oscila entre logd pi (si
los subgrupos tienen exactamente la misma probabilidad) y ( logd pi + 1).
Ejemplo 2.3.2 La codificacion obtenida para el ejemplo anterior es optima, debido a que todos
los grupos tenan exactamente la misma probabilidad. As, la longitud media de los codigos es:
2 (0, 25 2) + 4 (0, 125 3) = 2, 5
(hay 2 smbolos de entrada (A y B) cuya probabilidad es 0,25 y donde el n
umero de smbolos
que componen el codigo de salida es 2, y hay 4 smbolos (C, D, E, F ) con probabilidad 0,125 y
cuyos codigos de salida son de longitud 3), y el valor de la entropa es:
[2 (0, 25 log2 0, 25) + 4 (0, 125 log2 0, 125)] = 2, 5
u
t

2.3.2.

Codificaci
on Huffman

La codificacion Huffman (tambien denominada codificaci


on de redundancia mnima) fue
descrita por primera vez por David A. Huffman en 1952 [14]. Debido a su facilidad de computo,
es ampliamente utilizada en programas de compresion como gzip.
Al igual que suceda para la codificacion Shannon-Fano, Huffman asigna a los smbolos de
entrada mas frecuentes un codigo de compresion de menor longitud a costa de asignar codigos
de mayor longitud a los menos frecuentes. La diferencia entre ambos metodos es que, mientras
que la generacion de codigos en Shannon-Fano comienza para los smbolos de entrada mas
frecuentes, la codificacion Huffman construye los codigos de abajo a arriba (desde los smbolos
de entrada menos probables hasta los mas probables). En general, la codificacion Huffman da
lugar a mejores codificaciones que Shannon-Fano.
El proceso de codificacion de Huffman se compone de varias fases. En primer lugar es
necesario calcular la frecuencia de aparicion de cada smbolo de entrada, para posteriormente
construir del arbol de Huffman que asignara un codigo a cada uno de estos smbolos. Finalmente,
se recorre una vez mas el texto a comprimir sustituyendo cada elemento del texto por el codigo
asignado mediante el arbol.
A continuacion se presentan con mas detalle cada una de estas fases.
23


2.3. METODOS
ESTADISTICOS
Construcci
on del
arbol Huffman
Para construir un codigo Huffman normalmente se utiliza un arbol que se construye a partir
de las probabilidades de los smbolos de entrada que deseamos codificar y una lista donde se
mantienen los nodos que todava no han sido procesados. El proceso de construccion de dicho
arbol se realiza de la siguiente forma:
1. Crear tantos nodos (que seran las hojas del arbol) como smbolos tenga el vocabulario de
entrada. En cada nodo se almacena el smbolo y su probabilidad. Estos nodos forman la
lista inicial de nodos sin procesar.
2. Extraer d nodos de la lista de nodos sin procesar que tengan las probabilidades mas bajas,
siendo d el n
umero de smbolos que componen el vocabulario de salida. As, para una
codificacion orientada a bit, donde el vocabulario de salida es {0, 1}, se toman los dos
nodos de menor probabilidad.
3. Crear en el arbol un nuevo nodo que sea padre de los nodos seleccionados e incluirlo en la
lista de nodos sin procesar. Este nodo no tiene asociado ning
un smbolo y su probabilidad
sera la suma de las probabilidades de sus nodos hijo.
4. Repetir los pasos 2 y 3 hasta que tengamos en la lista un n
umero de nodos sin procesar
inferior a d. La suma de las probabilidades de estos nodos debe ser igual a 1, y seran los
hijos de un nuevo nodo en el arbol denominado nodo raz del
arbol Huffman. Puesto que
en cada iteracion extraemos d nodos de la lista e insertamos otro, el n
umero de iteraciones
necesarias para construir un arbol con n hojas (el n
umero de smbolos que deseamos
n
e.
codificar) es d d1
Ejemplo 2.3.3 Veamos como construir el arbol Huffman para un vocabulario de entrada
formado por 5 smbolos: {A, B, C, D, E} con pesos 0, 40, 0, 18, 0, 15, 0, 15 y 0, 12,
respectivamente, y donde el vocabulario de salida es {0, 1}. El proceso se realiza en los 5 pasos
siguientes(representados en la Figura 2.1):
1. El primer paso (Figura 2.1-A) consiste en crear una lista de nodos sin procesar formada
por todos los nodos hoja.
2. Se extraen los d = 2 nodos de menor peso correspondientes a los smbolos D y E.
Es importante indicar aqu que tambien podra haberse optado por seleccionar el nodo C
en lugar del D, lo que dara lugar a un arbol diferente. Esta circunstancia se da siempre
que haya smbolos equiprobables. Por lo tanto, la codificacion Huffman no es u
nica. Sin
embargo, desde el punto de vista de la compresion de datos el resultado es equivalente.
Dado que los smbolos intercambiables (C y D en este caso) tienen exactamente la misma
probabilidad, la compresion alcanzada para la secuencia de entrada sera la misma.
Siguiendo el ejemplo, dado que los pesos de los nodos D y E son 0, 15 y 0, 12
respectivamente, insertamos un nuevo nodo en la lista, sin smbolo asociado y con un
peso igual a 0, 27 (Figura 2.1-B).
3. Para construir el segundo subarbol se extraen los nodos B y C (Figura 2.1-C) y se genera
un nuevo nodo intermedio con valor 0, 33 que se introduce en la lista de nodos sin procesar.
24


2.3. METODOS
ESTADISTICOS
4. A continuacion se extraen de la lista los nodos de peso 0, 27 y 0, 33, de modo que los
dos subarboles forman un arbol mayor (Figura 2.1-D) cuyo nodo padre (que tambien se
introduce en la lista de nodos sin procesar) toma el valor 0, 60.
5. Por u
ltimo, se extraen los dos nodos restantes (el correspondiente al smbolo A y el nodo
intermedio de valor 0, 60) y se genera el nodo raz de valor 1. El arbol Huffman completo
se presenta en la Figura 2.1-E.
u
t

A, 0.40

B, 0.18

C, 0.15

D, 0.15

0.60

A, 0.40

E, 0.12

(A)
0.33

B, 0.18
A, 0.40

B, 0.18

C, 0.15

0.27

C, 0.15

(D)
E, 0.12

1.0

(B)

1
0.60

A, 0.40
0.33

0.27

0.33
B, 0.18

C, 0.15

E, 0.12

0.27

D, 0.15

A, 0.40

D, 0.15

D, 0.15

E, 0.12

0.27

B, 0.18

C, 0.15

D, 0.15

(C)

1
E, 0.12

(E)

Figura 2.1: Ejemplo de construccion de un arbol Huffman

Procesos de codificaci
on, compresi
on y descompresi
on
Una vez construido el arbol ya se puede llevar a cabo el proceso de codificacion. Para ello, en
cada nivel del arbol se etiquetan las ramas con los diferentes valores del vocabulario de salida. El
codigo correspondiente a cada smbolo de entrada estara formado por la secuencia de smbolos
de salida asignados a las ramas que unen la raz con la hoja que representa dicho smbolo de
entrada.
Ejemplo 2.3.4 Siguiendo el Ejemplo 2.3.3, podemos etiquetar las ramas izquierdas del arbol
con el smbolo de salida 0 y las ramas derechas con el smbolo de salida 1 (ver Figura 2.1-E).
De esta forma, la codificacion quedara:
{A(0), B(100), C(101), D(110), E(111)}
u
t
25


2.3. METODOS
ESTADISTICOS
Como puede observarse en este ejemplo, la codificacion obtenida es de prefijo libre pues
ning
un codigo esta contenido en otro. Esta propiedad se cumple siempre, dado que los smbolos
de entrada estan representados por nodos hoja y no por nodos internos del arbol.
Una vez calculados los codigos, el proceso de compresion consiste en generar una cadena de
salida leyendo de nuevo la cadena de entrada y reemplazando cada uno de sus smbolos con el
codigo asignado.
Ejemplo 2.3.5 Para la cadena de entrada ABACDE, la secuencia de codigos de salida
resultante sera: 01000101110111.
u
t
A la hora de realizar la descompresion, se asocia cada smbolo del texto original con una hoja,
de modo que el arbol completo es una representaci
on del vocabulario del texto. El algoritmo de
Huffman determina el arbol que minimiza la longitud del fichero comprimido. Ver [6, 22] para
mas detalle.
Ejemplo 2.3.6 Consideremos un texto con vocabulario A, B, C, D, E cuyas frecuencias son
0, 25, 0, 25, 0, 20, 0, 15, 0, 15. En la figura 2.2 se muestra un posible arbol Huffman, determinado
por el algoritmo de Huffman. En dicha figura puede observarse como A se codifica con 01, B
con 10, C con 11, D con 000 y E con 001.
u
t

Figura 2.2: Arbol


de Huffman
El proceso de decodificacion se debe realizar utilizando el mismo arbol Huffman generado
durante la codificacion. Dado que la compresion Huffman no es u
nica, tal como ya se ha
mencionado, para que en el momento de la decodificacion se pueda reconstruir exactamente
el mismo arbol, es necesario que la cadena comprimida posea suficiente informacion para poder
conocer el codigo asignado a cada smbolo de entrada. Aunque se podra optar por enviar en la
cadena de salida el vocabulario de entrada y sus codigos (ademas del texto comprimido), esta
solucion penaliza considerablemente el porcentaje de compresion sobre todo cuando la cadena a
comprimir no es muy grande. En este caso, el porcentaje de espacio ocupado por el vocabulario
puede ser mayor incluso al del texto comprimido. Existen otras soluciones mas eficientes, como
se comentara con detalle en el apartado dedicado a los arboles Huffman canonicos. En este caso
no se enva en la cadena de salida el arbol Huffman, sino u
nicamente unos cientos de bytes de
informacion extra.
Una vez regenerado el arbol, el proceso de decodificacion es simple. El texto comprimido se
lee smbolo a smbolo mientras se recorre el arbol partiendo de la raz y siguiendo la rama cuyo
valor coincida con el smbolo ledo. Cuando se alcanza una hoja, se obtiene el smbolo de entrada
asociado.
26


2.3. METODOS
ESTADISTICOS
Gracias a la propiedad de prefijo libre, la decodificacion de un codigo puede realizarse sin
necesidad de analizar los codigos que le siguen dado que se reconoce inmediatamente su final.
Ejemplo 2.3.7 Utilizando el arbol de la Figura 2.1-E, vamos a decodificar la cadena
comprimida del ejemplo anterior: 01000101110111. El smbolo de salida 0 nos indica que el
primer smbolo de entrada es A. Para obtener el siguiente smbolo de entrada nos situamos de
nuevo en la raz del arbol y leemos caracter a caracter hasta alcanzar de nuevo una hoja. En
este caso, una vez ledo 100 habremos alcanzado la hoja correspondiente al smbolo de entrada
es B. Este proceso se repite hasta que no quedan mas smbolos por decodificar.
u
t
Redundancia del c
odigo
El algoritmo de Huffman siempre produce una codificacion optima de redundancia mnima
[10]. Su diferencia respecto a la entropa es debida u
nicamente a que Huffman no puede generar
un codigo utilizando partes fraccionarias de smbolos de salida. As, si la cantidad de informaci
on
de un smbolo de entrada es de 2, 5 smbolos, el algoritmo de Huffman generara un codigo
formado por 3 smbolos de salida. Generalizando, si la cantidad de informacion correspondiente
a un smbolo de entrada i con probabilidad pi es ( logd pi ), Huffman utilizara d logd pi e
smbolos; es decir, nunca se utilizara mas de un smbolo extra por codigo debido a los ajustes
por redondeo mencionados.
Por lo tanto, la longitud media de los codigos Huffman asignados a un texto cuyo vocabulario
de entrada esta formado por v smbolos es:

v
X
i=1

pi dlogd pi e

v
X

pi logd pi + 1

i=1

Ejemplo 2.3.8 Vamos a analizar la redundancia de la codificacion generada para el


Ejemplo 2.3.3.
Bajo codificacion Huffman, la longitud media de los codigos se puede calcular del mismo
modo que el utilizado en el Ejemplo 2.3.2:
(1 0, 40) + (3 0, 18) + (3 0, 15) + (3 0, 15) + (3 0, 12) = 2, 2
o, por tratarse de un arbol donde el peso de sus nodos es la suma del peso de sus hijos (frecuencias
de las palabras asociadas), tambien puede calcularse sumando los valores asignados a los nodos
internos del arbol:
0, 27 + 0, 33 + 0, 60 + 1 = 2, 2
Por otro lado, la entropa es:
(0, 40log2 0, 40)(0, 18log2 0, 18)(0, 15log2 0, 15)(0, 15log2 0, 15)(0, 12log2 0, 12) = 2, 16
Como se puede observar, la diferencia entre la longitud media y la entropa es inferior a 1
smbolo.
u
t
La eficiencia de la codificacion Huffman se ve particularmente afectada cuando existen
algunos smbolos de entrada con muy alta probabilidad. De forma mas general, Gallager [11]
27


2.3. METODOS
ESTADISTICOS
ha demostrado que el lmite superior de la redundancia de la codificacion Huffman binaria (es
decir, cuando el n
umero de smbolos de salida es 2) es:
pb + log2 [ (2 log2 e) / e ] ' (pb + 0, 086)
donde pb es la probabilidad del smbolo mas probable. Capocelli et al. determinaron lmites mas
ajustados que los de Gallager para algunas distribuciones de probabilidad [9].
Por otro lado, Buro [8] establecio el lmite superior de la longitud de un codigo Huffman en
base a las probabilidades de los dos smbolos menos probables p1 y p2 , como:

+1
mn log
,v 1
p1 + p2

siendo = (1 + 5)/2.

Arbol
Huffman can
onico
Como ya se ha mencionado anteriormente, la codificacion Huffman no es u
nica. As, en el
Ejemplo 2.3.3 podra haberse seleccionado el nodo C en lugar del D, en cuyo caso el arbol
resultante sera diferente. El intercambio de los subarboles de un nodo intermedio da lugar a
un arbol distinto siempre que los subarboles sean diferentes en estructura, aunque la longitud
media final del codigo no se vea afectada.
Para garantizar que, dado un vocabulario de entrada, siempre se obtiene el mismo arbol
Huffman (y, por lo tanto, los mismos codigos), muchas aplicaciones optan por generar un
arbol
can
onico que impone un orden particular de codificacion [5, 13, 24].
Un arbol Huffman es canonico cuando el peso del subarbol izquierdo de cualquier nodo nunca
es menor que el del subarbol derecho, y todas las hojas se colocan de izquierda a derecha en
orden creciente de probabilidad.
Ejemplo 2.3.9 El arbol canonico para el Ejemplo 2.3.3 se presenta en la Figura 2.3. La
codificacion canonica queda la forma:
{C(000), B(001), E(010), D(011), A(1)}
u
t

1.0

1
A, 0.40

0.60

0.27

0.33

0
C, 0.15

1
B, 0.18

0
E, 0.12

1
D, 0.15

Figura 2.3: Arbol


can
onico para el Ejemplo 2.3.3
La codificaci
on can
onica se caracteriza porque el conjunto de c
odigos de la misma longitud
son las representaciones binarias de enteros consecutivos. Esto puede observarse en el ejemplo
28


2.3. METODOS
ESTADISTICOS
anterior, donde a los 4 smbolos de entrada codificados con 3 bits (C, B, E, D) se les han asignado
los codigos cuyo valores enteros son 0, 1, 2 y 3, respectivamente.
Esta caracterstica de secuencia numerica aporta importantes ventajas a la codificacion.
Utilizando un arbol canonico no es necesario construir el arbol Huffman para la codificacion
ni para la decodificacion, mejorando consecuentemente la eficiencia de estos procesos tanto en
tiempo de computacion como en espacio. De hecho, para la construccion de la codificacion
no es necesario llevar a cabo la generacion de los codigos. Basta con conocer la longitud del
codigo asignado a cada smbolo de entrada y cual es el valor del codigo mas peque
no para cada
longitud. Un algoritmo para el calculo de las longitudes de los codigos Huffman para los smbolos
que forman una cadena de entrada puede verse en [24].
De este modo, la codificacion canonica puede representarse mediante un array S de pares de
la forma (xj , yj ) siendo 1 j l, donde xj representa el n
umero de codigos de longitud j, yj el
valor numerico del primer codigo de longitud j, y l es la altura del arbol.
Ejemplo 2.3.10 Para el ejemplo anterior, el arbol podra representarse de la forma:
S = {(1, 1), (0, ), (4, 0)}
porque hay 1 smbolo de entrada (A) cuyo codigo es de longitud 1 y su codigo es 1, no hay
codigos de longitud 2, y hay 4 codigos de longitud 3 que comienzan por el valor 0.
u
t
La informacion aportada por el array anterior, junto con una lista de los smbolos que
componen el vocabulario de entrada ordenados decrecientemente por frecuencia, es suficiente
para la generacion de la codificacion Huffman canonica en cualquier instante. Gracias a las
propiedades del arbol canonico, no es necesario almacenar el vocabulario con sus codigos,
propiedad especialmente interesante cuando se trabaja con grandes vocabularios ya que, como
ya se ha mencionado, el vocabulario tiene que almacenarse con el texto, de modo que el tama
no
total del fichero comprimido sera la suma del tama
no del texto comprimido y del vocabulario.

2.3.3.

Codificaci
on aritm
etica

La codificaci
on aritmetica es una tecnica sofisticada que alcanza una compresion muy
proxima a la determinada por la entropa.
Bajo esta codificacion, la cadena de entrada se representa por un u
nico n
umero real que
pertenece al intervalo [0, 1). El metodo parte de una lista desordenada con los smbolos que
componen el vocabulario de entrada y sus probabilidades de aparicion en el texto a comprimir. A
medida que se realiza la codificacion del texto, el intervalo inicial [0, 1) se divide en subintervalos
mas peque
nos. El comienzo de cada subintervalo y su tama
no dependen de la posicion que ocupe
el smbolo de entrada en el vocabulario y de su probabilidad. Ve
amoslo con un ejemplo:
Ejemplo 2.3.11 Supongamos un vocabulario de entrada formado por 5 smbolos
{A, B, C, D, E} cuyas probabilidades de aparicion en el texto se muestran en la Tabla 2.2.
A cada smbolo de entrada se le hace corresponder la parte proporcional del intervalo [0, 1)
en funcion de la posicion que ocupa en el vocabulario y de su probabilidad inicial. As, tal como
se muestra en la u
ltima columna de la Tabla 2.2, al smbolo A le corresponden los primeros 2/10
del intervalo (es decir, el intervalo [0, 0,2)), al smbolo B le corresponden los 4/10 siguientes (es
decir, el intervalo [0,2, 0,6)), y as sucesivamente.
Una vez determinado el rango del intervalo que corresponde a cada smbolo puede comenzar
la codificacion.
29


2.3. METODOS
ESTADISTICOS
Smbolo
A
B
C
D
E

Prob.
2/10=0,2
4/10=0,4
1/10=0,1
2/10=0,2
1/10=0,1

Prob.Acumulada
0,2
0,6
0,7
0,9
1,0

Rango
[0, 0,2)
[0,2, 0,6)
[0,6, 0,7)
[0,7, 0,9)
[0,9, 1,0)

Tama
no
0,2
0,4
0,1
0,2
0,1

Tabla 2.2: Ejemplo de primera particion de la codificacion aritmetica


En la Figura 2.4 se muestran los diferentes subintervalos generados para la codificacion de
una cadena de entrada de la forma AADBE. Tomando en orden los smbolos que componen la
cadena de entrada, los pasos seguidos por la codificacion aritmetica son los siguientes:
A dado que al smbolo A le corresponden los primeros 2/10 del intervalo, entonces el intervalo
inicial [0, 1) se reduce a [0, 0,2).
A se reduce el intervalo anterior [0, 0,2) a sus 2/10 primeras partes; es decir, al intervalo
[0, 0,04).
D dado que el rango del smbolo D (tal como se indica en la Tabla 2.2) es [0,7, 0,9), el
intervalo obtenido en el paso anterior debe reducirse a sus 2/10 partes, pero comenzando
en el 70 % de la distancia desde el extremo izquierdo del intervalo. Es decir, el nuevo
intervalo es [0,028, 0,036).
B al smbolo B le corresponden 4/10 partes del intervalo anterior [0,028, 0,036), comenzando
en el 20 % de la distancia desde el extremo izquierdo. Es decir, el nuevo intervalo es
[0,0296, 0,0328).
E se determina el intervalo final como el u
ltimo 1/10 del intervalo anterior. Es decir
[0,03248, 0,0328).
El propio intervalo [0,03248, 0,0328), o cualquier valor c dentro del mismo, puede usarse para
representar la cadena de entrada.
u
t
La determinacion de los sucesivos subintervalos a que da lugar la codificacion de una cadena
de entrada (en concreto, para conocer su tama
no nuevo tama
no, el extremo izquierdo nuevo izdo
y derecho nuevo dcho) se pueden utilizar las formulas que se presentan a continuaci
on:
nuevo izdo = previo izdo + smbolo izdo * previo tama
no
nuevo tama
no = previo tama
no * smbolo tama
no
nuevo dcho = nuevo izdo + nuevo tama
no
donde previo izdo y previo tama
no indican el valor del lmite izquierdo del subintervalo
anteriormente obtenido y su tama
no, respectivamente, y smbolo tama
no indica el tama
no (es
decir, la probabilidad de aparicion) del smbolo de entrada que se esta codificando, tal como se
muestra en la Tabla 2.2.
El tama
no del subintervalo final determina el n
umero de smbolos necesario para especificar
un valor en ese rango. As, el n
umero de smbolos para especificar un subintervalo de [0, 1) de
30


2.3. METODOS
ESTADISTICOS

D
A

B
A

[0.024, 0.028)

[0.028, 0.036)

[0.12, 0.14)

[0.03024, 0.03152)

[0.028, 0.0296)

[0.03152, 0.03184)

[0.0296, 0.0328)

D
C

[0.03184, 0.03248)

[0.0328, 0.0336)

[0.2, 0.6)
E

[0.04, 0.12)

[0.008, 0.024)

[0.0296, 0.03024)

[0, 0.2)

C
B

E
A

[0, 0.04)

C
B

[0, 0.008)

[0.14, 0.18)

[0.18, 0.2)

[0.036, 0.04)

E
D

[0.0336, 0.0352)

[0.0352, 0.036)

[0.03248, 0.0328)

[0.6, 0.7)

[0.7, 0.9)

[0.9, 1.0)

Figura 2.4: Codificacion aritmetica de la cadena AADBE


tama
no s es ( logd s). Por otro lado, dado que el tama
no del subintervalo correspondiente a
cada smbolo viene dado por su probabilidad (ver Tabla 2.2), el tama
no del subintervalo
es
Qfinal
n
el producto de las probabilidades de los smbolos en la cadena de entrada (es decir, s = i=1 pi ).
De este modo, el n
umero de smbolos para especificar un valor del subintervalo correspondiente
a una cadena de entrada es:
logd s =

n
X

logd pi

i=1

y el tama
no medio ponderado para las cadenas formadas por smbolos del vocabulario de entrada
es:

v
X

pi logd pi

i=1

Esto demuestra que la codificacion aritmetica alcanza una compresion que es casi
exactamente la predicha por la entropa de la cadena de entrada. La diferencia viene dada,
basicamente, por el uso de aritmetica de longitud fija.
Respecto a la decodificacion, para realizarse debe conocerse el modelo usado por el codificador
(es decir, el vocabulario de entrada y las probabilidades de sus smbolos) y el n
umero c elegido por
el codificador dentro del intervalo final. La decodificacion consiste en una serie de comparaciones
del valor c con los rangos de los smbolos del vocabulario de entrada, simulando las operaciones
del codificador.
31


2.4. METODOS
DE DICCIONARIO
Ejemplo 2.3.12 Para el ejemplo anterior, si el codificador hubiese elegido el valor de
c = 0, 0325, como esta entre 0 y 0, 2, el decodificador sabra que el primer smbolo es una A,
pues el rango [0, 0,2) corresponde a la A. El decodificador ahora puede deducir que el siguiente
smbolo se correspondera con alguno de los intervalos [0, 0,04) si es A, [0,04, 0,12) si es B,
[0,12, 0,14) si es C, [0,14, 0,18) si es D, y [0,18, 0,2) si se trata de E (ver Figura 2.4). Como c
se encuentra en el intervalo [0, 0,04) el segundo smbolo sera una A, y as sucesivamente.
u
t
Aunque la codificacion Huffman tiende a ser mas rapida que la codificacion aritmetica, la
codificacion aritmetica alcanza una compresion mas proxima a la optima para una distribucion
de probabilidades dada. El problema es que, debido a su naturaleza incremental, no se puede
realizar la decodificacion de un trozo intermedio del texto comprimido. Para decodificar un
smbolo en el medio de un fichero comprimido con codificacion aritmetica es necesario decodificar
el texto completo desde el principio hasta la palabra deseada. Esta caracterstica hace que la
codificacion aritmetica resulte inadecuada en el ambito de la Recuperacion de Textos.

2.4.

M
etodos de diccionario

Los metodos que hemos presentado hasta el momento se caracterizan por utilizar un modelo
estadstico que asigna probabilidades a los smbolos que forman la cadena de entrada, y un
esquema de codificacion que genera un codigo de salida (de longitud variable) para cada smbolo
de entrada en funcion de estas probabilidades.
Los metodos de diccionario no utilizan un modelo estadstico ni codigos de longitud variable.
En su lugar sustituyen subcadenas del texto original por codigos que identifican dicha subcadena
en un diccionario. Un ejemplo muy simple podra ser un metodo que realizase la compresion
de textos en castellano utilizando directamente un diccionario en esta lengua. Para realizar la
codificacion se extraen secuencialmente las palabras del texto a comprimir y se buscan en el
diccionario. Cada vez que se localiza una palabra en el diccionario se escribe en la cadena de
salida un ndice a la entrada correspondiente en el diccionario.
Los diccionarios pueden ser est
aticos o din
amicos(adaptativos). Un diccionario estatico
esta formado por un conjunto fijo y prestablecido de entradas (aunque en ocasiones permite
a
nadir nuevas). Un ejemplo de diccionario estatico es el empleado en la codificacion ASCII o
cuando, por ejemplo, sustituimos Diciembre por 12 o TR para referirnos a Text Retrieval.
El problema de los diccionarios estaticos es que no suelen adaptarse bien a cualquier texto.
Por ello los compresores de texto comerciales optan por una solucion mas elegante y efectiva
que es la utilizacion de diccionarios dinamicos. Estos diccionarios se crean para cada texto a
codificar.
Casi todas las tecnicas de diccionario adaptativas estan basadas en uno de los dos metodos
Ziv-Lempel que se detallan a continuaci
on.

2.4.1.

Codificaci
on Ziv-Lempel

Dos investigadores israeles, Jacob Ziv y Abraham Lempel, desarrollaron en la decada de


los 70 los primeros metodos de compresion basados en diccionarios adaptativos, LZ77 y LZ78
[27, 28]. Sus ideas han sido basicas para el desarrollo de muchos metodos actuales para la
compresion sin perdida de textos (como gzip o compress), sonidos e imagenes.
Ambos metodos (LZ77 y LZ78) se basan en el mismo principio: las subcadenas de texto
se sustituyen por punteros a ocurrencias previas de las mismas en el texto ya analizado. De
32


2.4. METODOS
DE DICCIONARIO
entrada
0
1
2
3
4
5

subcadena de entrada
null
A
B
AB
AA
ABA

Codif.Ziv-Lempel
(0,
(0,
(1,
(1,
(3,

A)
B)
B)
A)
A)

Tabla 2.3: Ejemplo de codificacion LZ78


este modo, el diccionario esta formado por el texto analizado, y los codigos se representan por
punteros. La utilizacion de un diccionario de este tipo suele resultar muy adecuado pues el texto
analizado generalmente esta formado por smbolos del mismo alfabeto (de la misma lengua
si hablamos de texto en lenguaje natural) que el texto que falta por codificar. Ademas, de
este modo el diccionario se transmite implcitamente en el texto codificado sin ning
un coste de
almacenamiento extra. Las diferencias entre los metodos LZ77 y LZ78 vienen dadas basicamente
por la forma en que se representan los punteros y el tipo de subcadenas a las que pueden apuntar,
por lo que a partir de aqu nos centraremos en LZ78.
El metodo LZ78 utiliza un diccionario cuyas entradas son subcadenas. En cada paso de
la codificacion se extrae una subcadena del texto no analizado, se a
nade al diccionario una
entrada formada por esta subcadena y el codigo asignado, y se escribe dicho codigo en el texto
comprimido.
El algoritmo de codificacion divide la cadena de entrada en un conjunto de subcadenas de
longitud gradualmente incremental. En cada paso de la codificacion, a la subcadena mas larga
del texto sin analizar que empareje con una entrada existente en el diccionario se le asigna
un codigo (, c), siendo c el smbolo siguiente a dicha subcadena en el texto, y se a
nade al
diccionario.
Ejemplo 2.4.1 Una cadena de entrada de la forma ABABAAABA da lugar a una codificacion
como se muestra en la Tabla 2.3. Al principio el diccionario contiene una u
nica entrada con la
subcadena nula. El algoritmo comienza leyendo la subcadena A y buscando en el diccionario
alguna entrada que la contenga. Como no hay ninguna crea una nueva entrada en el diccionario
formada por esta subcadena y le asigna un codigo (0, A). Este codigo representa la cadena null
A (una concatenacion de la cadena nula correspondiente a la entrada 0 con la subcadena A).
En el siguiente paso, el algoritmo lee la subcadena B y realiza la misma operacion.
Posteriormente extrae la subcadena AB porque encuentra la subcadena A en el diccionario
(entrada 1) pero no encuentra ninguna subcadena AB. Crea entonces la nueva entrada AB y
le asigna un codigo (1, B) indicando que la subcadena actual es la concatenacion de la de la
entrada 1 (A) y el smbolo B.
Este proceso se realiza sucesivamente hasta finalizar el analisis del texto.
u
t
En cada paso de la codificacion, la subcadena a
nadida al diccionario esta formada por una
subcadena ya codificada y un nuevo smbolo; por lo tanto, cada nueva entrada sera de igual o
mayor longitud que las anteriores. El tama
no maximo que puede alcanzar el diccionario puede
ser prefijado de antemano o estar limitado a la cantidad de memoria disponible. Cuanto mayor
sea este tama
no se podran almacenar subcadenas mas largas permitiendo emparejamientos de
33

2.5. CONCLUSIONES DEL CAPITULO


mayor longitud, pero tambien aumenta el n
umero de punteros lo que hace mas lenta la b
usqueda
sobre el diccionario.
Los metodos Ziv-Lempel ofrecen en general una buena compresion, son rapidos y no requieren
mucha memoria. Sin embargo, resultan ineficientes para documentos peque
nos, pues comienzan
asignando codigos mas largos que otros metodos vistos. Ademas, al tratarse de una codificacion
de longitud fija, si el texto original no es lo suficientemente grande la eficiencia del metodo podra
reducirse considerablemente.
Se trata de una codificacion asintoticamente optima, lo que significa que la redundancia
tiende a 0 cuando el tama
no del vocabulario de entrada tiende a infinito.

2.5.

Conclusiones del captulo

Este captulo se ha dedicado a realizar una revision de las principales tecnicas de compresion
de datos. Entre ellas, caben destacar las diferentes codificaciones Huffman empleadas para
comprimir texto. Bajo codificacion Huffman, se asigna una secuencia de bits a cada smbolo
de la cadena original. Se asignan los codigos a los smbolos originales aplicando el algoritmo de
Huffman, de modo que a los smbolos mas frecuentes les corresponden los codigos mas cortos.
El metodo Huffman binario es uno de los metodos clasicos mas conocidos, y se ha aceptado
como uno de los mejores de las u
ltimas decadas. A efectos de compararlo con los modelos
vistos, comprime textos en ingles en 5 bits por caracter, frente a los metodos Ziv-Lempel que lo
reducen a unos 4 bits por caracter (es decir, aproximadamente a la mitad del tama
no original) o
los metodos basados en codificacion aritmetica que pueden alcanzar una compresion de unos 2
bits por caracter. El problema de estos metodos alternativos es que consumen un mayor tiempo
de compresion y descompresion, y mas memoria para su procesamiento.

34

Captulo 3

Compresi
on de textos en lenguaje
natural
3.1.

Introducci
on

Los metodos clasicos presentados en el captulo anterior no son adecuados para bases de
datos textuales. La codificacion Huffman binaria es poco utilizada por su escaso ratio de
compresion. Por otro lado, el metodo Ziv-Lempel obtiene una buena compresion (entre un 30 %
y un 40 % en la practica) pero la b
usqueda de una palabra sobre el texto comprimido es muy
ineficiente. As, los estudios empricos realizados [2, 3, 18] demuestran que la b
usqueda sobre
textos comprimidos bajo codificacion Ziv-Lempel se puede llevar a cabo en la mitad de tiempo
que realizar la descompresion del texto y b
usqueda posterior, pero es el doble de lenta que la
b
usqueda directamente sobre el texto sin comprimir. Dado que uno de los retos principales de
los sistemas de Recuperacion de Textos es proporcionar un acceso rapido a los datos, se necesita
mejorar el rendimiento que ofrecen las tecnicas mencionadas.
En 1989, Moffat propuso la idea de utilizar las palabras como los smbolos a comprimir
en lugar de los caracteres [17, 24]. El motivo principal del planteamiento es que un texto es
mucho mas facil de comprimir cuando se considera como una secuencia de palabras y no como
un conjunto de caracteres. Ademas, dado que las palabras son consideradas atomos por los
metodos de Recuperacion de Textos, una estrategia de compresion basada en palabras resulta
particularmente adecuada en este entorno.
Actualmente se han desarrollado nuevas tecnicas de compresion basadas en palabras como
las presentadas por Manber [16], Turpin [23], Moura et al. [22, 29] y Brisaboa et al. [7]. Sobre
los textos comprimidos con estas tecnicas es posible realizar b
usquedas directas, evitando as la
necesidad de descomprimir antes de buscar.
A continuacion, se presentan con detalle los dos u
ltimos metodos citados: el m
etodo
de compresi
on Huffman orientada a byte basada en palabras de Moura et al., y la
Codificaci
on Densa con Post-Etiquetado, por ser los metodos mas eficientes de los citados.

3.2.

Compresi
on Huffman orientada a byte basada en palabras

En [22, 29], Moura et al. presentan una tecnica de compresion basada en palabras que utiliza
codificacion Huffman. Resultados empricos han demostrado que, desde el punto de vista de
la compresion, las tecnicas que emplean codificacion Huffman basada en caracteres reducen
n: Modelado y Representacio
n
Teora de la Informacio

35

HUFFMAN ORIENTADA A BYTE BASADA EN PALABRAS


3.2. COMPRESION
el tama
no de textos en ingles a aproximadamente un 60 % de su tama
no original, mientras
que los metodos que emplean codificacion Huffman basada en palabras pueden alcanzar un
porcentaje de compresion proximo al 30 %. Esto es debido a que la distribucion de palabras es
considerablemente mas sesgada que la de caracteres pues, en la mayora de los textos en lenguaje
natural, existe un conjunto de palabras que se repiten mucho mientras que las restantes tienen
una probabilidad de aparicion mucho menor.
Otra de las ventajas de la utilizacion de compresion basada en palabras es que esta tecnica
permite la b
usqueda eficiente de palabras y frases sobre el texto comprimido, sin necesidad
de descomprimirlo. En [22] se demuestra que las b
usquedas sobre textos comprimidos con
estas tecnicas pueden llegar a ser 8 veces mas rapidas (para ciertas consultas) que utilizando
herramientas de b
usqueda (como Agrep[25]) sobre el texto sin comprimir.
La tecnica de Moura et al. utiliza un modelo semiadaptativo, como sucede con la tecnica
de compresion Huffman clasica. Es decir, el codificador hace una primera pasada sobre el texto
para obtener la frecuencia de todas las palabras y, en una segunda pasada, realiza la codificacion.
Durante esta u
ltima fase, se sustituyen los smbolos de entrada (palabras en este caso) por sus
codigos. Para cada palabra en el texto habra un u
nico codigo cuya longitud vara dependiendo
de la frecuencia de aparicion de la palabra en el texto. Utilizando el algoritmo de compresion
de Huffman, se asignan los codigos mas cortos a las palabras mas frecuentes y los codigos mas
largos a las menos frecuentes.
Otra diferencia con el metodo clasico de Huffman esta en los smbolos utilizados para la
codificacion. Ahora el codigo Huffman asignado a cada palabra tiene uno o mas bytes en lugar
de un n
umero variable de bits. Las pruebas experimentales realizadas (ver [22, 29]) demuestran
que no existe una degradacion significativa en el porcentaje de compresion utilizando bytes en
lugar de bits, mientras que la b
usqueda y descompresion son mas rapidas ya que se evita la
manipulacion de bits.
Moura et al. proponen dos tipos de codificacion. La primera de ellas, denominada Plain
Huffman, consiste en la aplicacion del algoritmo Huffman utilizando como smbolos de salida los
d = 28 = 256 valores que puede tomar un byte. Por lo tanto, emplea en la codificacion los b = 8
bits que componen un byte, de modo que el arbol Huffman resultante tiene grado 256.
Aplicando codificacion Plain Huffman se consiguen buenos ratios de compresion, como se ha
mencionado, pero no resulta muy eficiente a la hora de realizar b
usquedas directamente sobre
el texto comprimido. El problema es que aunque se trata de una codificacion de prefijo libre
(y, por lo tanto, ning
un codigo es prefijo de otro) no se puede reconocer donde comienza cada
codigo dentro de la cadena codificada. Por lo tanto, la decodificacion debe comenzar desde el
principio del texto (o, al menos, desde alg
un punto del texto comprimido donde se identifique
el comienzo de un codigo).
Existe una segunda codificacion, denominada Tagged Huffman, que se caracteriza por la
utilizacion de marcas para permitir la localizacion de los codigos en el texto comprimido de
forma inmediata. Para ello, se reserva el bit mas significativo de cada byte como bit de marca
para se
nalar el comienzo de cada codigo comprimido. En concreto, el primer byte de cada codigo
tiene su bit de marca a 1, mientras que los bytes restantes tienen su bit de marca a 0. Por lo
tanto, se emplean u
nicamente b = 7 bits de cada byte para la codificacion, reservando el octavo
como marca. Sobre estos 7 bits se contin
ua aplicando codificacion Huffman, pues el bit de marca
por s mismo no hace que el codigo sea de prefijo libre. Como consecuencia, el arbol Huffman
resultante ahora tiene grado 128.
La utilizacion de un bit de marca facilita las b
usquedas comenzando en cualquier punto del
texto comprimido y la descompresion de porciones del texto. De este modo es posible realizar,
36

HUFFMAN ORIENTADA A BYTE BASADA EN PALABRAS


3.2. COMPRESION
por ejemplo, una rapida descompresion de los fragmentos que contienen los resultados de una
b
usqueda, aspecto de especial interes en los sistemas de Recuperacion de Textos.
Esta importante ventaja tiene, sin embargo, un coste en terminos de rendimiento en la
compresion: se almacenan bytes completos pero solo se emplean 7 bits para la codificacion.
Como consecuencia de ello el tama
no del fichero comprimido crece aproximadamente en un 11 %
respecto a la aproximacion Plain Huffman [22].
En los siguientes apartados se muestran ciertas particularidades de la codificacion Huffman
orientada a byte para, posteriormente, presentar varios ejemplos donde se reflejan las diferencias
entre las codificaciones Plain y Tagged Huffman.

3.2.1.

Proceso de codificaci
on

Para realizar el proceso de codificacion es necesario construir un arbol Huffman no binario.


En concreto, el n
umero de smbolos que componen el vocabulario de salida es d = 2b = 28 = 256
en caso de la codificacion Plain Huffman, y d = 2b1 = 27 = 128 en caso de la codificacion
Tagged Huffman, donde b representa el n
umero de bits empleado para la codificacion.
La construccion de un arbol no binario exige tener en cuenta ciertos detalles para evitar que
los primeros niveles del arbol no tengan nodos vacos. Ve
amoslo con un ejemplo.
Ejemplo 3.2.1 Supongamos que se desea aplicar codificacion Huffman sobre un texto cuyo
vocabulario de entrada son 512 palabras de igual probabilidad utilizando un vocabulario de
salida formado por 256 smbolos (del 0 al 255). En este caso, si aplicamos directamente el
algoritmo de Huffman, se crearan 2 nodos padre (uno para cada 256 palabras) y estos, a su vez,
(junto con 254 nodos vacos) daran lugar al nodo raz (ver Figura 3.1 (A)).
De este modo, la longitud de los codigos para las 512 palabras sera de 2 bytes, y no
habra ning
un codigo de longitud 1.
u
t

254 nodos vacos


0

255

p1

255
p512

p256 p257

(A)

255

2
p259

0
p1

1
p2

0
254 nodos vacos

p3

p512

255
p258

(B)

Figura 3.1: Ejemplo de arbol Huffman no binario


Como se puede observar en la Figura 3.1 (A), el nodo raz tiene 254 espacios vacos que
podran haber sido ocupados por palabras que se encuentran en el segundo nivel del arbol, de
modo que las longitudes de sus codigos se reduciran de 2 bytes a 1.
37

HUFFMAN ORIENTADA A BYTE BASADA EN PALABRAS


3.2. COMPRESION
Una forma de asegurar que los nodos vacos siempre se encuentran en el nivel mas profundo
del arbol (y, por lo tanto, les corresponderan los codigos mas largos) es conocer previamente
el n
umero de nodos vacos, para poder combinar estos con los smbolos de entrada (palabras)
de menor probabilidad. El n
umero de palabras que se deben combinar con los nodos vacos se
calcula como
1 + ((v d)mod(d 1))
siempre que ((v d)mod(d 1)) > 0
Ejemplo 3.2.2 Para el ejemplo anterior, el n
umero de palabras que se deben combinar en la
primera iteracion del algoritmo de Huffman es:
1 + ((512 256)mod(256 1)) = 2
Por lo tanto, en el primer paso se combinar
an 2 palabras con 254 nodos vacos, en el segundo paso
se calculara el padre de las 256 palabras siguientes y, por u
ltimo, se tomaran las 254 palabras
restantes junto con los 2 nodos padre generados para dar lugar al nodo raz del arbol (ver Figura
3.1 (B)).
u
t

3.2.2.

Ejemplos de codificaci
on Plain y Tagged Huffman

Los ejemplos que se presentan a continuaci


on muestran el resultado de aplicar las
codificaciones Plain y Tagged Huffman sobre dos distribuciones de palabras. En el primer ejemplo
se considera que todas las palabras tienen la misma probabilidad de aparicion mientras que en
el segundo siguen una distribucion exponencial.
Por simplicidad, se supone que cada byte esta formado u
nicamente por b = 3 bits. Por lo
tanto, el esquema Plain Huffman emplea los 3 bits para la codificacion (d = 23 = 8 smbolos),
mientras que Tagged Huffman utiliza 1 bit como marca y 2 para la codificacion (d = 231 = 4
smbolos). Los bits de marca aparecen resaltados.
Las distribuciones elegidas son hipoteticas y no se corresponden a lo que sucede
habitualmente en los textos en lenguaje natural. Sin embargo, se utilizan aqu por tratarse
de casos extremos a traves de los que se pueden observar claramente las diferencias entre ambas
codificaciones.
Ejemplo 3.2.3 La Tabla 3.1 muestra las diferencias entre los codigos generados por los
esquemas de codificacion Plain y Tagged Huffman para una distribucion de probabilidad
uniforme (es decir, pi = pj i,j , donde pk es la probabilidad de la k-esima palabra del
vocabulario). El vocabulario de entrada esta formado por 16 palabras. En la Figura 3.2 se
representan los arboles Huffman resultantes para ambos esquemas de codificacion.
Como puede observarse en la Figura 3.2, el n
umero de palabras combinadas con nodos vacos
bajo el algoritmo Plain Huffman han sido:
1 + ((v d)mod(d 1)) = 1 + ((16 8)mod(8 1)) = 2
En caso de la codificacion Tagged Huffman no hay nodos vacos, puesto que
((v d)mod(d 1)) = ((16 4)mod(4 1)) = 0
Por lo tanto, en la primera iteraccion del algoritmo se combinan los d = 4 smbolos de menor
probabilidad.
u
t
38

DENSA CON POST-ETIQUETADO


3.3. CODIFICACION
Palabra
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P

Probab.
1/16
1/16
1/16
1/16
1/16
1/16
1/16
1/16
1/16
1/16
1/16
1/16
1/16
1/16
1/16
1/16

Plain Huffman
000 000
000 001
000 010
000 011
000 100
000 101
000 110
000 111
001 000
001 001
010
011
100
101
110
111

Tagged Huffman
100 000
100 001
100 010
100 011
101 000
101 001
101 010
101 011
110 000
110 001
110 010
110 011
111 000
111 001
111 010
111 011

Tabla 3.1: Codificaciones Plain Huffman y Tagged Huffman para una distribucion uniforme de
palabras
Ejemplo 3.2.4 La Tabla 3.2 muestra los codigos obtenidos aplicando de nuevo ambos esquemas
de codificacion pero, en este caso, considerando una distribucion exponencial (de la forma
pi = 2i ). Sin perdida de generalidad, se ha incrementado la frecuencia de la palabra menos
probable para que las probabilidades sumen 1.
En la Figura 3.3 se pueden observar los arboles Huffman asociados.
u
t
Como se puede observar en las Tablas 3.1 y 3.2, cuando se aplica la codificacion Tagged
Huffman el codificador emplea u
nicamente 2b1 de los d = 2b posibles valores que puede tomar
un byte formado por b bits. En concreto, el primer byte de un codigo debe comenzar siempre
con un bit a 1 para indicar que es comienzo de codigo, por lo que sus valores posibles oscilan
entre 100 y 111 en el ejemplo anterior (en el caso real (b = 8) seran 10000000 y 11111111).
El segundo byte y sucesivos deben comenzar siempre con un bit a 0 para indicar que no son
comienzo de codigo. Por lo tanto, los valores para estos bytes oscilan entre 000 y 011 para el
ejemplo anterior (en el caso real los valores estaran entre 00000000 y 01111111).

3.3.

Codificaci
on Densa con Post-Etiquetado

La codificacion Densa con Post-Etiquetado es una codificacion basada en palabras donde


cada codigo esta formado por una secuencia de bytes. Como ya se ha mencionado, de forma
similar a la codificacion Tagged Huffman, se utiliza un bit de cada byte (en concreto, el bit
mas significativo) como marca para poder reconocer los codigos dentro del texto comprimido.
La u
nica diferencia estriba en que, en lugar de utilizarlo como marca de comienzo de palabra,
ahora el bit indica si el byte es el u
ltimo de un codigo o no. En concreto, el bit de marca es 1
para el u
ltimo byte de cada codigo y 0 para los restantes.
En la Tabla 3.3 se puede observar la diferencia entre los formatos de los codigos
correspondientes a la codificacion Tagged Huffman frente a la nueva codificacion Densa con
Post-Etiquetado para diferentes longitudes de codigos.
39

DENSA CON POST-ETIQUETADO


3.3. CODIFICACION

000
001

010

011

000
A

001
B

010

011

100 101110 111

(A)

111

000 001 010 011

000 001 010 011


H

111

110

000 001 010 011

000 001 010 011


B

110
101

001

000

101

100

100

(B)

Figura 3.2: Arboles


Plain Huffman y Tagged Huffman para la distribucion uniforme de la Tabla
3.1
Se trata de un cambio muy simple pero, sin embargo, tiene importantes consecuencias. En
la Tabla 3.3 anterior se puede observar claramente como, por construccion, el hecho de colocar
el bit de marca al final del codigo incorpora automaticamente la caracterstica de prefijo libre
a la codificacion, independientemente del resto de los bits de cada byte en el codigo. Dado que
u
nicamente el bit de marca del u
ltimo byte de cada codigo vale 1, ning
un codigo podra ser prefijo
de otro. Es decir, dados dos codigos X e Y , si la longitud (el n
umero de bytes) de X (longX )
es menor a la de Y , X nunca podra ser prefijo de Y porque el u
ltimo byte de X tiene su bit de
marca a 1, mientras que el longX -esimo byte de Y tiene su bit de marca a 0.
Ejemplo 3.3.1 Los codigos de longitud 2 son de la forma 0xxxxxxx 1xxxxxxx, por lo que
nunca podran ser prefijos de otro codigo de longitud 3 o superior, porque el segundo byte de
estos codigos siempre sera de la forma 0xxxxxxx (ver Tabla 3.3).
u
t
Dado que el bit de marca garantiza la propiedad de prefijo libre, ya no es necesario aplicar
Huffman sobre los 7 bits restantes (como suceda para Tagged Huffman) para garantizar una
codificacion de prefijo libre. Por lo tanto, para la codificacion se pueden utilizar todas las
combinaciones de valores posibles para cada byte. En concreto, teniendo en cuenta que el bit
mas significativo es el empleado como bit de marca, los valores mayores de 128 (el caso en el que
el primer bit vale 1) se utilizan cuando el byte es el u
ltimo de un codigo, y los valores menores
de 128 (aquellos cuyo primer bit del byte vale 0) si el byte ocupa otra posicion diferente dentro
del codigo.
Veamos ahora como se realiza la asignacion de codigos a las palabras que componen el texto
en funcion de sus frecuencias de aparicion en el mismo.

3.3.1.

Proceso de codificaci
on

Una vez eliminada la necesidad de utilizar codificacion Huffman, el problema reside en


encontrar una asignacion de codigos optima. La idea es realizar una codificacion que minimice
en lo posible la longitud de la cadena de salida. Se sigue conservando, por tanto, la idea de
asignar codigos mas cortos a las palabras mas frecuentes, aspecto propio de todas las tecnicas
de compresion basadas en smbolos como la que nos ocupa.
40

DENSA CON POST-ETIQUETADO


3.3. CODIFICACION
Palabra
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P

Probab.
1/2
1/4
1/8
1/16
1/32
1/64
1/128
1/256
1/512
1/1024
1/2048
1/4096
1/8192
1/16384
1/32768
1/32768

Plain Huffman
111
110
101
100
011
010
001
000 111
000 110
000 101
000 100
000 011
000 010
000 001
000 000 001
000 000 000

Tagged Huffman
111
110
101
100 011
100 010
100 001
100 000 011
100 000 010
100 000 001
100 000 000 011
100 000 000 010
100 000 000 001
100 000 000 000
100 000 000 000
100 000 000 000
100 000 000 000

011
010
001
000

Tabla 3.2: Codificaciones Plain Huffman y Tagged Huffman para una distribucion exponencial
de palabras
No Bytes
1
2
3 bytes
...
n

Codif.Tagged Huffman
1xxxxxxx
1xxxxxxx 0xxxxxxx
1xxxxxxx 0xxxxxxx 0xxxxxxx
...
1xxxxxxx 0xxxxxxx ... 0xxxxxxx

Codif.Densa con Post-Etiquetado


1xxxxxxx
0xxxxxxx 1xxxxxxx
0xxxxxxx 0xxxxxxx 1xxxxxxx
...
0xxxxxxx ... 0xxxxxxx 1xxxxxxx

Tabla 3.3: Formato de los codigos generados mediante codificacion Tagged Huffman y Densa con
Post-Etiquetado
El proceso de codificacion es, como ya se ha mencionado, mas sencillo y rapido que el utilizado
para aplicar el metodo de Huffman. No es preciso construir un arbol. La asignacion de codigos
es secuencial aprovechando todos los valores posibles de cada byte y reservando el bit de marca.
As, el proceso se lleva a cabo del siguiente modo:
1. Se ordenan las palabras distintas (el vocabulario) contenidas en el documento a comprimir.
La ordenacion se realiza de forma decreciente atendiendo a la frecuencia de aparicion de
las palabras en el texto.
2. Se asignan secuencialmente los valores 128 a 255 (10000000 a 11111111) a las 27 = 128
palabras mas frecuentes. El valor inicial es 128 debido a que, como ya se ha mencionado,
el primer bit debe mantenerse a 1 para indicar que se trata del u
ltimo byte (e inicio en
este caso) de codigo.
3. Los codigos correspondientes a las palabras 129 y siguientes estan formados por:
a) uno o mas bytes con valores entre 0 y 127 (es decir, su primer bit es 0)
b) un byte final con valor 128 o superior (es decir, su primer bit es 1)
41

DENSA CON POST-ETIQUETADO


3.3. CODIFICACION

000
001

010

000

010 011

001
N

000
P

100

101110
K

100

011

110
101
D

111

111

001
O

100

101

110

000

001

010

001 010

000

000

001
L

000
P

(A)

001
O

010
N

111
B

011
E

011
H

010 011
K

011
M

(B)

Figura 3.3: Arboles


Plain Huffman y Tagged Huffman para la distribuci
on exponencial de la
Tabla 3.2
La asignaci
on de c
odigos se realiza de un modo secuencial utilizando 7 bits de cada byte.
As, la palabra 129 se codifica como 00000000:10000000, la 130 como 00000000:10000001,
la 131 como 00000000:10000010, y as sucesivamente como si se tratasen de n
umeros de 14
bits.
La Tabla 3.4 muestra los c
odigos correspondientes a las palabras del texto seg
un su posici
on
en el vocabulario (una vez ordenadas decrecientemente por frecuencia). La tercera columna
indica la longitud del c
odigo asignado (n
umero de bytes) y la u
ltima indica el n
umero total de
palabras codificadas para cada tama
no del c
odigo (es decir, n
umero de palabras codificadas con
1 byte, n
umero de palabras codificadas con 2 bytes, etc.)
Como se puede observar en la Tabla 3.4, la codificaci
on es extremadamente simple: basta
con ordenar las palabras del vocabulario atendiendo a su frecuencia de aparici
on y asignar
secuencialmente los c
odigos. En consecuencia, la fase de codificaci
on es mucho m
as r
apida que
la correspondiente a cualquiera de las tecnicas basadas en Huffman (los procesos de codificaci
on
y decodificaci
on se explican con m
as detalle en el siguiente apartado).
Adem
as, es importante destacar el hecho de que el c
odigo de cada palabra depende de su
posici
on en el vocabulario (ordenado decrecientemente por frecuencia), no de su frecuencia
real. Es decir, dadas cuatro palabras A, B, C, D con frecuencias 0, 20, 0, 15, 0, 14 y 0, 10,
respectivamente, la codificaci
on ser
a la misma que si sus frecuencias fuesen 0, 9, 0, 09, 0, 009 y
0, 001. El resultado, por tanto, es independiente del sesgo de la distribuci
on de las palabras que
componen el documento de entrada (a diferencia de lo que sucede en otras codificaciones como
Plain o Tagged Huffman). Observese que, tanto si se trata de una distribuci
on uniforme como
exponencial (los dos casos m
as extremos) los c
odigos generados son exactamente los mismos.
Ejemplo 3.3.2 En la Tabla 3.5 se muestra la codificaci
on Densa con Post-Etiquetado para una
distribuci
on de 16 palabras (utilizando bytes especiales formados u
nicamente por 3 bits).
Aunque para la codificaci
on Densa no es necesario construir un
arbol ya que la asignaci
on de
c
odigos es secuencial, para mayor claridad en la Figura 3.4 se muestra el
arbol de codificaci
on
asociado.
u
t

42

DENSA CON POST-ETIQUETADO


3.3. CODIFICACION
Posici
on Palabra
1
2
3
...
27 = 128
27 + 1 = 129
130
131
...
256
257
258
259
...
27 27 + 27 = 16512
27 27 + 27 + 1 = 16513
16514
16515
...
(27 )3 + (27 )2 + 27
...

Cod.Densa con Post-Etiquetado


10000000
10000001
10000010
...
11111111
00000000:10000000
00000000:10000001
00000000:10000010
...
00000000:11111111
00000001:10000000
00000001:10000001
00000001:10000010
...
01111111:11111111
00000000:00000000:10000000
00000000:00000000:10000001
00000000:00000000:10000010
...
01111111:01111111:11111111
...

No Bytes
1
1
1
...
1
2
2
2
...
2
2
2
2
...
2
3
3
3
...
3
...

No Pal

27

27 27

(27 )3

Tabla 3.4: Asignacion de codigos mediante codificacion Densa con Post-Etiquetado


Como se puede observar en la Figura 3.4, la codificacion Densa con Post-Etiquetado siempre
da lugar a un arbol lo mas balanceado posible, independientemente de las frecuencias del
vocabulario. Esto es debido a que, dado que la asignacion de codigos es secuencial, durante
la codificacion nunca aumentara la longitud de los codigos (es decir, el n
umero de niveles del
arbol) mientras no se hayan utilizado las 28 = 256 ramas posibles de todos los nodos del nivel
actual, de las cuales 128 corresponderan a bytes finales (con valores entre 128 y 255) y 128 a
bytes intermedios (con valores entre 0 y 127).

43

DENSA CON POST-ETIQUETADO


3.3. CODIFICACION

Palabra
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P

Orden
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

C
odigo
100
101
110
111
000 100
000 101
000 110
000 111
001 100
001 101
001 110
001 111
010 100
010 101
010 110
010 111

Tabla 3.5: Ejemplo de codificacion Densa con Post-Etiquetado para un vocabulario de 16


palabras

100 101
A

000

110 111
C

001

010

100 101 110 111


E

100 101 110 111

100 101 110 111


H

Figura 3.4: Arbol


asociado a la codificacion Densa con Post-Etiquetado de la Tabla 3.5

44

BIBLIOGRAFIA

Bibliografa
[1] N. Abramson. Information Theory and Coding. McGraw-Hill, New York, 1963.
[2] Amir and Benson. Efficient two-dimensional compressed matching.
Compression Conference. IEEE Computer Society TCC, 1992.

In DCC: Data

[3] A. Amir, G. Benson, and M. Farach. Let sleeping files lie: Pattern matching in Z-compressed
files. Journal of Computer and System Sciences, 52(2):299307, Apr. 1996.
[4] R. A. Baeza-Yates and B. Ribeiro-Neto. Modern Information Retrieval. Addison-Wesley
Longman, May 1999.
[5] T. C. Bell, J. G. Cleary, and I. H. Witten. Text Compression. Prentice Hall, 1990.

[6] N. R. Brisaboa, E. L. Iglesias, G.Navarro,


and J. R. Param
a. An efficient compression code
for text databases. In 25th European Conference on IR Research, ECIR 2003; LNCS 2633,
pages 468481, Pisa, Italy, 2003.
[7] M. Buro. On the maximum length of huffman codes. Information Processing Letters,
45(5):219223, 1993.
[8] R. M. Capocelli, R. Giancarlo, and I. J. Taneja. Bounds on the redundancy of Huffman
codes. IEEE Transactions on Information Theory, 32:854857, 1986.
[9] T. M. Cover and J. A. Thomas. Elements of Information Theory. Wiley, 1991.
[10] R. G. Gallager. Variations on a theme by Huffman. IEEE Transactions on Information
Theory, 24(6):668674, 1978.
[11] D. S. Hirschberg and D. A. Lelewer. Efficient decoding of prefix codes. Technical Report
ICS-TR-89-09, University of California, Irvine, Department of Information and Computer
Science, Mar. 1989.
[12] D. A. Huffman. A method for the construction of minimum-redundancy codes. In Proc.
Inst. Radio Eng., pages 10981101, Sept. 1952. Published as Proc. Inst. Radio Eng., volume
40, number 9.
[13] M. J. L. Lopez. Criptografa y seguridad en computadores. 3a edicion. Libro electronico.
http://wwwdi.ujaen.es/ mlucena/lcripto.html.
[14] U. Manber. A text compression scheme that allows fast searching directly in the compressed
file. Lecture Notes in Computer Science, 807:113124, 1994.
n: Modelado y Representacio
n
Teora de la Informacio

45

BIBLIOGRAFIA
[15] A. Moffat. Word-based text compression. Software - Practice and Experience, 19(2):185
198, 1989.
[16] Navarro and M. Raffinot. A general practical approach to pattern matching over Ziv-Lempel
compressed text. Lecture Notes in Computer Science, 1645:14??, 1999.
[17] D. Salomon. Data Compression: The Complete Reference. Springer-Verlag, Berlin,
Germany / Heidelberg, Germany / London, UK / etc., second edition, 2000.
[18] C. E. Shannon and W. Weaver. The Mathematical Theory of Communication. University
of Illinois Press, Urbana, Illinois, 1949.
[19] E. Silva de Moura, G. Navarro, N. Ziviani, and R. Baeza-Yates. Fast and flexible word
searching on compressed text. ACM Transactions on Information Systems, 18(2):113139,
Apr. 2000.
[20] A. Turpin and A. Moffat. Fast file search using text compression. In Proceedings of the
20th Australian Computer Science Conference, pages 18, 1997.
[21] I. H. Witten, A. Moffat, and T. C. Bell. Managing Gigabytes: Compressing and Indexing
Documents and Images. Morgan Kaufmann Publishers, USA, 1999.
[22] S. Wu and U. Manber. Fast text searching allowing errors. Communications of the ACM,
35(10):8391, Oct. 1992.
[23] J. Ziv and A. Lempel. A universal algorithm for sequential data compression. IEEE
Transactions on Information Theory, 23(3):337343, 1977.
[24] J. Ziv and A. Lempel. Compression of individual sequences via variable-rate coding. IEEE
Transactions on Information Theory, 24(5):530536, 1978.
[25] N. Ziviani, E. Silva de Moura, G. Navarro, and R. Baeza-Yates. Compression: A key for
next-generation text retrieval systems. IEEE Computer, 33(11):3744, 2000.

46

S-ar putea să vă placă și