Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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
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
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) =
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
5 4
14 13
9 8
14 13
9 5
14 13
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
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) =
1.2.
Logaritmos
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
n
X
i=1
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
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
i=1
1.4.2.
Interpretaci
on de la entropa
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
1
1 1
1 1
1
log2 log2 log2
= 1,5 bits
2
2 4
4 4
4
u
t
1.4.3.
Otra interpretaci
on de la entropa
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
1.5.
Entropa Condicionada
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 )
m
n X
X
i=1 j=1
H(X/Y = yj ) =
n
X
i=1
H(X/Y ) =
n X
m
X
i=1 j=1
n X
m
X
i=1 j=1
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
H(V )
0, 81
= 1
= 0, 19
maxH(V )
1
u
t
v
X
i=1
P (i) longi
v
X
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
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
u
t
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
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
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)
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
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
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
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
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)
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
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)
2.5.
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
3.2.1.
Proceso de codificaci
on
255
p1
255
p512
p256 p257
(A)
255
2
p259
0
p1
1
p2
0
254 nodos vacos
p3
p512
255
p258
(B)
3.2.2.
Ejemplos de codificaci
on Plain y Tagged Huffman
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
000
001
010
011
000
A
001
B
010
011
(A)
111
111
110
110
101
001
000
101
100
100
(B)
3.3.1.
Proceso de codificaci
on
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
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
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)
42
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
43
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
100 101
A
000
110 111
C
001
010
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.
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