Documente Academic
Documente Profesional
Documente Cultură
Introducci
on a la teora
de c
odigos y de la
informaci
on
Jos
e Galaviz Casas
Departamento de Matem
aticas
Facultad de Ciencias
UNAM
Indice
Prefacio
1 Preliminares
1.1
Aritmetica modular y un poco de
1.2
Polinomios . . . . . . . . . . . . .
1.3
Cadenas de smbolos . . . . . . .
1.4
C
odigos . . . . . . . . . . . . . .
1.5
Anotaciones finales . . . . . . . .
Ejercicios . . . . . . . . . . . . .
teora de n
umeros
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
12
16
21
33
33
2 Codificaci
on eficiente
2.1
Arbol
de decodificacion . . . . . . . . .
2.2
Codificaci
on de Shannon-Fano . . . . . .
2.3
Codificaci
on de Huffman . . . . . . . . .
2.4
Longitud promedio de un codigo . . . .
2.5
La eficiencia del esquema de codificacion
Ejercicios . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
de Huffman
. . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
35
35
37
39
43
45
52
3 Informaci
on
y entropa
3.1
Cantidad de informacion . . . .
3.2
Entropa de informacion . . . .
3.3
Propiedades de la entropa . . .
3.4
Extensiones de una fuente . . .
3.5
El primer teorema de Shannon
Ejercicios . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
55
55
58
60
63
66
70
.
.
.
.
.
73
74
81
82
89
91
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Codificaci
on para detectar y corregir errores
4.1
Regla de decision y canal de comunicacion . . . . . . .
4.2
Decodificaci
on al vecino mas cercano . . . . . . . . . .
4.3
Distancia mnima, capacidad de deteccion y correccion
4.4
C
odigos maximales . . . . . . . . . . . . . . . . . . . .
4.5
Probabilidad de error al decodificar . . . . . . . . . . .
III
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
INDICE
IV
4.6
4.7
4.8
4.9
4.10
4.11
C
odigos de Hamming: idea e implementacion
Esferas y c
odigos perfectos . . . . . . . . . . .
Equivalencia de codigos . . . . . . . . . . . .
Tasa de transmision y de correccion . . . . .
El teorema de la codificacion con ruido . . . .
C
odigos de Golay: idea e implementacion . .
Ejercicios . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
92
96
99
100
102
104
106
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
109
109
111
113
116
118
120
126
127
6 C
odigos cclicos
6.1
Definici
on, asociacion con polinomios . . . . .
6.2
Polinomio generador . . . . . . . . . . . . . .
6.3
Matriz generadora . . . . . . . . . . . . . . .
6.4
Polinomios irreducibles y factorizacion . . . .
6.5
Polinomio y matriz de verificacion de paridad
6.6
Codificaci
on y decodificacion . . . . . . . . .
Ejercicios . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
131
131
133
136
138
141
143
146
5 C
odigos lineales
5.1
Definici
on, caractersticas . . . . . . . . .
5.2
La matriz generadora . . . . . . . . . . . .
5.3
Correcci
on de errores . . . . . . . . . . . .
5.4
Probabilidad de decodificar correctamente
5.5
Complemento ortogonal, codigo dual . . .
5.6
Decodificaci
on de sndrome . . . . . . . .
5.7
C
odigos de Hamming y Golay revisados .
Ejercicios . . . . . . . . . . . . . . . . . .
Bibliografa
.
.
.
.
.
.
.
.
147
+Prefacio
Se buscan j
ovenes delgados y vigorosos, no mayores de 18 a
nos, deben ser jinetes
expertos dispuestos a arriesgar la vida diariamente. Preferentemente huerfanos. Era
el atemorizante texto que se poda leer en los carteles de reclutamiento de la recien
fundada compa
na Pony Express en 1860. Los jovenes candidatos deban comprometerse
a atravesar dos tercios de la anchura de Norteamerica (3 200 km), en 10 das a lomo
de caballo, haciendo entregas entre St. Joseph, Missouri y Sacramento, California.
La garanta de entrega de la correspondencia era tan endeble como la pervivencia del
mensajero: la creciente de un ro, un trastabilleo de las agobiadas herraduras, una bala
o los rigores de la Sierra Nevada podan segar la vida del jinete y entregar al olvido su
epistolar cargamento.
Al a
no siguiente la compa
na Western Union completo la lnea telegrafica que hizo
obsoleta la Pony Express. La entrega confiable, sin embargo, a
un dependa de la figura
del mensajero, ahora personificado por muchachos de 12 a
nos que recorran las calles en
bicicleta. La historia, una de las formas de la irona, quiso que uno de esos muchachos,
de nombre Claude Shannon, nos entregara lo que hoy conocemos como teora de la
informaci
on. Lo que ha hecho posible, en buena medida, que hoy podamos escribir
un mensaje de correo electronico y estar confiados en que sera ledo, tal cual, por su
destinatario; lo que nos ha hecho posible observar la superficie de Marte, los anillos de
Saturno o un partido de f
utbol soccer en Sudafrica.
En julio y octubre de 1948, en el Bell Systems Technical Journal apareci
o el artculo
titulado A Mathematical theory of communication, en el que Claude Shannon formul
o
los fundamentos de la teora de la informacion. El artculo versa, por una parte, de la
manera de codificar los datos producidos por una fuente de informacion para representarlos eficientemente, suponiendo una confiabilidad absoluta en la recuperaci
on exacta
de lo que la fuente ha producido. Trata, por otra parte, de la manera de codificar los datos que, luego de ser producidos por una fuente, viajan a traves de un canal imperfecto,
en el que los pueden alterarse imprevisiblemente. El primer tratamiento da lugar a lo
que conocemos como codificacion de fuente (source coding), el segundo a la codificaci
on
de canal (chanel coding).
Es acerca de esto que trata la presente obra, la codificacion eficiente y la codificaci
on
para detectar y corregir errores. El objetivo es presentar los fundamentos de la teora
de c
odigos en el marco conceptual que ofrece la teora de la informacion.
Se supone del lector un conocimiento elemental de algebra lineal, de combinatoria y
de probabilidad. El captulo inicial, sin embargo, esta dedicado a presentar brevemente
algunos de los conocimientos preliminares necesarios para abordar el contenido esencial
del libro: un poco de teora de n
umeros, de combinatoria relacionada con cadenas de
smbolos y de operaciones con polinomios.
V
VI
Prefacio
El captulo 2 est
a dedicado a la codificacion eficiente de datos. Se introducen los
conceptos relacionados con la codificacion y con los codigos enfocados en la eficiencia
de la representaci
on.
En el captulo 3 se presenta el marco teorico y conceptual de la teora de la informaci
on. Se introducen los mecanismos para cuantificar la informacion contenida en
los smbolos individuales y para evaluar el promedio de la misma, lo que constituye el
concepto de entropa de informacion.
El captulo 4 introduce la transmision de datos sujeta a errores. Se analiza la naturaleza estadstica de los mismos y se establecen los requisitos que la codificaci
on debe
poseer para detectarlos o corregirlos.
En el captulo 5 se presentan tambien codigos orientados a detectar y corregir errores,
pero con una estructura algebraica mas robusta, a saber, la de espacio vectorial, lo que
simplifica notablemente las operaciones.
El captulo 6 trata de los codigos cclicos, que constituyen un paso mas en la evoluci
on
de los c
odigos detectores y correctores de errores, pensando como polinomios a las
palabras del c
odigo.
El texto est
a pensado para estudiantes de la segunda mitad de una carrera a nivel licenciatura en ciencias exactas o de ingeniera, preferentemente vinculadas con la
computaci
on.
Debo agradecer a mi institucion, la Facultad de Ciencias de la UNAM, en particular
al Departamento de Matematicas de la misma, por las facilidades concedidas para la
realizaci
on de la obra y al apoyo economico institucional que a traves del proyecto
papime PE100205 brindo la Universidad.
Agradezco tambien a los muchos estudiantes de Ciencias de la Computaci
on y algunos de Matem
aticas quienes conocieron las versiones preliminares del texto y cuya
retroalimentaci
on resulto fundamental. Agradezco tambien a mis colegas de la facultad
que han contribuido con la forma y el fondo del libro, particularmente a la Dra. Elisa
Viso, quien estuvo a cargo de la supervision del proyecto institucional mencionado y
adem
as construy
o el formato en el que se presenta la obra.
Preliminares
Definici
on 1.1 Decimos que a es congruente con b modulo m, o en notacion:
a b (mod m)
cuando se obtiene el mismo residuo al dividir a entre m y b entre m.
Es posible formular definiciones alternativas de a b (mod m).
1
Preliminares
(1.2)
como r1 = r2 :
a b = (c1 c2 )m = c3 m
(1.3)
EJEMPLO 1.1
73
(mod 2) porque 3 = 2 1 + 1 y 7 = 2 3 + 1.
5 49
96 4
131 100
Simetrica. Si a est
a relacionado con b, entonces b esta relacionado con a. Es decir a b
(mod m) es equivalente a b a (mod m).
Transitiva. Si a est
a relacionado con b y b esta relacionado con c, entonces a est
a relacionado
con c. Esto es a b (mod m) y b c (mod m) implica que a c (mod m).
Como el lector recordara, toda relacion de equivalencia induce una partici
on en el
conjunto sobre el que se define, en nuestro caso, los enteros. En efecto, una vez que
se ha fijado m, el tama
no del modulo, los posibles residuos que se obtienen de dividir
por m son los enteros no negativos menores que m, as que cualquier entero, estar
a
finalmente en relacion con uno y solo uno de estos posibles residuos. El conjunto de
todos los enteros, a traves de la relacion de congruencia modulo m, es partido en m
diferentes subconjuntos o clases de equivalencia. Cada una de estas clases podemos
pensarla representada por el entero mas peque
no en ella, es decir, uno de los m
residuos posibles, por lo que a estas clases suele llamarseles clases residuales m
odulo m.
EJEMPLO 1.2
x 61
(mod 7)
Definici
on 1.2 Sean x, y Z. La suma de x y y en Zm es el residuo que resulta de dividir
x + y Z entre m. Analogamente el producto de x y y en Zm es el residuo que resulta
de dividir x y Z entre m.
N
otese que con esta definicion Zm es un conjunto cerrado bajo la suma y el producto
m
odulo m.
EJEMPLO 1.3
En Z9 :
7+5=3
porque 7 + 5 = 12 = 9 1 + 3, analogamente: 5 4 = 2 porque 5 4 = 20 = 9 2 + 2
Preliminares
Definici
on 1.3 A la terna hZm , +, i es a lo que, en adelante, llamaremos los enteros modulo
m. Generalmente, abusando de la notacion, lo denotaremos simplemente como Zm .
Es bien conocido, por todos los dedicados a la computacion el conjunto de los enteros
m
odulo dos. La tabla de sumar en Z2 es:
+
y la de multiplicar:
N
otese que 42 = 0 en Z8 , pero 4 y 2 son ambos, distintos de cero. Sera deseable que
cuando un producto sea cero al menos uno de los operandos sea cero. Que necesitamos
para que esto ocurra?
Supongamos que a, b Zm y que a b = 0 Zm , es decir:
ab0
(mod m)
(1.4)
o dicho de otra forma m | (a b). Nosotros quisieramos que alguna de las siguientes
condiciones fuera verdadera:
1. a = 0
lo que significa que a 0
2. b = 0
lo que an
alogamente significa que: m | b
As que, en sntesis, quisieramos que m | (a b) implique que m divide a uno de los
factores, al menos. Esto significa, como demostraremos, que m es un n
umero primo.
(1.5)
(mod p)
As que: ab = 0 en Zp .
En
algebra, a un conjunto cerrado bajo una operacion definida en el, que sea asociativa se le denomina semigrupo. Si un semigrupo posee elemento identidad se denomina
monoide y si adem
as cada elemento tiene inverso bajo la operacion definida, se denomina grupo. Si la operacion es conmutativa el grupo es abeliano. Nuestros Zm son
un grupo abeliano con la operacion + y con el producto () son un semigrupo, esto en
lenguaje algebraico es un anillo. Pero lo mejor viene cuando m es un n
umero primo, en
ese caso Zm es un campo.
Definici
on 1.4 Un campo es un conjunto no vaco F con dos operaciones binarias: adicion
(+) y producto (), que cumplen con las siguientes propiedades:
Sean a, b y c elementos cualesquiera de F
1. Asociatividad
a + (b + c) = (a + b) + c
a (b c) = (a b) c
2. Conmutatividad
a+b=b+a
ab=ba
Preliminares
3. Distributividad
a (b + c) = a b + a c
4. Existe un elemento distinguido, denotado como 0 tal que:
0+a=a+0=a
5. Existe un elemento distinguido, denotado como 1 tal que:
1a=a1=a
6. Existe un inverso aditivo, denotado con a y un inverso multiplicativo, denotado
con a1 tales que:
a + (a) = (a) + a = 0
a (a1 ) = (a1 ) a = 1
Teorema 1.4 En Zp todos los elementos distintos de cero tienen un inverso multiplicativo si
y s
olo si p es primo.
Demostraci
on:
La demostraci
on en este sentido la haremos negando la tesis y demostrando la negaci
on de la hip
otesis. Es decir: si p no es primo entonces no todos los elementos
de Zp tienen inverso.
Si p no es primo significa que es divisible entre alg
un n
umero distinto de 1 y de
p mismo. Es decir, podemos escribir p = ab con a y b enteros distintos de cero y
menores a p. Pero entonces a, b Zp y como el producto de ellos es p entonces
a b = 0 en Zp .
Ahora bien, si a tuviera inverso a1 entonces tendramos:
b = a1 (a b) = a1 0 = 0
pero habamos dicho que b era distinto de cero, as que esto es una contradicci
on.
Por tanto a no tiene inverso, existe un elemento en Zp sin inverso.
Supongamos ahora que p es primo, debemos deducir que todos los elementos de Zp
tienen inverso.
Sea a un elemento cualquiera de Zp . Consideremos ahora todos los productos de
la forma a b donde b Zp . Si hubiera un par de elementos b, b0 Zp distintos
entre s pero que dieran el mismo producto al multiplicarse por a tendramos que
b 6= b0 y a b = a b0 , es decir
(a b) c (mod p)
y
(a b0 ) c (mod p)
Es decir, al dividir a b entre p se obtiene el mismo resduo que al dividir a b0
entre p. Entonces:
ab = kp + c
ab0 = k 0 p + c
Si el residuo es el mismo y el divisor tambien, el algoritmo de la divisi
on nos dice
que los cocientes son los mismos. Esto es: k = k 0 .
Entonces b debe ser tambien igual a b0 lo que contradice nuestra hip
otesis. As
que no puede haber dos productos iguales. Para toda b Zp el producto a b es
un elemento distinto de Zp . As que en total hay p productos distintos, todos ellos
en Zp , entonces el conjunto de todos los posibles productos es exactamente todo
Zp y debe haber alg
un producto que sea igual a 1. Es decir, existe alguna b Zp
tal que a b = 1, luego a, un elemento cualquiera de Zp , tiene inverso.
Lo que acabamos de demostrar es un caso particular de una situacion mas general que
demostraremos m
as adelante, a saber: en un conjunto Zm un elemento a tiene inverso
multiplicativo si a es primo relativo com m. En el caso que acabamos de demostrar,
como m es primo entonces cualquier elemento en Zm resultara primo relativo con el, as
que todos los elementos de Zm tendran inverso.
Tambien es prudente se
nalar que estos campos finitos no son los u
nicos. En general
m
existe un campo finito de tama
no p para todo primo p y todo entero positivo m. A
estos campos se les suele llamar Campos de Galois y se denotan con GF(q) (Galois
Field ), donde q = pm . Los Zp son un caso particular de campo de Galois en los que
q = p1 . Estos campos constituyen una de las areas de trabajo fundamentales en la teora
de c
odigos y en criptografa.1
Adem
as, dada una pareja p, m, el campo de Galois de orden (tama
no) pm es u
nico salvo el nombre
de sus elementos y la manera de denotar las operaciones, es decir, son u
nicos salvo isomorfismo.
Preliminares
EJEMPLO 1.4
En Z11 6 + 5 = 0, as que el inverso aditivo de 6 es 5, en notacion:
6 = 5
Adem
as en Z11 6 2 = 1, as que
61 = 2
Por supuesto, dado que 2 es primo Z2 es un campo, un campo curioso: cada elemento
es su propio inverso aditivo: sumar es lo mismo que restar.
Definici
on 1.5 Dados dos numeros enteros cualesquiera a y b, el Maximo Comun Divisor de
a y b, denotado mcd(a, b), es el entero mas grande que los divide a ambos. El mnimo
com
un m
ultiplo de a y b, denotado mcm(a, b), es el entero mas peque
no que resulta
divisible por ambos.
Con base en el concepto de mcd(a, b) se define lo siguiente.
Definici
on 1.6 Dos numeros enteros a y b son primos relativos si mcd(a, b) = 1.
Ya sabemos que a b (mod m) significa que m | (a b). Recordemos tambien el
siguiente hecho evidente.
(mod m)
(1.6)
Esta ecuaci
on tiene solucion, y es u
nica, si y solo si a y m son primos relativos, es
decir, mcd(a, m) = 1. Es facil demostrarlo.
(mod m).
1 significa que:
d|a
(1.7)
d|m
(1.8)
con d > 1.
Por otra parte 2 significa que:
m | (ab 1)
(1.9)
(1.10)
y por 1.7:
d | ab
(1.11)
As que para que se cumplan simultaneamente 1.10 y 1.11 debe ocurrir que:
d|1
(1.12)
10
Preliminares
llamada
0
1
2
3
4
5
6
a
97
77
20
17
3
2
1
b
77
20
17
3
2
1
0
cociente
1
3
1
5
1
2
11
(1.13)
En esencia la ecuacion 1.13 dice que cualquier residuo (los valores de b) resultado del
proceso, puede escribirse como combinacion lineal de sus dos predecesores, s
olo tenemos
que reescribir la ecuacion como bi+1 = qi bi + bi1 . Pero si esto es posible entonces
podemos irnos hacia atras escribiendo cada residuo de la expresion como combinaci
on
lineal de sus predecesores hasta llegar a los mismsimos a y b. Como el u
ltimo residuo es
mcd(a, b) esto quiere decir que el maximo com
un divisor de dos n
umeros puede escribirse
como combinaci
on lineal de ellos. En particular si los dos n
umeros a y b eran primos
relativos entonces:
1 = a + b
(1.14)
(mod p)
12
Preliminares
(mod ni )
si y s
olo si:
x a (mod n)
Este teorema es una consecuencia del conocido teorema chino del residuo.
No podemos terminar esta seccion sin enunciar el teorema mas importante.
tica] Cualquier entero n tal que
Teorema 1.9 [Teorema fundamental de la artitme
| n |> 1 se puede expresar como el producto de n
umeros primos. La expresion es u
nica
salvo el orden en que los factores son listados y sus signos.
1.2 +Polinomios
Seguramente el lector recuerda, de sus cursos mas elementales, el concepto de polinomio.
Definici
on 1.7 Un polinomio en x es una expresion de la forma:
an xn + an1 xn1 + . . . + a1 x + a0
en la que los exponentes de la variable x son enteros no negativos y los coeficientes
ai R.
Al coeficiente distinto de cero, asociado con la mayor potencia de x se le suele llamar
el coeficiente principal y si es 1, se dice que el polinomio es m
onico. A la potencia mayor
de x con coeficiente distinto de cero se le denomina el grado del polinomio.
En el conjunto de polinomios tenemos definidas operaciones como la suma y el
producto. La primera de estas operaciones es asociativa y conmutativa y cada elemento
del conjunto de polinomios posee un inverso aditivo, as que, de acuerdo con lo que
habamos mencionado antes, el conjunto de polinomios es un grupo abeliano con la
suma.
Con el producto, dado que este es asociativo, el conjunto de polinomios es, al menos
un semigrupo. Resulta entonces que con la suma y el producto, el conjunto de polinomios
es un anillo. Adem
as posee un par de caractersticas especiales, existe un elemento
neutro con el producto y este al igual que la suma, tambien es conmutativo, as que esto
le concede dos calificativos adicionales al anillo: anillo conmutativo con unidad.
13
1.2 Polinomios
EJEMPLO 1.5
Sean p(x) = 2x4 3x2 y q(x) = 6x4 + 2x3 + x2 + 2.
p(x) + q(x) = 8x4 + 2x3 2x2 + 2
y
EJEMPLO 1.6
Sea p(x) = 16x2 + 16x + 4, entonces:
p(x) = (4x + 2)2
Si q(x) = x2 + x 12, entonces:
q(x) = (x + 4)(x 3)
El objetivo era obtener los factores mas simples posibles, es decir, aquellos que ya
no pudieran, a su vez, factorizarse. A estos polinomios los llamamos irreducibles y
adquieren un papel analogo al que tienen los n
umeros primos en la aritmetica.
lgebra] Para todo polonomio p(x) de grado
Teorema 1.10 [Teorema fundamental del a
n > 0 existen exactamente n races {c1 , c2 , . . . , cn } (no necesariamente distintas), tales
que:
p(x) = a(x c1 )(x c2 ) . . . (x cn )
donde a es el coeficiente principal de p.
14
Preliminares
EJEMPLO 1.7
Sea p(x) = x + 1, entonces los polinomios que pueden generarse a partir de p con el
conjunto {1, x, x2 , x3 } son: x + 1, x2 + x, x3 + x2 y x4 + x3 .
EJEMPLO 1.8
La divisi
on de 9x3 + 3x2 + 6x + 3 entre 3x2 + 6 se puede obtener de la siguiente forma:
3x + 1
3x2
9x3
+ 6)
9x3
3x2
+ 6x + 3
18x
3x2 12x + 3
3x2
6
12x 3
de donde: 9x3 + 3x2 + 6x + 3 = (3x2 + 6)(3x + 1) (12x + 3). Es decir, el polinomio
cociente es: 3x + 1 y el residuo es: 12x 3.
15
1.2 Polinomios
EJEMPLO 1.9
M
as tarde estaremos particularmente interesados en el producto de polinomios m
odulo
n
n
otro polinomio de la forma x + 1 o x 1. Por ejemplo:
(x3 + x + 6)(2x + 3) = 2x4 + 3x3 + 2x2 + 15x + 18
Para obtener el residuo de este producto, modulo x3 + 1:
2x + 3
x3
2x4
+ 1)
3x3
2x2
2x4
+ 15x + 18
2x
(mod x3 + 1).
EJEMPLO 1.10
En P5 (Z2 ) (lo que significa que las operaciones se llevan a cabo modulo x5 1).
(x4 + x2 + 1)(x2 + 1) = x6 + 2x4 + 2x2 + 1
= x5 x + 1
= x+1
Lo que abrevia el procedimiento usual, anulando luego los coeficientes pares:
x
x5
x6
1)
2x4
2x2
2x2
x6
+1
+x
2x4
+x
16
Preliminares
Definici
on 1.8 A un conjunto finito S = {s1 , s2 , . . . , sn } de n smbolos distintos le denominaremos un alfabeto. A una secuencia finita de elementos de S se le denomina una cadena
sobre S. Al n
umero de elementos en S le llamaremos el tama
no de S.
Hay que notar que la semantica nada tiene que ver con los smbolos o las cadenas.
No nos interesa el significado de las cosas expresadas en un alfabeto, solo nos interesan
las palabras mismas.
Dado que una cadena es finita podemos hablar de su longitud. La longitud de una
cadena x = x1 x2 . . . xk es el n
umero de smbolos que la constituyen y la denotaremos
con lon (x) = k.
La concatenaci
on o yuxtaposicion de dos cadenas x, y es la cadena z obtenida de
poner y inmediatamente a continuacion de x. En ese caso diremos que x y y son,
respectivamente, prefijo y sufijo de z.
Por supuesto, en caso de que z = xy tenemos lon (z) = lon (x) + lon (y).
Con S denotaremos el conjunto de todas las posibles cadenas sobre un alfabeto S,
incluyendo la cadena vaca .
Con S n denotaremos el conjunto de todas las cadenas de longitud n sobre S y con
Sn el conjunto de todas las cadenas de longitud n o menor sobre S.
Con 0 denotaremos la cadena constituida exclusivamente de ceros cuando nuestro
alfabeto tenga al cero, por supuesto.
Con | A | denotaremos la cardinalidad o el tama
no del conjunto A.
kn+1 1
k1
Demostraci
on:
Para demostrar el primer inciso basta notar que, dado que se trata de cadenas de
longitud n entonces hay, en cada cadena, k maneras de escoger el smbolo a poner en la
primera posici
on, cada vez que se elige esta hay k opciones para la siguiente, etcetera.
17
k n+1 1
k1
El c
alculo de la suma parcial es facil de comprobar, solo debemos restar a la suma
original el producto de k veces ella misma.
| Sn |= 1 + k + k 2 + . . . + k n =
Teorema 1.12
1. En Zn2 el n
umero de cadenas que tienen exactamente k ceros es:
n
k
2. En Znr el n
umero de cadenas que tienen exactamente k ceros es:
n
(r 1)nk
k
Demostraci
on:
Esencialmente, de los n lugares disponibles en la cadena debemos elegir d
onde poner
los k ceros, esto es, elegir un subconjunto de k posiciones de las n posibles, de all:
n
k
Para el segundo inciso, ya que se eligieron los k lugares donde van los ceros, hay
que elegir ahora que smbolos poner en los restantes n k lugares. Por supuesto ya no
podemos poner ceros, as que para todos los lugares podemos elegir solo de entre r 1
smbolos.
Hay que notar que en el teorema anterior tenemos la posibilidad de elegir las posiciones de la cadena donde van los ceros, de all el factor de las combinaciones de k en n.
Si estos lugares estuvieran fijos, es decir, si quisieramos saber cuantas cadenas hay que
tengan k ceros en posiciones fijas el resultado es, por supuesto, diferente. En este caso
ya no es posible elegir donde poner los ceros y si solo puede haber una posibilidad. Si
queremos saber cu
antas cadenas hay que tengan al menos k ceros en ciertas posiciones
18
Preliminares
fijas, entonces debemos contar cuantas opciones hay para las restantes n k posiciones.
En cada una de ellas podemos poner 0 o 1, as que el resultado es 2nk .
EJEMPLO 1.11
En Z12
umero de cadenas que tienen exactamente tres ceros y dos unos es:
4 , el n
12
9
27
3
2
primero elegimos tres de las 12 posiciones donde poner cero, luego 2 de las 9 restantes
donde poner 1, el resto de las posiciones (7) las rellenamos con 2 o 3.
En general el n
umero de cadenas en Zkn (cadenas de longitud k en Zn ) que contienen
r ceros y t unos es:
kr
k
(n 2)(krt)
t
r
En Z12
umero de cadenas con, al menos 10 ceros es:
4 , el n
12
12
12
3+
32 +
12
11
10
Generalizando, el n
umero de cadenas en Zkn con, al menos, r ceros es:
k
k
k
kr1
kr
(n 1)
+ ... +
(n 1)
+
k
r+1
r
Ahora que tenemos un concepto de cadena de smbolos en un alfabeto, resulta conveniente definir una nocion de distancia que nos permita expresar que tan diferentes
son dos cadenas entre s, que tan alejadas estan. Para ello utilizaremos la distancia de
Hamming.
Definici
on 1.9 La distancia de Hamming entre dos cadenas cualesquiera x, y S n , denotada
con d (x, y), es el n
umero de posiciones en las que x difiere de y.
EJEMPLO 1.12
La distancia entre 0343201 y 0322101 en Z75 es 3 dado que las cadenas coinciden en sus
dos primeros y en sus dos u
ltimos smbolos y difieren en los 3 centrales.
19
20
Preliminares
dado que u 0.
En un caso m
as general en el que el alfabeto no es binario, el hecho de que x difiera
de y y que y difiera de z no necesariamente significa que x coincida con z. As que
las posiciones en las que x difiere de z estan constituidas por las de los incisos (1) y
posiblemente por algunas de las restantes u posiciones. Digamos que difieren en w de
esas u con w u.
d (x, z) = r + t + w r + t + u r + t + 2u = d (x, y) + d (y, z)
Dado que 0 w u.
En caso de trabajar sobre un alfabeto binario, para fines practicos de implementaci
on, es conveniente pensar la distancia de Hamming entre dos cadenas como el n
umero
de unos contenidos en el resultado de aplicar la operacion de disyuncion exclusiva (a
la que tambien podemos llamar suma m
odulo dos) entre las dos cadenas, la operaci
on
bit a bit conocida como or exclusivo o xor. La tabla de verdad para esta operaci
on,
denotada con , es la siguiente:
x
xy
Notar
a el lector que el xor vale 1 cuando ambos operandos son diferentes y 0 en
otro caso. As que el xor nos marca las posiciones en las que difieren dos cadenas
binarias. S
olo resta contar el n
umero de unos en el resultado del xor para conocer la
distancia de Hamming.
EJEMPLO 1.13
Sean x = 01001101 y y = 10001110 dos cadenas en Z82 . La distancia de Hamming es el
n
umero de unos en:
X Y = 11000011
por lo que d (x, y) = 4.
A fin de cuentas podemos pensar a las cadenas binarias como la expresion binaria
de un n
umero entero; por supuesto, podemos entonces pensar el resultado de un xor,
21
1.4 C
odigos
como otro n
umero escrito en binario. As que contar el n
umero de unos en cualquier
cadena binaria consiste en saber cuantos unos tiene la expresion binaria del n
umero que
representa. En ciertas circunstancias2 podemos hacer esto echando mano de la expresi
on
obtenida en [9]:
w(n) = n
n
X
n
i=1
2i
(1.15)
donde n es el n
umero del que se quiere saber el n
umero de unos en su expresi
on binaria y
w(n) denota justamente el n
umero de unos en la expresion binaria de n. A este n
umero
se le denomina frecuentemente el peso de n.
1.4 +Codigos
Un c
odigo es un conjunto cualquiera de cadenas sobre un cierto alfabeto. Por ejemplo
C = {0, 01, 101, 1101, 0010} es un codigo sobre Z2 . Formalmente hablando:
Definici
on 1.10 Sea A = {a1 , a2 , . . . , ar } un conjunto finito de smbolos al que llamaremos
alfabeto del c
odigo. Un codigo r-ario sobre A es un subconjunto C de A de todas las
palabras sobre A. El n
umero r es llamado la base del codigo.
Por supuesto los codigos sobre Z2 se llaman binarios.
Definici
on 1.11 Sea S = {s1 , s2 , . . . , sq } un conjunto finito de smbolos al que nos referiremos
como alfabeto fuente. Sea C un codigo. Una codificaci
on o funci
on de codificaci
on es
una funci
on biyectiva f : S 7 C Si C es un codigo y f una codificacion entonces (C, f )
es llamado un esquema de codificacion.
EJEMPLO 1.14
Sea {A, B, C, D, E, F } el alfabeto fuente. Entonces f , definida como sigue es una
codificaci
on:
f (A) = 1
2
22
Preliminares
f (B) = 2
f (C) = 3
f (D) = 11
f (E) = 22
f (F ) = 23
Pero hay que notar que la cadena AA se codifica igual que D, BB se codifica igual
que E y que BC se codifica igual que F . No hay una u
nica manera de leer la secuencia
codificada 11 o 22 o 23. Por cierto, a las palabras escritas en smbolos de codigo asociadas
con el alfabeto fuente se les llama palabras del c
odigo; en nuestro ejemplo las palabras
del c
odigo son todas las de la derecha del smbolo =.
Tambien hay que notar que no todas las palabras del codigo miden lo mismo, las hay
de uno y de dos smbolos. A este tipo de codigos se les denomina de longitud variable.
Por supuesto tambien existen codigos en los que las palabras asociadas a los smbolos
del alfabeto fuente son todas de la misma longitud. En ese caso al codigo se le llama de
longitud fija o de bloque.
Representar datos mediante codigos de longitud fija tiene ventajas: Si se lee una
secuencia de palabras de codigo se sabe exactamente donde termina una palabra y
comienza la otra. Sin embargo, como veremos mas adelante, no es la manera m
as
eficiente de hacerlo.
1.4.1.
+C
odigos unvocamente decodificables
+1.5em
Por supuesto lo que pretendemos con una codificacion es poder ir en ambos sentidos,
de all que sea requisito el que la funcion de codificacion sea biyectiva, para asegurarnos
que es invertible. Queremos poder codificar y decodificar; mapear los smbolos en
el alfabeto fuente a palabras de codigo y luego poder recuperar los datos originales
decodificando estas luego de haberlas transmitido a traves de una lnea de comunicaci
on
o luego de haberlas almacenado durante alg
un tiempo.
En nuestro ejemplo anterior ya nos percatamos de que no siempre hay una u
nica
lectura posible para una secuencia de palabras de codigo, pero desearamos que as fuera
para evitar interpretaciones ambiguas. A esta propiedad se le llama decodificaci
on u
nica.
S
olo hay una manera de interpretar una secuencia de palabras de codigo en terminos de
los smbolos del alfabeto fuente.
Definici
on 1.12 Un codigo C sobre un alfabeto A es unvocamente decodificable si, para toda
cadena x = x1 x2 . . . xn sobre A existe a lo mas una secuencia de palabras de c
odigo
c = c1 c2 . . . cm que coincide con x. Es decir: x = c.
1.4 C
odigos
23
EJEMPLO 1.15
C1 = {c1 = 01, c2 = 11, c3 = 011101} sobre Z2 no es unvocamente decodificable dado
que la cadena: 011101 puede ser interpretada como c3 o como la secuencia c1 c2 c1 .
EJEMPLO 1.16
El c
odigo C = {0, 10, 1101, 1110, 1011, 110110} sobre Z2 no es unvocamente decodificable, la cadena 110110 puede interpretarse como la u
ltima palabra del c
odigo o bien
como la tercera seguida de la segunda.
EJEMPLO 1.17
El c
odigo C1 = {0, 01, 011, 111} sobre Z2 , es unvocamente decodificable. A un c
odigo
de esta forma se le llama c
odigo coma porque al leer un mensaje escrito usando sus
palabras hay un smbolo que hace las veces de delimitador o terminador de palabra, en
este caso el 0. Este es el codigo coma binario de cuatro palabras.
Pero si hacemos una peque
na modificacion el codigo deja de ser unvocamente decodificable, sea C2 = {0, 01, 10, 011, 111} sobre Z2 , hemos a
nadido la palabra 10 al c
odigo
coma que llamamos C1 .
Usando C2 la cadena 011110 puede interpretarse como 01, 111, 0 o bien como 0, 111, 10.
Surge naturalmente la pregunta por que cambia la cualidad de decodificaci
on u
nica
s
olo por a
nadir una palabra? Intuitivamente lo que ocurre es que hay demasiadas
palabras en el c
odigo. Si un codigo tiene muchas palabras cortas, entonces es f
acil que
ocurra que las palabras mas largas puedan construirse pegando varias de las cortas o,
en terminos generales, que un mensaje pueda construirse de varias maneras usando las
24
Preliminares
palabras del c
odigo. Para decirlo en terminos informales es excesivo el poder expresivo
del c
odigo.
Usando el c
odigo C2 , por ejemplo, cuantas cadenas de 6 bits de longitud pueden
formarse usando las palabras del codigo? Una cadena de longitud 6 puede formase
uniendo:
Dos palabras de longitud 3: 4 posibilidades.
Tres palabras de longitud 2: 8 posibilidades.
Una palabras de longitud 3, una de longitud 2 y una de longitud 1: 24 posibilidades.
Una palabra de longitud 3 y tres de longitud 1: 8 posibilidades.
Dos de longitud 2 y dos de longitud 1: 24 posibilidades.
Una de longitud 2 y cuatro de longitud 1: 10 posibilidades.
Seis de longitud 1: 1 posibilidad.
En total son 79 posibles cadenas binarias de longitud 6, pero el maximo n
umero de
cadenas binarias diferentes de longitud 6 es 26 = 64, as que nuestro codigo C2 tiene un
poder de expresividad que rebasa lo indispensable para expresar todas las cadenas; eso
significa que debe haber mas de una manera de expresar algunas cadenas de longitud 6
con palabras del c
odigo, la de nuestro ejemplo es una de ellas.
EJEMPLO 1.18
En cambio C2 = {d1 = 01, d2 = 10, d3 = 110} sobre Z2 , s es unvocamente decodificable.
Nuestro an
alisis del ejemplo 1.17 nos acerca al resultado encontrado por McMillan
en 1956. En el fondo lo que el teorema siguiente nos dice es justamente lo que nuestro
ejemplo nos hace ver: no puede haber demasiadas palabras en un codigo porque deja
de ser unvocamente decodificable.
25
1.4 C
odigos
Demostraci
on:
Sea j el n
umero de palabras del codigo cuya longitud es j. Sea m = maxi {`i } la
m
axima longitud de las palabras del codigo. Supondremos que C es unvocamente
decodificable.
La suma de la desigualdad la podemos escribir como sigue:
q
m
X
X
j
1
=
rj
r`k
k=1
(1.16)
j=1
la suma del lado izquierdo es sobre las q palabras del codigo, la suma del lado derecho
agrupa las palabras de acuerdo a su longitud y por tanto recorre todas las posibles
longitudes.
Recordemos que el n
umero total de cadenas de longitud k en un codigo r-
ario es rk ,
j
as que el cociente rj es la proporcion de palabras de longitud j que estan en el c
odigo.
Sea u un entero positivo cualquiera:
u
m
X
j
2
m u
1
=
+
+
+
rj
r
r2
rm
j=1
X h i
iu i
1
=
r i1
r iu
{ij }
X i i i
u
1
2
=
(1.17)
ri1 +i2 +...+iu
{ij }
u
m
um
X
X
Nk
j
=
(1.18)
j
r
rk
j=1
k=u
donde:
Nk =
(i1 i2 . . . iu )
i1 +i2 +...+iu =k
26
Preliminares
(1.19)
u
!u
q
m
X
X
j
1
=
rj
r`k
j=1
k=1
um
X
k=u
um
X
Nk
rk
1
k=u
um
(1.20)
q
X
1
r`k
k=1
(1.21)
k=1
Hay que enfatizar que el teorema de McMillan no nos dice cuando un c
odigo es
unvocamente decodificable, sino cuando no lo es, negando el teorema.
3
M
as delante haremos referencia a esta afirmaci
on.
1.4 C
odigos
27
1.4.2.
+C
odigos instant
aneos
+1.5em
Los c
odigos instantaneos son un caso particular de los codigos unvocamente decodificables.
Definici
on 1.13 Un codigo instantaneo es un codigo unvocamente decodificable en el que la
decodificaci
on puede hacerse leyendo secuencialmente de izquierda a derecha la cadena
de palabras de c
odigo.
EJEMPLO 1.19
El c
odigo C = {c1 = 1, c2 = 10} es unvocamente decodificable, pero no instant
aneo. Si
se recibe la secuencia 1110 y se lee de izquierda a derecha, entonces ocurre lo siguiente:
1. Leemos el primer uno y no sabemos si es c1 o el principio de c2 .
2. Leemos el segundo uno y ahora ya sabemos que el anterior era c1 , pero ahora no
sabemos si este nuevo uno es otra vez c1 o el principio de c2.
3. Se lee el tercer uno y ocurre otra vez lo mismo que en el inciso anterior.
4. Se lee el cuarto bit y se determina que la u
ltima palabra recibida es c2 .
Varias veces hemos terminado de leer una palabra del codigo y no podemos decir
a
un si realmente la hemos terminado de leer o si es solo el prefijo de alguna otra palabra.
28
Preliminares
Esta u
ltima afirmacion nos da pretexto para formular una conjetura: En los c
odigos
instant
aneos ninguna palabra completa del codigo constituye un prefijo, una subcadena inicial, de otra palabra mas larga; equivalentemente ninguna palabra del c
odigo
comienza con otra palabra de codigo mas corta.
Definici
on 1.14 Un codigo tiene la propiedad de prefijo si ninguna palabra de codigo es prefijo
de alguna otra.
Es un poco parad
ojica la definicion anterior: un codigo es prefijo o tiene la propiedad
de prefijo si sus palabras de codigo no son prefijos de otras.
Ahora podemos formular nuestra conjetura mas formalmente:
EJEMPLO 1.20
Un ejemplo de c
odigo instantaneo es el c
odigo coma, como el primero mostrado en
el ejemplo 1.17. El c
odigo coma de ocho palabras es el siguiente:
Coma8 = {0, 10, 110, 1110, 11110, 111110, 1111110, 1111111}
29
1.4 C
odigos
El cero act
ua como delimitador de las palabras del codigo, salvo en el caso de la
u
ltima palabra, que es facilmente distinguible dado que tiene una longitud predeterminada y es la u
nica constituida solo de 1.
Este c
odigo es unvocamente decodificable y, mas a
un, es instantaneo, ninguna palabra es prefijo de otra.
En cambio el c
odigo siguiente, muy parecido al codigo coma, no es instant
aneo:
C = {0, 01, 011, 0111, 01111, 011111, 0111111, 01111111, 11111111}
Hay palabras que son prefijo de otras, esto basta para decir que no es instant
aneo.
Sin embargo s es unvocamente decodificable, basta leer cualquier mensaje de derecha
a izquierda para decodificar de la u
nica manera posible.
j=1
(1.22)
30
Preliminares
Donde j es el n
umero de palabras de longitud j en el codigo. Si multiplicamos y
m
dividimos por r tenemos:
q
m
X
1 X
1
= m
j rmj
r
r`k
(1.23)
j=1
k=1
(1.24)
j=1
es decir:
m
X
j rmj rm
(1.25)
j=1
En la suma el u
ltimo termino es: m rmm = m , as que podemos escribir:
m +
m1
X
j rmj rm
(1.26)
j=1
Demostraci
on:
Sea c C una palabra en un codigo instantaneo C, lon (c) = j m 1, dado que
c no debe ser prefijo de ninguna otra palabra en C entonces ninguna palabra de
la forma cx con lon (x) = m j puede estar en C. Dada c hay exactamente rmj
palabras de la forma cx de longitud m que deben ser excluidas de C. Esto para
cada posible eleccion de c de longitud j en el codigo C. Hay j posibles elecciones
de c y por cada una rmj palabras de longitud m que deben excluirse del c
odigo.
As que, en total, hay:
m1
X
j rmj
j=1
31
1.4 C
odigos
m1
X
j rmj rm
j=1
(1.27)
entonces existe un c
odigo instant
aneo con palabras de esas longitudes precisamente.
Sean `1 , `2 , . . . , `q+1 longitudes tales que: `1 `2 . . . `q+1 y que cumplen
con:
q+1
X
1
1
r `j
j=1
(1.28)
(1.29)
Tenemos ahora un conjunto de longitudes `1 , `2 , . . . , `q que satisfacen la desigualdad de Kraft, de hecho la satisfacen estrictamente, por hip
otesis de
inducci
on existe entonces un codigo instantaneo con esas longitudes. En ese
c
odigo que ahora sabemos que existe habra entonces 1 palabras de longitud
1, 2 palabras de longitud 2 y en general j palabras de longitud j y sabemos
que se satisface:
m +
m1
X
j rmj < rm
(1.30)
j=1
32
Preliminares
que no est
an en el codigo y que no deben estar porque se construyen usando
como prefijo a otras y el lado derecho de la desigualdad es el n
umero total
de posibles cadenas de longitud m.
Dado que la desigualdad anterior es estricta entonces concluimos que falta al
menos una palabra de longitud m que no esta en el codigo pero que podra
estar, porque en la suma contamos a todas las que no pueden estar. As
que incluimos esa palabra, que ya sabemos que existe y que tiene longitud
m y ya tenemos un codigo con q + 1 palabras de longitudes `1 , `2 , . . . , `q+1
instant
aneo.
EJEMPLO 1.21
Si se nos plantea la pregunta existira algun codigo instantaneo binario con cinco
palabras de longitudes 3, 3, 2, 2, 2? Podemos utilizar el teorema de Kraft.
q
X
1
1
1
=2
+3
= 4/4 = 1
3
`
2
22
rk
k=1
Definici
on 1.15 Un codigo r-ario instantaneo C es maximal si no esta contenido en otro
c
odigo r-ario instant
aneo de mayor tama
no.
Por supuesto mayor tama
no aqu, significa con mayor n
umero de palabras.
33
+Ejercicios
1.1 Cual es el n
umero de cadenas en Zn2 con exactamente k n unos? Cu
antas son
n
en Zr ?
1.2 Si en este momento fueran las 13:00 horas en punto, que hora sera dentro de 144
horas?, y dentro de 295?, por que?
34
Preliminares
1.5
(mod x2 2x + 3)
1.6 Considerese el conjunto de todos los polinomios de grado menor a 3 con coeficientes
en Z3 . P1 (x) = x2 + 1 es un polinomio irreducible en este conjunto, al igual que
P2 (x) = x2 + x + 2. Sea la raz de P1 (x) y la de P2 (x). Escriba que resulta de elevar
a la potencia {1, 2, . . .}, haga lo mismo para . Excluyendo al cero, que elementos
del campo finito de nueve elementos son generados por y por ?
1.7
Cu
al es el n
umero de posibles prefijos de una palabra de longitud n en base r?
1.8 El c
odigo C = {0, 10, 1101, 1110, 1011, 110110} es unvocamente decodificable?
justifique.
1.9 Puede haber un codigo binario instantaneo de longitudes de palabra: {2, 2, 2, 3, 3},
y uno ternario de longitudes {1, 2, 2, 3, 3}?
1.10
Codificaci
on
eficiente
2.1 +Arbol
de decodificacion
El hecho de que en los codigos instantaneos, revisados en el captulo anterior, sea
posible leer secuencialmente un mensaje codificado de izquierda a derecha, smbolo a
smbolo e irlo decodificando al vuelo nos hace pensar en algunas cosas. Probablemente
a aquellos versados en la teora de automatas les recuerde una maquina de estados,
conforme leemos smbolos de entrada nuestro estado cambia hasta llegar a uno en el
que se ha terminado de reconocer una palabra de codigo y en ese instante se produce
como smbolo de salida el smbolo del alfabeto de la fuente que le corresponde bajo el
esquema de codificacion usado.
Probablemente a algunos otros les haga pensar en un arbol de decision. Cada vez
que se recibe un smbolo en el alfabeto r-ario del codigo, se desciende desde un nodo
de un
arbol por una de sus r posibles ramas hasta otro nodo. El proceso de descenso
contin
ua hasta que se ha terminado de leer completamente una palabra de c
odigo, en
ese momento el nodo actual del proceso sera una hoja asociada a la palabra de c
odigo
leda y que nos permite determinar el smbolo del alfabeto fuente que es codificado por
ella.
Ambas visiones son igualmente correctas, pero para fines de demostraciones formales
posiblemente sea un poco mas u
til el enfoque de arboles.
Si r es la base del codigo, entonces cada nodo del arbol de decodificaci
on tiene, a lo
35
36
Codificacion eficiente
C
1
A
F
1
A = 111
D = 011
B = 110
E = 010
C = 10
F = 00
0
E
EJEMPLO 2.1
El c
odigo C = {111, 110, 10, 011, 010, 00} con la funcion de codificacion:
{f (A) = 111, f (B) = 110, f (C) = 10,
f (D) = 011, f (E) = 010, f (F ) = 00}
posee el
arbol de decodificacion mostrado en 2.1.
37
2.2 Codificaci
on de Shannon-Fano
Que tal si todas las palabras de un codigo instantaneo fueran del mismo tama
no. Si
el n
umero de palabras es q significa que las q hojas del arbol de decodificaci
on asociado
al c
odigo est
an a la misma profundidad en el arbol, para llegar a cualquiera de ellas
desde la raz hay que recorrer tantas aristas como la altura del arbol.
Ahora bien, en un arbol r-ario hay, en el primer nivel abajo de la raz, r nodos, en
el siguiente r2 , r3 en el siguiente y rn en el n-esimo nivel. As que si todas las hojas
est
an en un mismo nivel, resulta que rn = q lo que significa que n = logr (q). Adem
as, si
todas las hojas est
an a la misma profundidad n, entonces las longitudes de las palabras
de c
odigo asociadas a ellas son siempre n. Como se ve la desigualdad de Kraft en este
caso:
q
q
q
X
X
X
1
1
1
1
=1
=
=
=
q
rn
q
q
rlogr (q)
k=1
k=1
k=1
bueno, ahora ya sabemos que si eso pasa estamos trabajando con un codigo maximal,
la igualdad se cumple en la desigualdad de Kraft.
El ejercicio que acabamos de hacer no nos proporciona algo novedoso, pero s un
novedoso punto de vista. Si nos topamos con un codigo r-ario instantaneo en el que todas
las palabras sean de la misma longitud y tenga rk palabras, para alguna k, entonces
sabemos que debe ser maximal. Esto es, de hecho, un codigo de bloque o de longitud
fija visto como un caso particular de codigo instantaneo.
En el captulo anterior se presento un ejemplo de codigo maximal de longitud variable
instant
aneo, sirva dicho ejemplo para dejar claro que no todos los codigos maximales
tienen longitud fija y por tanto, sus arboles de decodificacion tampoco tienen por que
tener todas sus hojas al mismo nivel.
38
Codificacion eficiente
EJEMPLO 2.2
Sup
ongase que tenemos el alfabeto fuente {A, B, C, D, E, F } con las siguientes frecuencias:
Smb.
Frec.
10
12
18
22
Adoptamos la convenci
on de ordenar crecientemente, en realidad el orden puede ser creciente o
decreciente.
39
2.3 Codificaci
on de Huffman
64
54
34
10
26
70 3 A
0000
67 8 B
0001
62 18 C
10
001
52 30 D
12
01
40 48 E
18
10
22 70 F
22
11
Figura 2.2: Obtencion del codigo de Shannon-Fano para los smbolos del ejemplo.
La funci
on suma obtiene la suma de las frecuencias de los elementos en la lista entre
los ndices que recibe como argumentos. La funcion arbolbin construye un
arbol binario
de un solo nodo (la raz) cuyo contenido es el argumento de la funcion. En la segunda
llamada a arbolbin (lnea 16) el argumento no importa (cualquiersimb). Las funciones
setSubIzq y setSubDer establecen el subarbol izquierdo y derecho de la instancia de
arbol
binario que las llama, en este caso arbol es el identificador de dicha instancia. Hay que
notar que en las lneas 17 y 18 se llama recursivamente al proceso de construcci
on, el if
de la lnea 1 establece la condicion de terminacion de la recursion. Al final el proceso
regresa un
arbol binario que constituye el arbol de decodificacion de Shannon-Fano.
Es importante aclarar que el codigo de Shannon-Fano de un alfabeto dadas sus
frecuencias, no es u
nico. Basta con cambiar todos los ceros por unos, por ejemplo, para
obtener otro esquema de codificacion que, siendo de Shannon-Fano, es diferente del que
se obtuvo primero. Si hay dos smbolos con igual frecuencia basta con intercambiar sus
c
odigos para obtener otra codificacion de Shannon-Fano.
40
Codificacion eficiente
41
2.3 Codificaci
on de Huffman
Huffman es el siguiente:
1. Se ordena la lista crecientemente de acuerdo con la frecuencia.
2. Se crea un
arbol con cada elemento de la lista de smbolos del alfabeto fuente.
Evidentemente cada uno de estos arboles esta constituido de un u
nico nodo, la
raz.
3. Seleccionar a los dos smbolos de menor frecuencia (los dos primeros de la lista),
eliminarlos de la lista y unir los arboles asociados a ellos a traves de un nuevo
nodo raz.
4. Introducir un nuevo elemento a la lista, asociado con el arbol recien construido. El
valor del smbolo no es relevante, la frecuencia debe ser la suma de las frecuencias
de los smbolos que se unieron. Al introducir este nuevo elemento a la lista debe
asegurarse que esta permanece ordenada.
5. Regresar al paso 3 hasta que en la lista haya un u
nico elemento; el arbol asociado
a este elemento es el arbol de decodificacion de Huffman.
EJEMPLO 2.3
Sea A = {a, b, c, d, e} el alfabeto de una fuente con las frecuencias siguientes: f (a) =
15, f (b) = 10, f (c) = 12, f (d) = 4 y f (e) = 6. Por conveniencia representaremos
cada elemento en la lista como una pareja ordenada (smbolo, f recuencia). As, la lista
ordenada es:
{(d, 4), (e, 6), (b, 10), (c, 12), (a, 15)}
En el primer paso seleccionaremos, como los dos smbolos menos frecuentes, a la d y
a la e cuyas frecuencias sumadas son 10, as que los arboles (de hecho hojas) asociados
a d y e se juntan en un solo arbol con d como hijo izquierdo y e como derecho, el peso
de este nuevo
arbol es de 10. La nueva lista ordenada es entonces:
{(1 , 10), (b, 10), (c, 12), (a, 15)}
se ha introducido a 1 para denotar al nuevo smbolo, sin importancia, que se asocia
al nuevo nodo.
En el siguiente paso se unen el arbol asociado a 1 y el arbol (de hecho otra vez una
sola hoja) asociado a b. El resultado es un nuevo nodo etiquetado con 2 tal como se
muestra en la figura 2.3. La lista ordenada es:
{(c, 12), (a, 15), (2 , 20)}
42
Codificacion eficiente
0
0
d
4
1
10
20
1
47
1
0
10
12
3
27
a
15
Figura 2.3: El
arbol de decodificacion de Huffman para el codigo del ejemplo. Bajo cada
nodo se ha puesto la suma de las frecuencias del subarbol del que es raz, cada nodo
se ha etiquetado con un smbolo, en el caso de las hojas con un smbolo del alfabeto
fuente, en el caso de los nodos interiores con un smbolo i sin importancia. Las aristas
de salida derechas se han asociado con 1 y las izquierdas con 0.
En el siguiente paso se uniran c ya en un solo arbol cuya raz, etiquetada 3 tiene
un peso de 27. La lista resultante sera:
{(2 , 20), (3 , 27)}
En el u
ltimo paso se unen estos u
nicos dos smbolos para formar el arbol de decodificaci
on que se muestra en la figura 2.3. El peso asociado a la raz es de 20 + 27 = 47.
43
44
Codificacion eficiente
alfabeto fuente y el c
odigo que le es asociado. Con base en las frecuencias podemos
estimar la probabilidad de aparicion de cada smbolo. Mientras mayor sea la cantidad
de datos producidos por la fuente que han sido observados y considerados para contar
las frecuencias, mayor sera nuestra confianza de que esas frecuencias nos permiten estimar la distribuci
on de probabilidades de los smbolos. Si en total hemos observado N
smbolos producidos por una fuente y de ellos Fi han sido el smbolo i-esimo entonces
nuestro estimador para la probabilidad de aparicion de i-esimo es el cociente Fi /N al
que denotaremos pi . Debemos definir esto formalmente.
Definici
on 2.1 Una fuente de informacion es una pareja ordenada S = (S, P ) donde S =
{s1 , s2 , . . . , sq } es el alfabeto de la fuente y P es una funcion de distribucion de probabilidad P : S 7 [0, 1] que asocia a cada smbolo si del alfabeto fuente una probabilidad
P (si ) = pi .
Ahora podemos considerar la variable aleatoria longitud del c
odigo asociado al smbolo
producido por la fuente. Cada smbolo posee un codigo y ese codigo una cierta longitud,
y ahora podemos calcular el valor esperado de la variable aleatoria mencionada como
se define a continuaci
on.
Definici
on 2.2 Sea S = (S, P ) una fuente de informacion y sea (C, f ) un esquema de codificaci
on para S = {s1 , s2 , . . . , sq }. La longitud promedio de palabra de c
odigo de (C, f )
es:
q
X
lon(C, f ) =
[P (si ) lon (f (si ))]
(2.1)
i=1
EJEMPLO 2.4
1. Sea S = {a, b, c, d} con la siguiente distribucion: P (a) = 2/17, P (b) = 2/17,
P (c) = 8/17, P (d) = 5/17 (por supuesto la suma de las probabilidades es 1,
requisito de toda distribucion de probabilidades).
En el esquema (C1 , f1 ), donde C1 es un codigo binario, definido como sigue:
f1 (a) = 11, f1 (b) = 0, f1 (c) = 100, f1 (d) = 1010. La longitud promedio de
palabra es:
2
2
8
5
50
lon(C1 , f1 ) = 2
+1
+3
+4
=
17
17
17
17
17
En el esquema (C2 , f2 ), donde C2 es tambien un codigo binario, definido como
sigue: f2 (a) = 01010, f2 (b) = 00, f2 (c) = 10, f2 (d) = 11. La longitud promedio
de palabra es:
2
2
8
5
40
lon(C2 , f2 ) = 5
+2
+2
+2
=
17
17
17
17
17
45
Comparando el esquema (C1 , f1 ) tiene una longitud promedio mayor que (C2 , f2 ),
as que si codificaramos un mensaje cualquiera de la fuente, resultara probablemente m
as corto si lo hicieramos usando el segundo esquema de codificaci
on que
si lo hicieramos con el primero. Hay que notar algo importante. Si codific
aramos,
por ejemplo, el mensaje aa . . . a resultara mejor usar el esquema 1, pero, dada
la distribuci
on de probabilidad de la fuente, este no es un mensaje representativo
de la fuente. Nuestra afirmacion de cual esquema es mejor, mas eficiente, se basa
en la distribucion de probabilidades, buscamos como codificar de la manera m
as
eficiente posible aquellos mensajes que son mas representativos de lo que suele
producir la fuente.
2. Sea S = {A, B, C, D, E} el alfabeto fuente y {15, 7, 6, 6, 5} las frecuencias respectivas. Usaremos codigos binarios para codificar el alfabeto de esta fuente.
Usando el esquema de Shannon-Fano obtenemos: SF (A) = 11,
SF (B) = 10, SF (C) = 001, SF (D) = 01, SF (E) = 000. Lo que nos da como
resultado: lon(SF ) = 2.28
Usando el esquema de Huffman: Huf f (A) = 0, Huf f (B) = 111, Huf f (C) =
101, Huf f (D) = 110, Huf f (E) = 100. Lo que nos da como resultado: lon(Huf f ) =
2.23
Resulta que el codigo de Huffman es ligeramente mejor que el de Shannon-Fano.
Esto siempre es verdadero como demostraremos mas adelante. Sin embargo, en
general, la diferencia entre las longitudes promedio de ambas codificaciones suele
ser peque
na.
Lema 2.2.1 Sea (C, f ) un esquema de codificacion instantaneo para una fuente S = (S, P ).
Sean c1 , c2 , . . . , cq las palabras de C asociadas a los smbolos con probabilidades: p1
p2 . . . pq y longitudes: m1 , m2 , . . . , mq respectivamente. Si el esquema (C, f ) tiene
longitud promedio de palabra mnima entonces m1 m2 . . . mq
46
Codificacion eficiente
Demostraci
on:
Por reducci
on al absurdo.
Supongamos que (C, f ) es un esquema instantaneo de longitud promedio mnima y
que p1 p2 . . . pq pero no es cierto que m1 m2 . . . mq . Es decir, hay al
menos una pareja (mi , pi ) tal que mi > mi+1 y pi pi+1 .
La longitud promedio en este caso es:
lon(C, f ) =
i1
X
pj mj + mi pi + mi+1 pi+1 +
j=1
q
X
pj mj
j=i+2
i1
X
pj mj + mi+1 pi + mi pi+1 +
j=1
q
X
pj mj
j=i+2
Si calculamos la diferencia:
lon(C, f ) lon(C, f 0 ) = mi pi + mi+1 pi+1 mi+1 pi mi pi+1
= pi (mi mi+1 ) + pi+1 (mi+1 mi )
= (pi pi+1 )(mi mi+1 )
Dado que mi > mi+1 y pi pi+1 entonces:
lon(C, f ) lon(C, f 0 ) > 0
de donde lon(C, f ) lon(C, f 0 ) por lo que (C, f ) no es un esquema de longitud promedio
mnima, lo que contradice nuestra suposicion.
Lema 2.2.2 Sea (C, f ) un esquema de codificacion instantaneo para una fuente S = (S, P ).
Sean c1 , c2 , . . . , cq las palabras de C asociadas a los smbolos con probabilidades: p1 , p2 , . . . , pq
y longitudes: m1 , m2 , . . . , mq respectivamente. Si el esquema (C, f ) tiene longitud promedio de palabra mnima entonces mq1 = mq y las palabras cq1 y cq difieren s
olo en
su u
ltimo bit.
Demostraci
on:
Por reducci
on al absurdo.
Sup
ongase que el esquema (C, f ) posee longitud promedio mnima de palabra con
C = {c1 , c2 , . . . , cq1 , cq } y f (s1 ) = c1 , f (s2 ) = c2 , . . . f (sq1 ) = cq1 , f (sq ) = cq
Podemos suponer que p1 p2 . . . pq y, por el lema anterior sabemos que entonces
las longitudes est
an ordenadas: m1 m2 . . . mq1 mq .
47
Sup
ongase ademas que mq1 < mq . Consideremos la palabra cq en C y eliminemos
su u
ltimo bit, llamemos c0q a esta palabra cuya longitud es necesariamente mq1 .
Como C es instantaneo no existe ninguna palabra en C que sea igual a c0q porque
de haberla sera prefijo de cq y el codigo no sera instantaneo. Ademas c0q es demasiado
larga para ser prefijo de alguna otra palabra en C. As que C 0 = {c1 , c2 , . . . , cq1 , c0q }
sigue siendo instant
aneo.
Sea f 0 la funci
on de codificacion que asigna
f 0 (s1 ) = c1 , f 0 (s2 ) = c2 , . . . f 0 (sq1 ) = cq1 , f 0 (sq ) = c0q
El esquema (C 0 , f 0 ) es instantaneo y posee una longitud promedio de palabra menor
que (C, f ) dado que una de sus palabras, c0q , tiene una longitud menor. As que (C, f )
no tiene longitud promedio de palabra mnima, lo que contradice nuestra suposici
on
inicial.
Ahora bien cq1 y cq son palabras de igual longitud y deben diferir en al menos
uno de sus bits. Si ese bit no fuera el u
ltimo de la palabra entonces podramos eliminar
el u
ltimo bit de ambas palabras y se mantendran diferentes. Obtendramos entonces
un c
odigo con dos palabras mas cortas y por tanto una longitud promedio de palabra
menor.
Ahora tenemos todo lo necesario para demostrar el teorema siguiente.
Teorema 2.3 Sea S una fuente de informacion. Todos los esquemas de codificacion de Huffman
para S son instant
aneos y tienen la longitud promedio de palabra mnima de entre todos
los esquemas instantaneos.
Demostraci
on:
Para demostrar que el esquema es instantaneo basta hacer notar que, por construcci
on
del
arbol de Huffman, no hay smbolo del alfabeto fuente que no tenga asociada una
hoja en el
arbol de Huffman y no hay hoja del arbol que no tenga asociado un smbolo de
dicho alfabeto. Esto significa que siempre que nos encontramos un smbolo del alfabeto
fuente en el
arbol es porque hemos terminado en el un camino que desciende desde la
raz y ya no podemos continuar mas abajo en el arbol. No hay ning
un camino que pase
por un nodo del
arbol asociado a un smbolo del alfabeto fuente y luego continue hasta
llegar a otro. Como los codigos estan determinados por las aristas recorridas hasta llegar
al nodo asociado al smbolo del alfabeto fuente, se concluye que no hay prefijos en el
c
odigo y por lo tanto el codigo es instantaneo.
Para mostrar que la longitud promedio de palabra es mnima procederemos por
inducci
on sobre q, el n
umero de palabras en el codigo.
48
Codificacion eficiente
49
(2.2)
Como los esquemas de Huffman son instantaneos, por el lema 2.2: `q = `q1 as
que:
lon(H 0 , f 0 ) = lon(H, f ) (pq1 + pq )
(2.3)
Ahora consideremos el esquema instantaneo (C, g) de longitud promedio de palabra mnima, las u
ltimas dos palabras de este son: cq = x1 x2 . . . xu 0 y cq1 =
x1 x2 . . . xu 1, dado que es instantaneo
c = x1 x2 . . . xu no es una palabra del codigo y podemos usarla entonces como palabra para el smbolo s en un esquema instantaneo (C 0 , g 0 ) para S 0 tal que g 0 (si ) = ci
para toda i q 1 y g 0 (s) = c.
Entonces:
lon(C 0 , g 0 ) = lon(C, g) (mq1 pq1 + mq pq )
+(mq1 1)(pq1 + pq )
= lon(C, g) (pq1 + pq )
(2.4)
por hip
otesis de induccion, dado que H 0 y C 0 tienen q 1 palabras:
lon(H 0 , f 0 ) lon(C 0 , g 0 )
As que, sintetizando las expresiones 2.3 y 2.4:
lon(H, f ) lon(C, g)
Este teorema es importante, nos dice que no importa cual esquema de codificacion
instant
aneo escojamos, siempre sera, a lo mas, tan bueno como un esquema de Huffman;
no puede haber mejor.
Curiosamente en [6] podemos encontrar el siguiente ejemplo:
50
Codificacion eficiente
Smb.
Prob.
Shannon-Fano
Huffman
x1
0.10
001
101
x2
0.05
0000
111
x3
0.20
10
010
x4
0.15
011
011
x5
0.15
010
100
x6
0.25
11
00
x7
0.10
0001
110
Tabla 2.1: C
odigos de Shannon-Fano y de Huffman mostrados en la tabla 2.19, pag.
110 de [6].
EJEMPLO 2.5
(2.5)
(2.6)
La longitud promedio del codigo de Huffman es mayor que la del codigo de ShannonFano! Que ocurre? acabamos de demostrar que esto no puede ser.
En efecto algo est
a mal. Ambos promedios estan bien calculados, no es un error
numerico. El c
odigo de Shannon-Fano esta bien construido, as que realmente la longitud
del esquema de Shannon-Fano es 2.7. Pero el codigo de Huffman no esta bien construido.
El autor del libro cometio un error al pegar dos nodos en el paso 3 del proceso de
construcci
on del
arbol, uno de los smbolos que se pegan no tiene probabilidad mnima
de entre los que quedaban en la lista de disponibles. As que el codigo en la cuarta
columna de la tabla 2.1, que aparece en la tabla 2.19 de [6], no es un codigo de Huffman
para la fuente usada como ejemplo. Un codigo de Huffman real para esa fuente aparece
en la tabla 2.2, n
otese que en este caso la longitud de palabra promedio es:
lon(H) = 2.7
Smb.
Prob.
x1
0.10
1111
x2
0.05
1110
x3
0.20
00
x4
0.15
011
x5
0.15
110
x6
0.25
10
x7
0.10
010
51
Tabla 2.2: C
odigos de Huffman correcto para la fuente de la tabla 2.1. La longitud
promedio de palabra es 2.7, igual a la de Shannon-Fano.
Although the Shannon-Fano code is more efficient since its average code length is less than that of
the Huffman code, the reader should note that it is not necessarily always more efficient.
52
Codificacion eficiente
+Ejercicios
2.1 Obtenga unos c
odigos binarios de Huffman y de Shannon-Fano para el alfabeto
que se muestra. Calcule la longitud promedio de palabra en cada caso.
Smb.
a
b
c
d
e
2.2
Frec.
35
17
17
16
15
Frec.
8
7
6
5
5
4
3
2
2.3 Obtenga un c
odigo de Huffman para un alfabeto de 8 smbolos, todos con probabilidad 1/8. Hay aunguna diferencia entre la eficiencia de este codigo y el c
odigo de
bloque mnimo que se podra usar? Cual es la longitud promedio de palabra en ambos
casos?
2.4 Cu
ales cree que sean las condiciones para que un arbol de Huffman se vea como el
de la figura?, cu
ales cree que sean las necesarias para que sea un arbol binario completo
maximal?
EJERCICIOS
53
Informaci
on
y entropa
En el captulo pasado vimos que es posible representar de manera breve una cierta
cantidad de datos si sabemos que tan probable es que aparezca cada uno de los smbolos
posibles que aparecen en los datos. Para lograrlo representabamos con palabras m
as
largas a los smbolos menos probables y con palabras mas cortas a los m
as probables.
En este captulo nos abocaremos a determinar hasta donde podemos llegar, que tan
breve puede ser la representacion y para ello requeriremos de un par de conceptos
fundamentales: cantidad de informacion y entropa de una fuente.
56
Informacion
y entropa
Una manera m
as sencilla de llegar al concepto de informacion y en la que tambien
podemos apelar a nuestra idea intuitiva es esta: Supongamos que un amigo acaba de
comprar una mascota y debemos adivinar que animal compro haciendole preguntas cuya
respuesta s
olo pueda ser un s o un no. Hay muchos animales probables, pero unos
son m
as comunes como mascotas que otros. Generalmente las personas preferimos a los
mamferos, son m
as c
alidos e inteligentes, mas proximos a nosotros. As que podramos
comenzar preguntando es un mamfero? Si contesta que s, podemos preguntar ahora
si es de m
as de 20 centmetros de longitud, si la respuesta es s entonces podemos
preguntar ya directamente si es un perro, si la respuesta a esta u
ltima pregunta es no,
podemos preguntar si se trata de un gato; pero si la respuesta respecto al tama
no es
no entonces estamos en problemas: muy probablemente escogio alg
un roedor y hay
muchas posibilidades: hamster, raton, cuyo, huron, conejo, tendremos que hacer varias
preguntas para determinar cual de ellos es. Si la respuesta a es un mamfero? fue
no, entonces tambien estamos en problemas puede ser un reptil, un anfibio, un pez, un
ar
acnido, un ave y dentro de cada una de estas categoras hay muchas posibilidades,
como podr
a percatarse quien visite una tienda de mascotas y pueda apreciar la amplia
gama de ex
oticos ejemplares que algunas pocas personas gustan de tener en casa. Esa es
la clave del problema, en general solo algunas pocas personas eligen como mascota una
iguana o una tar
antula y casi nadie tendra un piton albino de Madagascar. Si nuestro
amigo tiene gustos extra
nos tendremos que hacerle mas preguntas, tantas m
as cuanto
m
as extra
na sea su mascota, necesitamos que nos de mucha informacion, que responda
muchas preguntas, si eligio un dragon de Komodo y solo dos o tres si compro un pastor
alem
an. Para determinar las cosas mas frecuentes se necesita menos informaci
on que
para determinar las m
as raras.
Dijimos que en el juego de adivinanza nuestro amigo solo poda contestar s o
no a nuestras preguntas, el proceso adivinatorio se puede ver entonces como un
arbol
binario de decisi
on, cada vez que se responde una pregunta elegimos una de dos posibles
rutas para formular la siguiente. Este arbol, por cierto, es analogo a nuestros arboles de
decodificaci
on del captulo pasado para codigos binarios. En las hojas del arbol est
an
las posibles respuestas, tanto mas profundas cuanto mas preguntas haya que hacer para
llegar a ellas. Esto nos hace pensar en que es posible medir la cantidad de informaci
on
necesaria para determinar la respuesta en bits: cuantos s (1) y no (0) se requieren
para llegar desde la raz a una hoja. Podemos tambien pensar en definir una funci
on
que, dada una hoja o posible respuesta, nos diga cuantas preguntas hay que hacer para
determinarla.
Ahora bien, si nuestro amigo compro una mascota para el y otra para su novia y
queremos adivinar ambas, debemos hacer todas las preguntas para determinar una de
ellas y luego volver a empezar para determinar la otra. El saber que compr
o para el
no nos ayuda, en general, a saber que compro para su novia. As que la cantidad de
preguntas hechas en total es la suma de las hechas para determinar su mascota y las
hechas para determinar la de su novia.
Es tiempo de ponernos formales. Queremos una funcion I que nos permita medir la
57
Definici
on 3.1 La cantidad de informacion I(p) obtenida de un smbolo fuente s con probabilidad p > 0, medida en bits de informacion, es:
1
I(p) = log2
p
Las unidades de medida son bits de informacion, de all la base (2) del logaritmo.
Esto tiene que ver con las dos posibles respuestas a las preguntas que mencionamos
arriba (s o no, 1 o 0). La base es arbitraria y de hecho no tiene por que ser un valor
entero, si usamos e por ejemplo estaremos midiendola en nepers de informaci
on, dado
que la base de los logaritmos neperianos o naturales es justamente e.
De hecho, si en alg
un momento requerimos expresar la cantidad de informaci
on en
base b y s
olo poseemos el dato en base r podemos hacerlo traduciendo la expresi
on del
logaritmo. Recordemos que un n
umero w es w = logb (x) si y solo si bw = x de donde:
w logr (b) = logr (x) lo que significa que:
w=
logr (x)
= logb (x)
logr (b)
(3.1)
58
Informacion
y entropa
Figura 3.1: Aspecto que debe exhibir la funcion I (cantidad de informacion) en funci
on
de la probabilidad p (eje de las abscisas).
EJEMPLO 3.1
En una imagen de 1024 768 256 hay 256 posibilidades en cada uno de los 1024 768
pixeles. 256 = 28 as que el n
umero de posibles imagenes es: N = 2(8)(1024)(768) =
26,291,456 . Si cada imagen es igualmente probable: p = 1/N . Entonces la cantidad de
informaci
on en una imagen es:
I(p) = 6, 291, 456 bits
59
para determinar a un perro hasta mas de una decena para determinar un reptil extra
no.
Pero podemos hacer estadstica y obtener una vision general del problema de determinar
una mascota. Podemos obtener una medida que nos indique cuanta informaci
on se
requiere en promedio para adivinar.
Definici
on 3.2 Sea S = (S, P ) una fuente de informacion con distribucion de probabilidad
P = {p1 , p2 , . . . , pq }. La entropa de informaci
on de S es el valor esperado de la cantidad
de informaci
on de los smbolos de S:
q
q
X
X
1
pi log2
=
[pi log2 (pi )]
H(S) =
pi
i=1
i=1
Con la convenci
on de que s pi = 0 entonces pi log2 (1/pi ) = 0.
EJEMPLO 3.2
1. Sea S una fuente con alfabeto S = {s1 , s2 , . . . , sq } donde cada smbolo es equiprobable, es decir pi = 1/q. En este caso la entropa es:
q
1X
log2 (q) = log2 (q)
H(S) =
q
i=1
En los ejemplos presentamos los dos casos extremos. En el primero tenemos una
fuente totalmente incierta, no podemos apostar por ning
un smbolo, todos pueden aparecer con igual probabilidad. La fuente es totalmente aleatoria. Es este caso la entropa
es m
axima.
En el segundo ejemplo tenemos una fuente que solo produce un smbolo; salvo s1 ,
el resto del alfabeto, para todo fin practico, es como si no existiera. En todo momento
sabemos con certeza que es lo que va a producir la fuente. En este caso la entropa es
mnima.
Con estos dos ejemplos en mente podemos observar la analoga que existe entre
el concepto de entropa en la teora de la informacion y el concepto hom
onimo en
fsica, ambos son una medida del desorden, de la desorganizacion de un sistema. En
60
Informacion
y entropa
x1
ln(2)
(3.2)
la igualdad s
olo ocurre cuando x = 1.
Con esto en mente podemos demostrar el siguiente lema
2.
ri 1
(3.3)
i=1
entonces
q
X
pi log2
i=1
1
pi
q
X
i=1
1
pi log2
ri
donde la igualdad s
olo se cumple si y solo si pi = ri para toda i.
Demostraci
on:
Por la expresi
on 3.2 tenemos que:
q
X
i=1
pi log2
ri
pi
q
X
i=1
pi
ri
pi
ln(2)
q
1 X
pi
ln(2)
i=1
ri
1
pi
61
1 X
(ri pi )
ln(2)
1
ln(2)
1
ln(2)
i=1
q
X
ri
q
X
i=1
i=1
q
X
!
pi
ri 1
i=1
Por la expresi
on 3.3, que es parte de nuestra hipotesis:
!
q
X
1
ri 1 0
ln(2)
i=1
as que:
q
X
pi log2
i=1
ri
pi
0
(3.4)
Pero:
log2
ri
pi
= log2 (ri ) log2 (pi )
1
1
= log2
+ log2
ri
pi
as que la expresi
on 3.4 la podemos reescribir como:
X
q
q
X
1
1
pi log2
pi log2
0
pi
ri
i=1
de donde finalmente:
(3.5)
i=1
q
X
i=1
pi log2
1
pi
q
X
i=1
1
pi log2
ri
Teorema 3.2 Para una fuente S = (S, P ) en la que el alfabeto S posee q smbolos, la entropa
H(S) satisface:
0 H(S) log2 (q)
62
Informacion
y entropa
Demostraci
on:
Sea P = {p1 , p2 , . . . , pq } la distribucion de probabilidades de una fuente S y sea R =
{1/q, 1/q, . . . , 1/q} la distribucion uniforme para q smbolos.
Aplicando el lema anterior a P y R obtenemos:
q
X
1
H(S) =
pi log2
pi
i=1
q
X
1
pi log2
1/q
i=1
q
X
pi log2 (q)
i=1
= log2 (q)
q
X
pi
i=1
= log2 (q)
As que H(S) log2 (q) y la igualdad ocurre cuando pi = 1/q para toda i.
El teorema confirma nuestra observacion de que cuando la distribucion de los smbolos
de una fuente es uniforme la entropa es maxima. Por ejemplo, si una fuente es binaria,
es decir, s
olo puede producir dos smbolos, digamos 0 o 1, con probabilidad p y 1 p
respectivamente, entonces el comportamiento de la entropa en funcion de p es el que se
muestra en la figura 3.2. En este caso la entropa es:
1
1
H(p) = p log2
+ (1 p) log2
(3.6)
p
1p
Recordemos que si u es una funcion de x entonces:
De donde:
d log(u)
1 du
=
dx
u dx
d
1
1
log2
= p p2 =
dx
p
p
adem
as:
d
1
1
log2
= (1 p) (1 p)2 =
dx
1p
1p
As que en nuestro caso, derivando 3.6 obtenemos:
1
1
1
1
1
1
0
H (p) = p +log2
+(1p)
log2
= log2
log2
(3.7)
p
p
1p
1p
p
1p
claramente la derivada es cero cuando p = 1 p = 1/2, notese ademas que tiende a
infinito cuando p se acerca a cero o cuando se acerca a uno, lo que confirma el aspecto
exhibido en la figura 3.2.
63
Figura 3.2: Aspecto de la entropa de una fuente binaria (con alfabeto S = {0, 1}) en
la que P (0) = p y P (1) = 1 p. En el eje de las abscisas se ha puesto la variable p.
64
Informacion
y entropa
Sea S 0 = (S 0 , P 0 ) una nueva fuente en la que S 0 = {aa, ab, ba, bb} y P 0 es la distribuci
on que aparece listada arriba. En este caso un esquema de codificacion de Huffman
nos entrega:
f 0 (aa) = 1
f 0 (ab) = 01
f 0 (ba) = 001
f 0 (bb) = 000
La longitud promedio de esta codificacion es 1.56, pero en cada palabra de c
odigo
se codifican dos smbolos de la fuente original as que la longitud promedio de palabra
para representar los smbolos de la fuente original es 1.56/2 = 0.78 lo que resulta menor
que 1. Esto representa una mejora sobre el esquema de codificacion de Huffman de la
fuente original.
Analizaremos esto con cuidado, pero antes necesitamos algo de notacion y definiciones.
Definici
on 3.3 Sea S = (S, P ) una fuente de informacion. La n-esima extension de S es
la fuente S n = (S n , P n ) donde S n es el conjunto de todas las cadenas de longitud n
sobre S y P n es la distribucion de probabilidades definida como sigue: sea s una cadena
cualquiera de S n , s = si1 si2 . . . sin , entonces P n (s) = pi1 pi2 . . . pin
Sean S = {s1 , s2 } un alfabeto de smbolos y P (s1 ) = p1 , P (s2 ) = p2 una distribuci
on para una fuente S = (S, P ). La segunda extension de S tiene el alfabeto S 2 =
{s1 s1 , s1 s2 , s2 s1 , s2 s2 } la distribucion de la extension es P 2 = {p1 p1 , p1 p2 , p2 p1 , p2 p2 }.
La entropa de esta fuente es:
1
1
H(S 2 ) = p1 p1 log2
+ p1 p2 log2
+
p1 p1
p1 p2
1
1
p2 p1 log2
+ p2 p2 log2
p2 p1
p2 p2
1
1
=
p1 p1 log2
+ p1 p1 log2
+
p1
p1
1
1
p1 p2 log2
+ p1 p2 log2
+
p1
p2
1
1
p2 p1 log2
+ p2 p1 log2
+
p2
p1
1
1
p2 p2 log2
+ p2 p2 log2
p2
p2
1
(p1 p1 + p1 p1 + p1 p2 + p2 p1 ) +
= log2
p1
1
log2
(p1 p2 + p2 p1 + p2 p2 + p2 p2 )
(3.8)
p2
65
1
p1 (p1 + p1 + p2 + p2 ) +
p1
1
log2
p2 (p1 + p1 + p2 + p2 ) +
p2
1
1
= 2 p1 log2
+ 2 p2 log2
p1
p2
= 2H(S)
= log2
Teorema 3.3 Sea S una fuente de informacion y sea S n su n-esima extension. Entonces:
H(S n ) = n H(S)
Demostraci
on:
H(S ) =
p i1 p i2
i1 ,i2 ,...,in
p i1 p i2
i1 ,i2 ,...,in
X
i1 ,i2 ,...,in
p i1 p i2
1
. . . pin log2
pi1 pi2 . . . pin
1
. . . pin log2
+ ...
p i1
1
. . . pin log2
p in
p i2 . . .
p in
p i1
i1 =1
i2 =1
in =1
66
Informacion
y entropa
67
Teorema 3.4 (de la codificacion sin ruido, version 1). Sea S una fuente de informacion. Si
lonmin (r, S) denota la mnima longitud promedio de palabra sobre todos los esquemas
unvocamente decodificables r-arios para S entonces:
Hr (S) lonmin (r, S)
Demostraci
on:
Sea P = {p1 , p2 , . . . pq } la distribucion de la fuente S. Sea (C, f ) un esquema de codificaci
on r-ario unvocamente decodificable para S con longitudes de palabra `1 , `2 , . . . , `q
en correspondencia a las probabilidades de P .
Sea ri = 1/r`i . Evidentemente 0 r1 1. Como C es unvocamente decodificable
debe cumplir con el teorema de McMillan, as que:
q
X
i=1
ri =
q
X
1
1
r`i
(3.10)
i=1
Se cumplen las hipotesis del lema 3.1 asi que debe ocurrir que:
q
X
1
H(S) =
pi log2
pi
i=1
q
X
1
pi log2
ri
=
=
i=1
q
X
i=1
q
X
pi log2 r`i
pi `i log2 (r)
i=1
= log2 (r)
q
X
p i `i
i=1
H(S)
lon(C, f )
log2 (r)
68
Informacion
y entropa
EJEMPLO 3.3
Sea S = (S, P ) una fuente con distribucion uniforme con el alfabeto S = {0, 1, . . . , 9}.
Entonces H(S) = log2 (10).
El teorema dice que la longitud promedio de una palabra de codigo unvocamente
decodificable ternario es, al menos:
H3 (S) =
H(S)
= 2.0959
log2 (3)
Este teorema nos puede auxiliar en la construccion de un codigo con palabras cortas,
eficiente, para una fuente S. Recordemos que si tenemos longitudes `1 , `2 , . . . , `q tales
que satisfacen la desigualdad de Kraft:
q
X
1
1
r `i
i=1
entonces existe un c
odigo instantaneo C con palabras de esas longitudes para S.
Si P = {p1 , p2 , . . . , pq } es la distribucion de S entonces podemos reemplazar el uno
de la derecha de la desigualdad:
q
q
X
X
1
1
=
pi
r`i
i=1
(3.11)
i=1
Ah! entonces si establecemos los valores de las longitudes de tal forma que para
toda i {1, 2, . . . , q} ocurra que:
1
pi
r`i
(3.12)
se cumplir
a autom
aticamente 3.11 y por tanto existira un esquema de codificaci
on instant
aneo (C, f ) para S con esas longitudes justamente.
Pero 3.12 es equivalente a:
1
`i
logr (r ) logr
pi
de donde:
logr
1
pi
`i
(3.13)
69
(3.15)
q
X
p i `i
i=1
q
X
1
<
pi logr
+1
pi
i=1
X
q
q
X
1
=
+
pi logr
pi
pi
i=1
i=1
= Hr (S) + 1
Como (C, f ) es un codigo instantaneo r-ario entonces la longitud promedio de
sus palabras es, al menos la mnima de las longitudes promedio para los esquemas
unvocamente decodificables. As que finalmente:
lonmin (r, S) AvgLenr (C, f ) < Hr (S) + 1
Esto, junto con el la primera version del teorema de la codificacion sin ruido demuestra lo siguiente.
Teorema 3.5 (de la codificacion sin ruido, version 2). Sea S una fuente de informacion. Si
lonmin (r, S) denota la mnima longitud promedio de palabra sobre todos los esquemas
unvocamente decodificables r-arios para S entonces:
Hr (S) lonmin (r, S) < Hr (S) + 1
Si ahora tomamos en consideracion las extensiones de la fuente, que son por s
mismas, fuentes y les aplicamos el teorema:
Hr (S n ) lonmin (r, S n ) < Hr (S n ) + 1
Pero sabemos que Hr (S n ) = n H(S), as que:
n Hr (S) lonmin (r, S n ) < n Hr (S) + 1
70
Informacion
y entropa
Teorema 3.6 (de la codificacion sin ruido, version 3). Sea S una fuente de informacion y S n
su n-esima extensi
on. Si lonmin (r, S n ) denota la mnima longitud promedio de palabra
sobre todos los esquemas unvocamente decodificables r-arios para S n entonces:
Hr (S)
lonmin (r, S n )
1
< Hr (S) +
n
n
+Ejercicios
3.1
3.2 Calcule la entropa de una fuente que produce tres smbolos con probabilidades
{1/4, 1/4, 1/2}.
3.3
3.4 Calcule la cantidad esperada de informacion que se recibe de lanzar al aire una
moneda. Haga lo mismo suponiendo que se tira un dado. Cual es mayor? Explique.
3.5 Suponga una fuente S con alfabeto A = {a, b} y distribucion de probabilidades
P (a) = 0.75 y P (b) = 0.25. Obtenga un codigo de Huffman para esta fuente y luego para
sus dos siguientes extensiones. Calcule la longitud promedio de palabra para cada una
de ellas y calcule tambien la cantidad de bits usados en cada extension para representar
los smbolos del alfabeto original en promedio. Que puede comprobar a medida que se
avanza en el n
umero de extension?
3.6
La definici
on de entropa, basada en el valor esperado de una variable aleatoria,
EJERCICIOS
71
1
2
(x)2
2 2
3.7 En 1950 Claude Shannon calculo la entropa del idioma ingles escrito haciendo
consideraciones de predictibilidad usando modelos estadsticos de diversos
ordenes, en
el m
as simple, considerando solamente las frecuencias relativas de cada letra del alabeto
(26 letras en ingles) obtuvo la medida1 de 1.14. Repita el experimento de Shannon,
estime, mediante un programa de computadora, la entropa del ingles considerando la
distribuci
on del alfabeto convencional de 26 letras. Como se compara su resultado con
el de Shannon? Proceda a hacer lo mismo para el castellano a
nadiendo la n
al alfabeto
anterior, cu
al resulto mayor?
Claude E. Shannon, Prediction and Entropy of Printed English, Bell Systems Technical Journal,
Vol. 30, 1951, pp. 50-64.
Codificaci
on para
detectar y corregir
errores
Hasta ahora nos hemos dedicado a codificar datos buscando representarlos de la manera
m
as breve posible. Hemos estado suponiendo que lo que se escribe por un lado del
canal de transmisi
on (ya sea este espacial o temporal) puede ser ledo correctamente
del otro lado; lo que se lee es exactamente lo que se escribio. Pero el panorama cambia
dr
asticamente si el canal de transmision no es confiable, si no estamos seguros de que
lo que se escribe de un lado puede ser ledo con toda exactitud del otro lado, entonces
nuestras prioridades cambian, ahora nuestra preocupacion fundamental no es abreviar
la representaci
on de los datos, sino asegurar que estos puedan ser recuperados.
Ahora nuestra intencion es hacer posible que, luego de transmitir los datos de interes,
podamos percatarnos de que ocurrieron errores durante la transmision y, en el mejor de
los casos, revertir las alteraciones que estos errores ocasionaron a los datos.
Los c
odigos que usaremos ahora son de longitud fija, tambien llamados de bloque,
todas las palabras del codigo miden lo mismo.
Definici
on 4.1 Sea A = {a1 , . . . , ar } un conjunto de tamano (cardinalidad) r al que llamaremos
el alfabeto del c
odigo y cuyos elementos se llaman smbolos del c
odigo. Un c
odigo de
bloque r-ario C sobre A es un subconjunto no vaco de An (el conjunto de todas las
cadenas de longitud n sobre A). Los elementos de C se denominan palabras de c
odigo,
73
74
n es la longitud del c
odigo (formalmente de cada una de sus palabras). Al n
umero M de
palabras en el c
odigo C se le llama el tama
no del c
odigo. Un codigo con M palabras de
longitud n sobre un alfabeto de r smbolos lo denominaremos un (n, M )-codigo r-ario.
Por el canal de comunicacion tambien viajan smbolos, podemos suponer que uno
a la vez (serial). As que cada smbolo que viaja por el canal puede ser alterado y
convertido en alg
un otro smbolo. Si esto ocurre y solo un smbolo ha viajado por el
canal entonces no podemos darnos cuenta de que ha ocurrido un error, lo que recibimos
es tan v
alido como lo que nos fue enviado. Si en cambio ocurre un error en un smbolo
dentro de una palabra de codigo posiblemente podamos percatarnos de ello. Si al ocurrir
el error un smbolo fue cambiado por otro y la cadena resultante esta en An pero no
en el cat
alogo de palabras del codigo C, entonces podemos estar seguros de que han
ocurrido errores. Si luego de que ocurren el o los errores el resultado es una cadena An
que si est
a en C entonces no podremos percatarnos de que han ocurrido alteraciones
indeseables en los datos porque, igual que como ocurra en el caso de un solo smbolo, el
resultado de las alteraciones es algo tan valido como lo que nos fue enviado en realidad
y bien hubiera podido ser eso lo que se nos quera transmitir.
Definici
on 4.2 Una regla de decision es un procedimiento (hablando como computologos) que
decide, dada la cadena recibida, que cadena del codigo le corresponde o si han ocurrido
errores.
75
Si formul
aramos la definicion en los terminos de un matematico diramos que una
regla de decisi
on es una funcion f que mapea una cadena cualquiera s An en f (s)
C {?}, donde ? es un smbolo utilizado para denotar que han ocurrido errores.
EJEMPLO 4.1
Sea C = {00000, 11111} un (5, 2)-codigo. Supongamos que es 11011 la cadena recibida.
Una posible regla de decision es: f1 (11011) = 11111. Otra posible regla es: f2 (11011) =
00000 y por supuesto otra es: f3 (11011) =? Cual es la mejor si queremos recuperar
la informaci
on que originalmente nos fue transmitida y que desconocemos? responder
esto no es trivial, para hacerlo necesitamos saber algo del canal por el que viaj
o la
informaci
on. Si por ejemplo sabemos que el canal casi nunca altera los datos que
transitan por el, entonces podramos decir que con alta probabilidad lo que en realidad
nos fue enviado es el resultado de f1 , si en cambio sabemos que el canal es muy malo
y casi siempre altera lo que viaja por el entonces muy probablemente la mejor regla de
decisi
on sea f2 . Por supuesto si no queremos arriesgarnos podemos optar por f3 , m
as
seguro, pero menos interesante.
76
Definici
on 4.3 Un canal de comunicacion r-ario consiste de un conjunto de smbolos llamado alfabeto de canal A = {a1 , . . . , ar } y un conjunto de probabilidades de transici
on
(probabilidades a posteriori ) P (aj recibido | ai enviado) que satisfacen:
r
X
j=1
(n
otese que k permanece fija durante toda la suma). Este conjunto de probabilidades
no cambia con el tiempo.
Otra caracterstica que a
nadiremos a nuestro modelo de canal es la falta de memoria.
El resultado en la transmision de cualquier smbolo en un momento dado no se ve
influido por alguna transmision previa, es decir, la transmision de un smbolo es evento
independiente. As que si c = c1 c2 . . . cn es una palabra de C enviada por un extremo
del canal y d = d1 d2 . . . dn es una cadena de An recibida en el otro extremo entonces:
P (d recibido | c enviado) =
n
Y
i=1
Como nuestro modelo de canal esta compuesto de los smbolos del alfabeto y las
probabilidades de transicion entonces un canal puede ser completamente descrito mediante una gr
afica bipartita en la que los dos conjuntos de vertices a cada lado son los
smbolos del alfabeto A = {a1 , . . . , ar } y el peso de cada arista (ai , aj ) en la gr
afica es
la probabilidad de transicion P (aj recibido | ai enviado).
Hay algunos canales de uso frecuente en teora de la informacion, algunos de ellos
est
an representados gr
aficamente en la figura 4.1.
Estos modelos de canales son u
tiles pero por supuesto no son verosmiles en toda
circunstancia. Muchos canales de comunicacion reales no podramos ajustarlos a alguno
de estos modelos, en general suelen ser mas complicados. En la vida real el comportamiento de un canal est
a determinado por la fuente de distorsion de datos. Por ejemplo
el ruido causado por la atmosfera o por el movimiento de los electrones en el cable que
transmite (ruido termico) se denomina ruido blanco o ruido blanco gaussiano. La luz
blanca se hace mezclando todos los colores (todas las frecuencias del espectro visible)
en la misma medida, el ruido es blanco porque, analogamente, contiene de todas las
frecuencias en la misma medida. Podemos ver y or el ruido blanco cuando se acaba
la programaci
on de una estacion de television y queda la pantalla llena de puntitos.
Otro tipo de ruido ocurre cuando nuestros cables de red, por ejemplo, pasan cerca de
un motor que no funciona permanentemente: cuando el motor se enciende ocasiona
perturbaciones electromagneticas a su alrededor, luego el motor es apaga y todo vuelve
a la normalidad, el ruido se da en rafagas que afectan, casi siempre sin remedio, grupos
compactos de bits; a este tipo de ruido se le llama ruido de impulso. El ruido es pues una
alteraci
on electromagnetica y como tal se puede ver como la superposicion de muchas
77
1p
1p
1p
1p
B
0
1p
p
c1
c1
c2
c2
cr
cr
1p
78
ondas diferentes (el ruido blanco suma sobre todas las frecuencias en la misma medida)
y estas a su vez se suman a las que constituyen nuestras transmisiones.
Evidentemente no podemos evitar el ruido, as que debemos vivir con el y tratar de
contrarrestar sus efectos. Lo que deseamos es poder encontrar una regla de decisi
on que
maximice la probabilidad de decodificar correctamente, es decir, necesitamos una f que
maximice la probabilidad de que f (x) haya sido enviada cuando recibimos x. Que se
equivoque lo menos posible. Supongamos que se nos enva una cierta palabra de c
odigo
c C y que algo afecta la transmision de la palabra, lo que ocasiona que el receptor
reciba una cadena x An , desearamos tener una regla de decision f que nos dijera
f (x) = c. Hay que tener en cuenta que nuestra regla de decision es estatica, es decir
si recibimos en dos instantes de tiempo diferentes la misma cadena y y la primera vez
nuestra decisi
on fue f (y) = ci entonces la segunda vez la decision es la misma. Bajo
estas condiciones lo que queremos es una regla de decision que nos dijera f (x) = c en el
ejemplo anterior, siempre y cuando c sea la palabra de entre todas las del codigo, con
la mayor probabilidad de haber sido transformada en x por el canal. Es decir:
P (decodif icar correctamente) =
X
P (f (x) enviado | x recibido) P (x recibido)
(4.1)
xAn
As que para maximizar el lado izquierdo de esta expresion debemos maximizar cada
uno de los sumandos del lado derecho, dado que P (x recibido) esta fija, que debemos
maximizar: P (f (x) enviado | x recibido). Esto significa que dada la cadena recibida
x An debemos tener una lista de las probabilidades:
P (c1 enviado | x recibido)
P (c2 enviado | x recibido)
..
.
P (cM enviado | x recibido)
en la que podamos buscar para que palabra de codigo ck el valor de la probabilidad
es mayor en la lista. De no ser porque esto es imposible sera bastante complicado:
necesitaramos tener almacenadas | A |n probabilidades para cada palabra de c
odigo.
Sin embargo podramos garantizar que en la mayora de los casos, dada la cadena
recibida, adivinamos correctamente cual fue la palabra de codigo que nos fue enviada.
Pero realmente esto es imposible. Notese que las probabilidades de la lista solo
puede calcularlas alguien que observa lo que se enva y lo que se recibe: podramos
decirle dios u observador ideal.
79
Definici
on 4.4 Cualquier esquema de decision f con la propiedad de que:
P (f (x) enviado | x recibido) = max{P (c enviado | x recibido)}
cC
EJEMPLO 4.2
En un sistema de comunicacion recibimos la cadena 1010 y en nuestra u
ltima charla
con dios el nos dijo que el 90% de las veces que recibamos 1010 en realidad nos haban
enviado 1011. As que en la mejor regla de decision que podramos tener, la cadena
1010 se mapea en 1011.
Bien ahora, como todo filosofo medieval que se respete, nos preguntamos, c
omo
podemos acercarnos a la divinidad? Como hacemos nosotros, simples mortales contingentes e imperfectos, para procurar tener una regla de decision lo mas cercana posible
al observador ideal?
Podramos tratar de poner cada una de las probabilidades condicionales en la lista
en terminos cosas que si podamos conocer usando el teorema de Bayes:
P (c enviado | x recibido) = PM
i=1 [P (x
(4.2)
bien, ahora tenemos involucradas las probabilidades del canal, las probabilidades a posteriori. Sin embargo tambien tenemos involucradas las probabilidades:
P (c1 enviado), P (c2 enviado), . . . , P (cM enviado)
(4.3)
que es la distribuci
on de entrada al canal y que, por supuesto, no conoce el receptor.
Ahora s ya no hay nada que hacer, como siempre los pobres mortales no podemos
siquiera aproximarnos a la suprema perfeccion.
Para no vernos tan pateticos podemos hacer suposiciones acerca de la distribuci
on de
entrada y la suposicion menos descabellada es considerarla uniforme. Es decir, suponer
que
1
P (ci enviado) =
M
para toda ci C, donde M es el n
umero de palabras en el codigo. En este caso la
expresi
on 4.2 se transforma en:
P (c enviado | x recibido) =
80
P (x recibido | c enviado)
PM
i=1 [P (x recibido | ci enviado)]
(4.4)
y maximizar esta u
ltima expresion consiste en maximizar las probabilidades del canal,
esto tiene un nombre.
Definici
on 4.5 Una regla de decision f que maximiza las probabilidades del canal (probabilidades a posteriori ), es decir:
P (x recibido | f (x) enviado) = max{P (x recibido | c enviado)}
cC
EJEMPLO 4.3
Supongamos que en un canal hay una probabilidad p = 0.05 (por lo que 1 p = 0.95)
de que se estropee (invierta) un bit. Sea C = {0000, 1111} un codigo y supongamos
que, luego de que se nos enva una de las palabras de C recibimos 0100.
Tenemos:
P (0100 recibido | 0000 enviado) = P (1 recibido | 0 enviado)
P (0 recibido | 0 enviado)3
= 0.05 (0.95)3 0.0428
P (0100 recibido | 1111 enviado) = P (1 recibido | 1 enviado)
P (0 recibido | 1 enviado)3
= 0.95 (0.05)3 = 0.000118
As que la regla de decision de maxima verosimilitud (f ) dice: f (0100) = 0000. Esta
sera la regla de observador ideal si suponemos que P (0000 enviado) = P (1111 enviado) =
1/2. Pero si: P (0000 enviado) = 0.0001 y P (1111 enviado) = 0.9999, entonces (usando
el teorema de Bayes):
P (0000 enviado | 0100 recibido) =
y
P (1111 enviado | 0100 recibido) =
0.0428 0.0001
= 0.035
0.000122
0.000118 0.9999
= 0.965
0.000122
4.2 Decodificaci
on al vecino mas cercano
81
(4.5)
Teorema 4.1 Para un canal simetrico binario con probabilidad de error p < 1/2, la regla de
decisi
on de m
axima verosimilitud es la que elige la palabra de codigo cuya distancia de
Hamming a la palabra recibida x es mnima.
82
Demostraci
on:
Sea x una palabra binaria de longitud n recibida. En la expresion 4.5 es claro que
P (x recibido | c enviado) es mayor mientras mas grande sea el exponente n k, dado
que p < 1 p.
Pero n k es tanto mas grande cuanto menor sea k, que es la distancia de Hamming
entre x y la palabra de codigo c. As que la regla de decodificacion de maxima verosimilitud (la que maximiza P (x recibido | c enviado)) es la que elige decodificar x como
la palabra de c
odigo c con la distancia de Hamming mas peque
na a x.
A las palabras de c
odigo con mnima distancia de una palabra x se les denomina
las vecinas m
as cercanas de x y a la regla de decision que acabamos de formular se le
denomina por tanto de vecino m
as cercano.
N
otese que dado que p < 1 p al decodificar mediante la regla de decision de vecino
m
as cercano estamos suponiendo implcitamente que el n
umero de errores es justamente
la distancia de Hamming entre lo que recibimos y lo que es entregado por la regla de
decisi
on.
EJEMPLO 4.4
Sea C = {00000, 00101, 11000, 00011} un codigo binario usado para transmitir datos a
traves de un canal. Sea x = 01101 una palabra recibida. Entonces la decodificaci
on de
vecino m
as cercano f decodifica x como f (x) = 00101 ya que la segunda palabra del
c
odigo dista de x en uno y el resto de las palabras distan 3 unidades de ella.
EJEMPLO 4.5
Supongamos que tenemos el codigo binario de longitud 10 siguiente C = {c1 =
0000000000, c2 = 1111100000, c3 = 1111111111}, que se nos enva la palabra c1 y que
recibimos la cadena x1 = 1100000000, nuestra regla de decodificacion de vecino m
as
cercano f nos entrega entonces f (x1 ) = 0000000000 = c1 lo cual es correcto. Pero si
en cambio recibimos x2 = 1110000000 entonces f (x2 ) = 1111100000 = c2 lo que ya no
83
es correcto. Nuestro codigo puede corregir dos errores pero no tres en este caso. Sin
embargo si la palabra recibida es x3 = 0000001111 entonces f (x3 ) = 0000000000 = c1
lo que es correcto. Tenemos un problema, un codigo cualquiera puede corregir algunas
veces m
as errores que otras. El codigo que utilizamos como ejemplo puede corregir
algunas veces hasta cuatro errores, pero no siempre, sera bueno determinar cu
al es el
mnimo n
umero de errores que puede corregir, es decir, cuantos errores podemos estar
seguros de que puede corregir siempre.
Sabemos que el n
umero de errores que puede detectar o corregir un c
odigo est
a en
funci
on de que tan diferentes o, para usar un lenguaje mas propio, que tan distantes (en
terminos de Hamming) estan sus palabras. As que para determinar cual es el mnimo
n
umero de errores que puede detectar y/o corregir un codigo deberemos hablar de la
mnima de las distancias entre sus palabras.
Definici
on 4.6 Sea C un codigo con, al menos, dos palabras. La distancia mnima del codigo,
que denotaremos con d(C) es la distancia mas peque
na entre las distintas palabras del
c
odigo:
d(C) = min{d(ci , cj ) | ci , cj C, ci 6= cj }
Evidentemente, dado que ci 6= cj d(C) 1.
Por cierto esta definicion nos permite ser mas precisos al describir un c
odigo.
Definici
on 4.7 Un codigo r-ario con M palabras diferentes, de longitud n y distancia mnima
d es un (n, M, d)-c
odigo r-ario.
Ahora procederemos a definir formalmente que significa que un codigo detecte errores.
Definici
on 4.8 Sea u un entero positivo. Un codigo C es detector de u errores si cuando
una palabra cualquiera c C es enviada a traves de un canal y le ocurren a lo m
as u
errores de smbolo, la palabra recibida x no pertenece a C. Un codigo es detector de
exactamente u errores si es detector de u errores pero no de u + 1 errores.
Hay que hacer notar que una vez que una palabra es recibida, de alguna manera
se compara con las que constituyen el codigo, si no empata con alguna podemos estar
seguros de que ocurrieron errores, pero, como ya habamos dicho, si empata con alguna
no podemos saber si ocurrieron o no errores. Esto es equivalente a decir que una vez que
ha sido recibida una palabra, el receptor nunca sabe cuantos errores ocurrieron durante
su transmisi
on.
84
Definici
on 4.9 Sea v un entero positivo. Un codigo C es corrector de v errores si cuando una
palabra cualquiera c C es enviada a traves de un canal y le ocurren a lo mas v errores
de smbolo, la regla de decision de vecino mas cercano f mapea la palabra recibida en
c. Un c
odigo es corrector de exactamente v errores si es corrector de v errores pero no
de v + 1 errores.
Recordemos nuestro ejemplo al inicio de esta seccion. Si solo pretendemos detectar
errores con ese c
odigo cuantos podemos detectar? Supongamos que es enviada la
palabra c1 = 0000000000 y que es recibida la palabra x4 = 1111000000, en este caso
podemos percatarnos de que han ocurrido errores. El receptor no sabe cuantos, de hecho
si decodifica usando el vecino mas proximo se equivocara suponiendo que le fue enviada
c2 , pero si no decodifica y solo quiere reportar errores, en este caso podra hacerlo bien.
Si hubiera cinco unos al principio de la palabra recibida ya no podra hacerlo, es decir
si hubieran ocurrido cinco errores. En ese caso la palabra recibida es una de las del
c
odigo (c2 ) y no habra por que dudar de que esa fuera la palabra enviada. As que
podemos detectar cuatro errores sera ese el mnimo n
umero de errores detectables con
el c
odigo del ejemplo? ciertamente lo es. En general si la distancia mnima de un c
odigo
es d significa que las palabras mas cercanas difieren en d posiciones y que si se cometen
d errores justo en esas posiciones entonces no seran detectables, el n
umero m
aximo de
errores detectables de d 1.
Ahora bien, el mnimo n
umero de errores que puede corregir es 2. Por que? bueno,
porque como vimos si la palabra recibida es x1 = 1100000000 todo sale bien, pero no
cuando es x2 = 1110000000 y eso ocurre porque el tercer uno cambia la palabra de
c
odigo que es vecino m
as cercano de la palabra. La distancia mnima del codigo es 5 y
si observamos x1 nos damos cuenta de que es una palabra que esta entre c1 , la palabra
enviada, y c2 pero m
as cercana a la primera. Es decir si nos fijaramos en algo as como
el punto medio entre c1 y c2 resulta que x1 esta en la mitad mas proxima a c1 , su
distancia a c1 es menor que la mitad de la distancia entre c1 y c2 , que por cierto es la
distancia mnima del c
odigo. Cuando la palabra recibida es x2 nos pasamos a la mitad
dominada por c2 , cambia el vecino mas cercano y por tanto la decodificacion es err
onea.
Con esto en mente podemos formalizar.
85
Lema 4.4.3 Si c es una palabra de un (n, M, d)-codigo C, tal que d(C) > 2v con 2v n y x
es una cadena de longitud n tal que d(c, x) v entonces c es la palabra del c
odigo C
m
as cercana a x.
Demostraci
on:
Por reducci
on al absurdo.
Supongamos que tenemos un codigo C tal que d(C) > 2v. Sean c C y x tal que
d(c, x) v. Supongamos tambien que existe otra palabra c0 C tal que d(c0 , x) v y
c 6= c0 .
Por la desigualdad del triangulo:
d(c, c0 ) d(c, x) + d(x, c0 ) v + v = 2v
Pero esto significa que hay dos palabras de C, c y c0 que distan a lo m
as 2v, lo que
contradice que la distancia mnima del codigo es mayor que 2v.
86
(4.6)
87
Demostraci
on:
Por el lema 4.2 tenemos que C es detector de u errores, donde d u + 1. Es decir
u d 1. Si es detector de exactamente u errores significa que no es detector de u + 1
as que u adquiere su valor maximo, es decir u = d 1.
Por el lema 4.4 tenemos que C es corrector de v errores donde d 2v + 1, de donde:
v
d1
2
(4.7)
Para que sea corrector de exactamente v errores no debe ser corrector de v + 1 as que
v debe tener el valor mas grande posible que satisfaga 4.7, es decir:
d1
v=
(4.8)
2
EJEMPLO 4.6
Un metodo hist
oricamente importante para detectar errores en la transmisi
on o almacenamiento de informacion es el de a
nadir bits de paridad a los datos.
Supongamos que nuestro codigo de n bits consiste en todos los n
umeros expresables
en binario en n bits. La distancia mnima del codigo es entonces 1 (la distancia entre el
0 y el 1 es 1, por ejemplo). As que nuestro codigo puede detectar 1 1 = 0 errores.
Los esquemas de a
nadir bit de paridad a cada palabra son dos posibles: paridad par
y paridad impar. En ambos esquemas se cuentan el n
umero de unos en la palabra a
enviar, este n
umero de unos puede ser par o impar y dependiendo de ello se a
nade un bit
adicional en 1 o en 0. En el esquema de paridad par se a
nade un 1 a todas las palabras
que en el c
odigo original tienen un n
umero impar de unos y un cero a las restantes,
el objetivo es completar un n
umero par de unos en toda palabra del codigo con el bit
a
nadido. En el esquema de paridad impar el objetivo es el opuesto, se completa un
n
umero impar de bits en todas las palabras del nuevo codigo.
Supongamos que las palabras que deseamos enviar son las de la primera columna de
la tabla 4.1. Si bien la distancia en el codigo original era uno, en el codigo con bit de
paridad la distancia mnima es dos, lo que significa que ya es posible detectar 2 1 = 1
bit err
oneo por cada palabra de 4 bits.
El esquema de verificacion de paridad era muy usual en las comunicaciones digitales
durante las decadas pasadas y a
un hoy se utiliza para conexiones por modem en una lnea
telef
onica. Tambien las antiguas unidades de cinta magnetica utilizaban este esquema,
aunque con una variante que permite ya no solo detectar sino corregir algunos errores
Supongamos que utilizamos el codigo mostrado en la tabla (4.1). Cada palabra
posee su bit de verificacion. Ahora a
nadimos una palabra completa luego de cada tres
88
000
001
010
011
100
101
110
111
0000
0011
0101
0110
1001
1010
1100
1111
Tabla 4.1: Esquema de paridad par. A las palabras en el codigo original (columna
izquierda) se les a
nade un bit adicional para completar siempre un n
umero par de unos
en cada palabra del nuevo codigo (columna derecha). Con negrita se denota el bit de
paridad agregado.
palabra 1
palabra 2
palabra 3
palabra de verif.
0101
1001
0110
1010
bits de verificacin
horizontal (por palabra)
bits de verificacin
vertical
Figura 4.2: Verificacion de paridad horizontal y vertical
palabras del c
odigo, de tal forma que cada bit de la palabra a
nadida verifique los bits
verticalmente tal como lo hacen los bits de paridad de cada palabra, como se muestra en
la figura 4.6, en la que hay tres palabras a enviar a las que se a
nade una cuarta cuyos bits
verifican verticalmente los de cada palabra en una posicion determinada. Supongamos
que en el bloque mostrado en la figura, el tercer bit mas significativo de la primera
palabra fuera alterado quedando: 0111. Al recibir esta palabra nos percataramos de
que es err
onea y m
as tarde cuando recibieramos la palabra de verificacion: 1010 nos
daramos cuanta de que hay un error en el tercer bit mas significativo, tenemos las
coordenadas: primera palabra, tercer bit y procedemos a negar el bit que se encuentre
en esa posici
on, lo que corregira el error.
Por supuesto si se cometen dos errores en el renglon y dos en una misma columna
entonces el error en la interseccion pasa desapercibido.
89
4.4 C
odigos maximales
EJEMPLO 4.7
Otro ejemplo de c
odigo detector de errores es el llamado International Standard Book
Number o ISBN. El ISBN es un (10, 109 , 2)-codigo por lo que puede detectar un error
en alguno de sus dgitos, que por cierto son decimales. Para comprender este c
odigo
pongamos un ejemplo: El ISBN de un libro podra ser 0412786907. El cero inicial
significa que el libro fue producido en los Estados Unidos de Norteamerica, el 412 que
le sigue es el c
odigo de la editorial (Chapman & Hall) los siguientes cinco dgitos son el
c
odigo del libro en la editorial y el u
ltimo dgito es de verificacion. Para calcularlo se
ejecuta el algoritmo siguiente:
1. Para cada dgito i del codigo ISBN del libro (salvo el u
ltimo i = 10 que es el que
queremos calcular) sumar el valor de los anteriores i 1 dgitos. Llamemos a este
n
umero si .
i
X
si =
dj
j=1
.
2. Calcular S =
P9
i=1 si .
90
Dgito
0
4
1
2
7
8
6
9
0
Suma
0
4
5
7
14
22
28
37
37
Suma de suma
0
4
9
16
30
52
80
117
154
Tabla 4.2: C
alculo del u
ltimo dgito de un codigo ISBN. En la columna izquierda se
muestran los primeros 9 dgitos del codigo, en la columna de en medio la suma acumulada
parcial de los dgitos y en la columna derecha la suma acumulada parcial de las sumas
de la columna previa.
Definici
on 4.10 Un (n, M, d)-codigo C es maximal si no esta contenido en un codigo mas
grande con la misma distancia mnima. Es decir si no existe un (n, M + 1, d)-c
odigo, C 0
0
tal que C C .
Teorema 4.6 Un (n, M, d)-codigo C, sobre un alfabeto A es maximal si y solo si para toda
x An \ C existe c C tal que d(x, c) < d.
Demostraci
on:
Por reducci
on al absurdo.
Sea C un (n, M, d)-codigo maximal y supongamos que existe x An \ C tal que
para toda c C ocurre que d(x, c) d.
Si esto es cierto entonces el codigo C 0 = C {x} es un (n, M + 1, d)-c
odigo, ya
que la distancia mnima no se vera afectada por la inclusion de x.
Entonces C C 0 por lo que C no es maximal, lo que contradice nuestra hip
otesis.
Sea C un (n, M, d)-codigo. Supongamos que para toda x An \C existe una palabra
del c
odigo c C tal que d(x, c) < d. Esto significa que la inclusion de cualquier
palabra x que no este en el codigo reduce la distancia mnima de C, porque en el
91
c
odigo ya sabemos que existe alguna c tal que su distancia a x es menor que el
mnimo actual d.
Tener c
odigos maximales tiene su ventaja y su desventaja. La ventaja es que en
un c
odigo maximal tenemos el mayor n
umero posible de cadenas con una distancia
mnima dada. Entonces tenemos el acervo mas grande posible de palabras y por tanto
el poder m
aximo de representatividad del codigo. La desventaja es que con un c
odigo
no maximal ocasionalmente podemos detectar/corregir un n
umero mayor de errores de
los que indica la distancia mnima.
(4.10)
k=d
92
(4.11)
k=0
de donde:
d1
bX
c
2
n
P (error decodif icaci
on) 1
pk (1 p)nk
k
(4.12)
k=0
Teorema 4.7 Para un canal simetrico binario y usando decodificacion de vecino mas cercano,
la probabilidad de error al decodificar una palabra, esto es, la probabilidad de que la
palabra decodificada no sea la enviada, satisface:
n
X
n
pk (1 p)nk P (error decodif icaci
on)
k
k=d
d1
bX
c
2
n
1
pk (1 p)nk
k
(4.13)
k=0
4.6 C
odigos de Hamming: idea e implementacion
93
94
Indice
0
1
2
3
4
5
6
7
Sndrome
000
001
010
011
100
101
110
111
de esos debe prenderse el segundo bit del sndrome. Siguiendo el mismo procedimiento
vemos que el bit m
as significativo del sndrome debe prenderse cuando el bit err
oneo
sea el 4, 5, 6 o 7.
Perfecto, ahora sabemos que posiciones deben ser verificadas por cada bit de paridad. Pondremos un bit de paridad en la posicion 1 de la palabra (es decir el bit m
as
significativo de ella), ese bit de paridad completa un n
umero par de unos considerando
las posiciones 1, 3, 5 y 7. El segundo bit de paridad aparece en la posicion 2 y hace que
el n
umero de unos de las posiciones 2, 3, 6 y 7. El u
ltimo bit de paridad se pone en la
posici
on 4 y completa un n
umero par de unos en las posiciones 4, 5, 6 y 7.
Al momento de recibir una palabra de siete bits debemos obtener su sndrome: hay
tres maneras de hacerlo, por supuesto las tres son equivalentes solo que dos de ellas son
atajos para hacerlo f
acil. Formalmente hablando hay que multiplicar la palabra recibida
(escrita como vector columna, el bit mas significativo arriba) por la matriz siguiente,
conocida como H2 (3) (matriz de Hamming binaria de tres renglones):
0 0 0 1 1 1 1
0 1 1 0 0 1 1
(4.14)
1 0 1 0 1 0 1
Esto es equivalente a calcular el bit de paridad que debera estar en la posici
on 1
(que corresponde a las posiciones 1, 3, 5 y 7), si es igual al que viene en la palabra
recibida entonces poner un cero como bit menos significativo del sndrome, si no poner
1. Calcular el de la posicion 2 (posiciones 2, 3, 6 y 7), si coincide con el que viene en
la palabra recibida poner cero en el segundo bit del sndrome, si no poner 1. Calcular
el u
ltimo (posiciones 4, 5, 6 y 7), y si coincide con el bit 4 de la palabra recibida poner
0 de bit m
as significativo del sndrome, de otro modo poner 1. Esto es equivalente a
calcular el xor de la terna de paridad calculada sobre la palabra recibida y la terna de
paridad recibida. Lo que podemos abreviar usando el tercer metodo para calcular el
sndrome.
Desde un punto de vista practico, orientado a la implementacion del c
odigo en
95
4.7 Esferas y c
odigos perfectos
EJEMPLO 4.8
Supongamos que deseamos enviar 1101. Entonces la palabra enviada es: 1010101.
Supongamos que se estropea el bit 6 de la palabra, es decir, se recibe la cadena 1010111.
Por lo que el sndrome es:
1
0
1
0 0 0 1 1 1 1
0 1 1 0 0 1 1 0 = (110)
(4.15)
1
1 0 1 0 1 0 1
1
1
lo que por cierto es un seis escrito en binario. Para corregir el bit erroneo podemos
hacer una m
ascara llena de ceros, salvo el bit de ndice especificado por el sndrome, es
decir, el sexto bit: 0000010 y hacer un xor de esto con la palabra recibida, el xor tiene
la cualidad de que si se usa una mascara con unos en ciertas posiciones como operando,
entonces el resultado del xor es el otro operando con los bits que tiene prendidos la
m
ascara negados. As en este caso: 1010111 0000010 = 1010101 que es justo lo que
nos enviaron.
96
Definici
on 4.11 Sea x una cadena en Znr y sea % 0. La esfera Srn (x, %) con centro en x y
radio % es el conjunto de todas las cadenas en Znr cuya distancia a x es, a lo m
as, %.
Srn (x, %) = {y Znr | d(x, y) %}
EJEMPLO 4.9
En Z32 la esfera Srn (101, 2) = {101, 001, 111, 100, 011, 000, 110}
Definici
on 4.12 El volumen de una esfera Srn (x, %) es el numero de cadenas en ella.
Por supuesto el volumen de una esfera de un cierto radio no depende de la cadena
en la que la esfera est
a centrada, solo del radio, la longitud de las cadenas y el alfabeto.
El n
umero de cadenas r-arias de longitud n que distan k unidades de otra es:
n
(r 1)k
k
As que el volumen de una esfera de radio % es:
Vrn (%)
%
X
n
=
(r 1)k
k
k=0
en Zn2
V2n (%)
%
X
n
=
k
k=0
4.7 Esferas y c
odigos perfectos
97
recibida luego de haber sido alterada por el canal, el resultado es una palabra diferente
de aquella que fue enviada, si ocurrieron k errores durante la transmision la palabra
recibida estar
a a una distancia k de la palabra de codigo enviada, si k es menor que
nuestro famoso n
umero v = b d1
o un n
umero de errores que es
2 c significa que ocurri
posible corregir, la palabra recibida esta en una esfera de radio menor a v, que como
veremos tiene nombre especial.
Definici
on 4.13 Sea C un (n, M, d)-codigo r-ario. El radio de empaque de C, que denotaremos
con Pr(C) es el radio mas grande posible para un conjunto de esferas disjuntas centradas,
dada una, en una palabra de codigo. El conjunto de esferas Srn (ci , Pr(C)) (ci C), es
llamado las esferas de empaque para C.
Por supuesto el valor del radio de empaque depende de la distancia mnima del
c
odigo. Necesitamos encontrar el radio mas grande posible tal que ninguna esfera de
ese radio, Pr(C), se intersecte con otra. Habra en el codigo dos palabras cuya distancia
es la mnima de las distancias entre las palabras del codigo, cada una de ellas tendr
a
a su alrededor una esfera de radio Pr(C) y deseamos que las esferas no se intersecten,
as que el radio de empaque tiene que ser menor a la mitad de la distancia entre esas
dos palabras. Si fuera exactamente la mitad o mas, las esferas alrededor de la pareja de
palabras de c
odigo mas cercanas, se intersectaran.
98
cada pareja. Cuando esto no ocurre, cuando el radio de empaque logra que las esferas
contengan a todo Znr , se dice que el codigo es perfecto: el radio de empaque es impar y
la distancia entre parejas de palabras de codigo es la misma.
Definici
on 4.14 Un (n, M, d)-codigo r-ario C = {c1 , . . . , cM } con alfabeto Zr es perfecto si
las esferas de empaque son una particion de Znr .
Si las esferas de empaque son una particion entonces el volumen sumado de ellas
debe ser la cardinalidad total de Znr .
Vrn
d1
2
= rn
o lo que es lo mismo:
d1
bX
c
2
n
(r 1)k = rn
M
k
k=0
EJEMPLO 4.10
Sea C = {00000, 11111} a un codigo como este se le denomina c
odigo de repetici
on en
este caso de longitud 5. En un alfabeto r-ario un codigo de repeticion de longitud n,
denotado Repr (n), consta de r palabras, cada una con n repeticiones de cada uno de
los smbolos del alfabeto. En nuestro caso C = Rep2 (5). En nuestro caso d(C) = 5, (en
general en un c
odigo de repeticion la distancia mnima es la longitud de las palabras).
La suma de las cadenas dentro de las esferas de empaque de radio b 51
2 c = 2 es:
2
X
5
2
= 32
k
k=0
que es justamente el n
umero total de cadenas binarias de longitud 5, por lo tanto el
c
odigo de repetici
on Rep2 (5) es perfecto. En general el codigo de repeticion es perfecto
cuando r = 2 y n = 2m + 1.
99
4.8 Equivalencia de c
odigos
EJEMPLO 4.11
Sea C = {c1 = 00100, c2 = 00011, c3 = 11111, c4 = 11000}, C1 es un (5, 4, 3)-c
odigo
binario.
Tambien D = {d1 = 00000, d2 = 01101, d3 = 10110, d4 = 11011} es un (5, 4, 3)c
odigo binario.
As que, con lo que sabemos hasta ahora, en cualquier aplicacion en la que es u
til C
es igualmente u
til D. Tienen la misma capacidad de deteccion y correccion de errores,
son equivalentes.
Formalmente hablando la nocion de equivalencia de codigos es un poco m
as estricta,
no es cierto que todos los (n, M, d)-codigos sean equivalentes. En particular nuestros
c
odigos C y D realmente lo son.
Definici
on 4.15 Sean M y M0 las matrices cuyos renglones son las palabras de los codigos
C y C 0 respectivamente. Se dice que C es equivalente a C 0 si es posible obtener M0 a
partir de M haciendo las siguientes operaciones:
1. Cambiar el orden de las columnas de M.
2. Dada una columna de M y una permutacion de los smbolos en el alfabeto A del
c
odigo (es decir, una funcion biyectiva de A en A), aplicar la permutaci
on a los
elementos de la columna.
3. Intercambiar renglones de M.
EJEMPLO 4.12
Retomemos nuestro ejemplo anterior. Si
obtenemos:
0
0
C=
1
1
1
0
1
0
0
1
1
0
0
1
1
0
100
0 0 1 0 0
0 0 0 1 1
1 1 0 0 0
1 1 1 1 1
Ahora cambiamos la columna 2 por la
0 0
0 1
1 0
1 1
Ahora, aplicando la operacion que
bits de la columna 3.
0
0
1
1
4:
1
0
0
1
0
0
1
1
0
1
0
1
0 0 0 0
1 1 0 1
0 1 1 0
1 0 1 1
101
Por una parte entonces queremos tener muchas palabras de codigo, tantas como sea
posible, mientras m
as nos acerquemos a An mejor. Pero por otra parte deseamos tener
una gran distancia mnima, conforme mas nos acerquemos a An la distancia mnima se
reduce. As que hay un compromiso entre las dos cualidades deseables en un c
odigo:
eficiencia y robustez.
Para medir ambas cosas de manera relativa a la longitud de las palabras necesitamos
un par de definiciones:
Definici
on 4.16 La tasa de transmision de un (n, M )-codigo C, r-ario es:
R(C) =
logr M
1
n
N
otese que logr M nos dice que tantos smbolos, que longitud de palabra, es realmente necesaria para expresar M cosas en base r y n es la longitud de palabra que
realmente tenemos.
Definici
on 4.17 La tasa de correccion de error de un (n, M, d)-codigo C, es:
(C) =
b d1
2 c
n
N
umero de errores que pueden corregirse en cada palabra entre el tama
no total de
la palabra.
EJEMPLO 4.13
Recordemos nuestros codigos de repeticion, aquellos que solo tienen dos palabras una
hecha puramente de 0 y otra de 1. El codigo binario de repeticion de longitud n, Rep2 (n)
tiene las siguientes caractersticas:
R(Rep2 (n)) =
1
n
u
1
=
n
2+
1
u
cuando n crece, u tambien lo hace y (Rep2 (n)) tiende a 1/2. Es decir, en el lmite es
capaz de corregir tantos errores como la mitad de la longitud de palabra.
102
que podemos tener? n y d son los valores que determinan la eficiencia y la robustez de
un c
odigo as que esos son los valores que le interesaran a cualquiera que dise
nara un
c
odigo.
Lo que deseamos encontrar es:
Ar (n, d) = max{M | existe un (n, M, d) c
odigo r ario}
Este es uno de los problemas mas importantes en teora de codigos y por supuesto es
tema de investigaci
on permanente. Hasta ahora se conocen solo unos pocos resultados,
(vease por ejemplo [10]):
A2 (4, 3) = 2
o
A2 (5, 3) = 4
Algunos otros resultados evidentes:
Ar (n, d) rn
Ar (n, 1) = rn
Ar (n, n) r
103
De lo que estamos hablando aqu es, por una parte, de la ya mencionada tasa de
transmisi
on de un codigo. Si esta es suficientemente baja entonces nuestro c
odigo es
u
til. Por otra parte estamos hablando de que tan ruidoso es el canal. Para continuar
debemos definir la informacion mutua entre dos smbolos.
Definici
on 4.18 La informacion mutua de los smbolos ai y bj , I(ai , bj ) es:
I(ai , bj ) = log2
1
p(ai )
log2
1
p(ai | bj )
Hay que notar que I(ai , bj ) es tanto mas grande cuanto mas peque
no sea log2 p(ai1|bj ) ,
es decir cuanto m
as grande sea p(ai | bj ), es decir, mientras mas frecuente sea la ocurrencia de ai luego de que ha ocurrido bj , o sea, mientras mas ligados esten ai y bj . Si
casi siempre que ocurre bj ocurre ai , entonces p(ai | bj ) es grande y entonces cuando
vemos que ha ocurrido bj sabemos que es muy probable que haya ocurrido ai . Otra
manera de verlo es: la informacion mutua de ai y bj es el n
umero de preguntas que hay
que hacer, a partir de nada, para deducir ai menos el n
umero de preguntas que hay que
hacer para deducir ai si ya sabemos que ha ocurrido bj . Si nos fijaramos en el
arbol de
decisi
on para determinar ai , hay un cierto n
umero de aristas que recorrer si partimos
de la raz, pero si ya sabemos que ha ocurrido bj , si ya tenemos algo de informaci
on
previa, probablemente ya llevemos algo del recorrido hecho y estemos parados en alg
un
nodo cercano al asociado a ai , el camino que resta, desde donde estemos hasta ese nodo
es la informaci
on adicional que necesitamos para determinar ai a partir de bj , mientras
m
as peque
no sea ese camino adicional significa que ai y bj estan mas ligadas, bj nos da
mucha informaci
on acerca de ai .
Si nos fij
aramos ahora en la informacion de cada posible cadena en n (donde
es el alfabeto), con base en la de sus smbolos constitutivos y luego nos fij
aramos en el
promedio de la informacion conjunta de dos cadenas cualesquiera, una de ellas en un
c
odigo y la otra en todo An podemos pensar en:
I(A, B) = H(A) H(A | B)
donde A est
a en el codigo y B puede o no estarlo.
Imaginemos ahora que B en la expresion anterior es una palabra recibida, est
a en
n
, y A es una palabra del codigo. Si el canal es casi completamente confiable, sin
ruido, entonces las probabilidades condicionales son casi cero y por tanto H(A | B) es
casi cero y entonces I(A, B) es casi H(A) la entropa de la fuente original que produce
los datos que entran al canal. Si en cambio el canal no es confiable H(A | B) crece y
I(A, B) disminuye. I(A, B) es entonces una manera de cuantificar que tan confiable es
un canal, que tanto trasmite ntegramente la informacion que entra en el. A esto se le
104
Definici
on 4.19 La capacidad de un canal C es:
Cap(C) =
max
distrib. de entrada
I(A, B)
Teorema 4.11 (De la codificacion ruidosa para un canal simetrico binario) Para un canal
simetrico binario con probabilidad de error p y capacidad Cap(p). Si R < Cap(p),
entonces para toda > 0 existen n suficientemente grande y un (n, M )-codigo C tal que
la tasa de transmisi
on de C es, al menos, R y P (error de decodif icaci
on) < .
105
4.11 C
odigos de Golay: idea e implementacion
. 1 1 1 1
1 1 1 . 1
1 1 . 1 1
1 . 1 1 1
1 1 1 1 .
1 1 1 . .
A=
1 1 . . .
1 . . . 1
1 . . 1 .
1 . 1 . 1
1 1 . 1 1
1 . 1 1 .
1
1
1
.
.
.
1
.
1
1
.
1
1
1
.
.
.
1
.
1
1
.
1
1
1
.
.
.
1
.
1
1
.
1
1
1
1
.
.
1
.
1
1
.
1
1
1
.
1
.
1
.
1
1
.
1
1
1
.
.
1
1
.
1
1
.
1
1
1
.
.
.
1
.
1
1
.
1
1
1
.
.
.
1
(4.16)
Si con I12 denotamos la matriz identidad de orden 12 entonces a la matriz que resulta
de colocar unidas la identidad de orden 12 y la matriz 4.16 le llamaremos G24 = (I12 |
A), esta es la matriz de Golay de 24 columnas y 12 renglones.
Hay que notar que la matriz A es simetrica (es igual a su transpuesta) y tambien la
identidad lo es. As que si en vez de poner la identidad a la izquierda y A a la derecha
pusieramos la identidad arriba y la matriz A abajo obtendramos Gt24 , la transpuesta
de G24 .
Si multiplic
aramos un vector x de 12 entradas binario, dispuesto como un rengl
on,
t
por G24 obtendramos un vector columna c de 24 entradas tambien binario. Esto es lo
que hay que hacer para obtener el codigo de Golay G24 de x. Es decir, el c
odigo de x es
el producto c = Gt24 x. As que tomamos 12 bits de datos, los codificamos en 24 bits y
los enviamos.
Codificar es f
acil, pero decodificar ya no lo es tanto. El codigo de Golay que estamos revisando tiene distancia mnima 8, por lo que puede corregir hasta 3 errores. El
procedimiento en general es el siguiente:
1. Determinar, a partir de la palabra recibida d, de 24 bits, la palabra que se debi
o
haber recibido c (o mejor dicho, la que consideremos que es mas probable que se
nos haya enviado), tambien de 24 bits.
2. Buscar en una lista la palabra c para obtener los 12 bits de datos reales.
Por supuesto lo difcil es hacer lo primero y para hacerlo necesitamos calcular el
patr
on probable de error. Es decir, una palabra e de 24 bits de longitud, con unos en
las posiciones de error probables y cero en las correctas, de tal forma que e d = c.
Para determinar el patron de error se hace lo siguiente:
1. Se calcula el sndrome s = G24 d
2. Si w(s) 3 (el n
umero de unos en el sndrome es, a lo mas, tres), entonces el
patr
on de error es s desplazado 12 bits a la izquierda e = s << 12.
106
3. Si w(s) > 3 entonces buscamos un ndice i {0, . . . 11} tal que la columna (o
rengl
on, al cabo es simetrica) i-esima de la matriz A difiera de s en, a lo m
as,
2. Si existe dicha columna el patron de error es e = ((s A[i]) << 12) + I12 [i],
donde + denota el or bit a bit.
4. Si no hubo tal columna obtenemos s1 = As
5. S w(s1 ) 3 entonces e = s1
6. Si w(s1 ) > 3 entonces buscamos un ndice i {0, . . . 11} tal que la columna (o
rengl
on) i-esima de la matriz A difiera de s1 en, a lo mas, 2. Si existe dicha
columna el patr
on de error es e = (s1 A[i]) + (I12 [i] << 12), donde + denota el
or bit a bit.
7. Si esto no ocurre estamos perdidos, ocurrieron muchos errores.
+Ejercicios
4.1 Que se debera hacer con un canal simetrico binario cuya probabilidad de error
es mayor que 0.5?
4.2 Sea C = {000, 001, 111} un codigo cuyas palabras son enviadas a traves de un
canal simetrico binario con probabilidad de crossover p = 0.01. Usando la definici
on de
regla de decisi
on de m
axima verosimilitud (la que maximiza las forward probabilities),
decodifique 010.1
4.3 Retomando el ejercicio anterior. Si P (x) = 1/3 es la probabilidad de que una
palabra x cualquiera del conjunto C sea enviada a traves del canal por un emisor, c
omo
decodificara un observador ideal la palabra 010?, que condicion se debe cumplir para
que un decodificador de maxima verosimilitud coincida con un observador ideal?
4.4
Sea C = {001, 011} un codigo cuyas palabras viajan por un canal binario tal que:
EJERCICIOS
107
0 0
0 1
M1 =
1 1
0 1
M2 = 1 0
1 0
1 1
1 0
0 0
0 1
0 1
1 0
4.9 Hemos presentado el cdigo de Golay de 24 bits. Existen otros codigos de Golay, en
particular un (11, 64, 5)-codigo ternario y un (23, 4096, 7)-codigo binario. Demuestre que
cualquier (23, 4096, 7)-codigo binario y cualquier (11, 64, 5)-codigo ternario son perfectos.
4.10 En 1694 Isaac Newton y David Gregory discutan acerca de un problema relacionado con nuestras esferas de empaque. Se preguntaban cual sera el maximo n
umero
de esferas s
olidas indeformables e indenticas que pueden ponerse alrededor de una de
ellas. Newton pensaba que eran 12, Gregory que deban ser 13. El problema es referido
frecuentemente como el problema del n
umero de esferas besadoras (en ingles se oye un
poco menos ridculo: The kissing number problem) o el problema de las 13 esferas. En
una dimensi
on la respuesta es, claramente, 2, en 3 dimensiones se sabe que la respuesta
es la de Newton (12), en 4 es 24, se sabe tambien que en 8 dimensiones la respuesta2
2
J.H. Conway y N.J.A. Sloane, Sphere Packings, Lattices and Groups, 3a. ed., Springer, 1998. O
bien: http://en.wikipedia.org/wiki/Kissing number
108
C
odigos lineales
Definici
on 5.1 Un codigo C Znp (con p primo) es un codigo lineal si C es un subespacio
vectorial de Znp . Si C tiene dimension k y distancia mnima d se dice que es un [n, k, d]c
odigo.
Por supuesto esta definicion implica que Znp es un espacio vectorial, los escalares que
estaremos usando son elementos de Zp y las operaciones (suma y producto) se realizan
tambien sobre Zp . Un espacio vectorial tiene definidas operaciones de suma y producto
por escalares, existe el neutro aditivo (vector cero, que denotamos 0) y el inverso aditivo
de cualquier elemento, el producto por escalar es asociativo y distribuye a la suma. El
hecho de que un c
odigo sea un subespacio vectorial significa que es, por s mismo, un
espacio vectorial, lo que significa que debe contener al vector cero.
Hay que notar que en la notacion para codigos lineales no se pone la cardinalidad
del c
odigo, s
olo su dimension, es decir, el n
umero mnimo de elementos en una base del
109
110
Codigos lineales
subespacio vectorial que constituye el codigo. Pero evidentemente estas dos cantidades
est
an relacionadas.
Si se tienen k vectores en la base de un codigo, {x1 , x2 , . . . , xk }, cualquier otra
palabra del c
odigo x debe ser expresable como combinacion lineal de los vectores de la
base, es decir, deben existir 1 , 2 , . . . , k Zp tales que:
x = 1 x1 + 2 x2 + . . . + k x k
como cada i est
a en Zp , hay p posibles valores para elegirla, as que en total hay
k
M = p palabras de c
odigo.
Hemos demostrado el siguiente teorema:
EJEMPLO 5.1
C1 = {0000, 1011, 0110, 1101} en Z42 es un codigo lineal y una base para el es B =
{1011, 0110} as que es un [4, 2]-codigo y un (4, 4)-codigo.
Para determinar la distancia mnima de un codigo arbitrario hay que calcular la distancia entre cualesquiera dos palabras de el y seleccionar la mnima de estas distancias,
es decir, hay que calcular:
M
2
distancias. En un c
odigo lineal esta labor es mas sencilla, basta con contar el n
umero
de unos (el peso), de la palabra distinta de la palabra (vector) cero, que menos unos
tenga y ese n
umero, llamado el peso del codigo, es la distancia mnima del mismo. S
olo
hay que calcular M pesos.
Definici
on 5.2 El peso de un codigo C, denotado w(C), es el mnimo peso de las palabras
distintas de cero en C.
111
de cero en las que difieren. As que c d es una palabra del codigo y su peso es
w(c d) = d(c, d), por lo tanto:
d(C) = d(c, d) = w(c d) w(C)
Por otra parte como w(C) es el mnimo peso de una palabra en C, debe existir una
palabra e en C tal que w(e) = w(C), entonces:
w(C) = w(e) = w(e 0) = d(e, 0) d(C)
dado que la palabra 0 tambien esta en el codigo y por tanto e 0 tambien.
Definici
on 5.3 Sea C un codigo lineal con base B = {b1 , b2 , . . . , bk } si bi = bi1 bi2 . . . bin
denota la i-esima palabra de la base, entonces la
b11 b12 . . .
b21 b22 . . .
..
..
.
. ...
matriz de k n:
b1n
b2n
..
.
Teorema 5.3 Sea G una matriz con elementos en Zp . G es una matriz generadora de un
c
odigo lineal si y s
olo si las cadenas en los renglones de G vistas como vectores son
linealmente independientes.
EJEMPLO 5.2
112
Codigos lineales
0 1 2 1
2 2 1 0
son linealmente independientes sobre Z3 , as que forman una base para un [4, 2]-c
odigo
lineal ternario C. De hecho:
C = {(0121) + (2210) | , Z3 }
EJEMPLO 5.3
Sea C = h1101, 01101, 10100i. Los vectores dentro de los parentesis triangulares no son
linealmente independientes, por ejemplo:
10100 = 1 11001 + 1 01101
as que no son una base. En cambio el conjunto B = {11001, 01101} s lo es, as que:
C = h1101, 01101, 10100i = h11001, 01101i
De ver la cardinalidad de B podemos decir que C es un codigo bidimensional, es
decir, es un [5, 2]-c
odigo.
Su matriz generadora esta formada, como ya lo hemos dicho, por las palabras en
una base de C (como las de B), por ejemplo:
1 1 0 0 1
0 1 1 0 1
De hecho: C = {00000, 11001, 01101, 10100}
Algo importante que hay que notar porque lo usaremos con frecuencia, es el hecho
de que un c
odigo lineal C esta constituido por todas las combinaciones lineales de
elementos en la base de C (que por cierto, como lo hemos dado a entender, no es u
nica).
Si sumamos dos elementos cualesquiera de C el resultado estara en C porque la suma
tambien puede escribirse como combinacion lineal de los elementos de la base. Si en
cambio, sumamos dos elementos que no estan en el codigo, o uno que s esta y otro que
no, la suma tiene dos opciones:
113
5.3 Correcci
on de errores
1. No est
a en el codigo.
2. S est
a en el c
odigo y es la palabra 0.
Es decir, la u
nica posibilidad de que la suma de dos elementos este en el c
odigo, dado
que al menos uno de los sumandos no esta en el, es que la suma sea cero.
EJEMPLO 5.4
Sea C = {0000, 1011, 0110, 1101}, entonces el complemento de C es el conjunto:
C = Z42 \ C = {1000, 0100, 0010, 0001, 0011, 0101, 1001, 1010, 1100, 1110, 0111, 1111}
N
otese que hemos puesto los elementos ordenados por peso.
Construyamos ahora una tabla. En el primer renglon de la tabla ponemos a todos los
elementos de C y luego, procedemos a poner los elementos de C colocando el elemento
de menor peso que podamos encontrar y que no haya sido incluido ya, al inicio de cada
rengl
on. El resto del renglon lo determinamos sumando el elemento que encabeza la
columna con el que encabeza el renglon.
0000
1000
0100
0001
1011
0011
1111
1010
0110
1110
0010
0111
1101
0101
1001
1100
En la tabla hay 16 elementos, todos distintos, as que tenemos a todo Z42 . Adem
as
si elegimos a cualquier elemento de la tabla, el vecino mas cercano a el que est
a en el
c
odigo es el que encabeza la columna donde aparece.
114
Codigos lineales
Acr
onimo de Complete Ordered Set un conjunto completamente ordenado: dados dos elementos
cualesquiera podemos decir si uno es mayor o igual que el otro.
115
5.3 Correcci
on de errores
2. Como hay pk columnas y en total deben ser pn entradas, debe haber pnk renglones.
3. Como est
an todos los elementos de Znp y solo aparecen una vez entonces el conjunto
de renglones constituye una particion de Znp , por supuesto el conjunto de columnas
tambien. Cada elemento en una columna esta en la misma clase de equivalencia
del encabezado de la columna, equivalentemente cada elemento en un rengl
on est
a
en la misma clase de equivalencia del lder del coset.
Teorema 5.4 Dos palabras x, y Znp estan en el mismo coset si y solo si x y es una palabra
de c
odigo.
Demostraci
on:
Sean x y y dos palabras de Znp \ C en el mismo coset. Es decir, x = fi + cj y
y = fi + cr , n
otese que fi , el lder de coset, es com
un a ambas expresiones.
Entonces:
x y = cj cr C
Sean x, y Znp \ C tales que x y C. x y y deben estar en el arreglo est
andar, as
que las podemos escribir como x = fi + cj y y = fr + cs . Entonces sabemos que:
(fi + cj ) (fr + cs ) = c C
de donde:
fi + cj fr cs = c C
fi fr = c cj + cs
el lado derecho de la igualdad esta en C porque es resultado de operar con elementos de C. As que fi fr esta en C. Pero ning
un lder de coset est
a en C por
definici
on, as que estas f s no estan en C. La u
nica manera en que puede estar
en C una suma (resta) de elementos que no estan en C es que la suma sea cero,
as que:
fi fr = 0
de donde
fi = fr
por lo que x y y tienen entonces el mismo lder de coset y por tanto est
an en el
mismo coset.
116
Codigos lineales
(5.1)
(5.2)
Teorema 5.5 Sea C un [n, k]-codigo y sean f1 , f2 , . . . , fq los lderes de coset del arreglo estandar
de C. Si se transmite a traves de un canal simetrico binario con probabilidad de error
p entonces la probabilidad de que una palabra recibida sea decodificada correctamente
es:
q
X
P (decodif icar correctamente) =
pw(fi ) (1 p)nw(fi )
(5.3)
i=0
Si contamos el n
umero de lderes de coset de peso i y lo llamamos wi entonces
podemos reescribir 5.3 como:
P (decodif icar correctamente) =
n
X
i=0
wi pi (1 p)ni
117
EJEMPLO 5.5
Sea C = {0000, 1011, 0110, 1101}, el mismo codigo de nuestro ejemplo anterior. El
arreglo est
andar de este codigo es:
0000
1000
0100
0001
1011
0011
1111
1010
0110
1110
0010
0111
1101
0101
1001
1100
hay una sola palabra con peso cero, tres con peso uno y cero con peso cuatro entre los
lderes de coset. As que la suma 5.3 es:
P (decodif icar correctamente) = 1(1 p)4 + 3p(1 p)3 = (1 p)3 (1 + 2p)
si p = 0.01
P (decodif icar correctamente) = 0.9897
lo que resulta mayor que la probabilidad de decodificar correctamente si solo usamos los
dos bits indispensables para decir cuatro cosas diferentes. En ese caso la probabilidad
de decodificar correctamente es la de que no se cometa ning
un error, es decir: (1 p)2 =
0.9801.
n
i
El n
umero de lderes de coset de peso mayor a v es cero, as que en sntesis, para un
c
odigo perfecto y un canal simetrico binario con probabilidad de crossover p:
d1
bX
c
2
n
P (decodif icar correctamente) =
pi (1 p)ni
i
i=0
118
Codigos lineales
(5.4)
donde a1 = a11 a12 . . . a1n , a2 = a21 a22 . . . a2n , ..., as = as1 as2 . . . asn son los vectores
de A.
A las ecuaciones en 5.4 se les denomina las ecuaciones de verificaci
on de paridad de
A . Si pensamos en base 2 el nombre es evidente, si hay un n
umero par de unos en las
posiciones en las que un vector ai coincide con x el resultado de la suma es 0.
Podemos reescribir el sistema de ecuaciones 5.4 en notacion matricial:
(5.5)
..
..
..
.. .. = ..
.
.
.
.
. .
as1 as2 . . . asn
xn
Teorema 5.7 Sea A un codigo y x = x1 x2 . . . xn una cadena en Znp . x esta en A si y solo si:
Ax = 0
donde A es la matriz de verificacion de paridad para A .
119
EJEMPLO 5.6
Sean a1 = 1110 y a2 = 1001 las dos cadenas de un codigo. Las ecuaciones de verificaci
on
de paridad para el codigo dual son:
x1 + x2 + x3 +
=0
x1 +
x4 = 0
(5.6)
Hay que notar que en la matriz de verificacion de paridad de un codigo no necesariamente sus renglones son linealmente independientes, pero puede ocurrir.
Algunas cosas interesantes:
Si C y D son dos codigos y C D entonces D C
Si G es la matriz generadora de un [n, k]-codigo C, entonces tambien es la matriz
de verificaci
on de paridad de C .
Si C es un [n, k]-codigo C es un [n, n k]-codigo (la dimension del dual es n k).
Si C es un c
odigo lineal C = C.
EJEMPLO 5.7
C = {0000, 1011, 0110, 1101} subespacio de Z42 , base = {1011, 0110}, matriz generadora:
1 0 1 1
G=
0 1 1 0
120
Codigos lineales
Entonces C est
a determinado por las soluciones al sistema:
x1 +
x3 + x4 = 0
x2 + x3
=0
Definici
on 5.4 Sea P una matriz de verificacion de paridad de un codigo C Znp . El sndrome
S(x) de una cadena x Znp , es el producto Px.
Esta definici
on nos hace pensar en que la matriz que usamos en el captulo anterior
al presentar el c
odigo de Hamming, la matriz H2 (3), es la de verificacion de paridad
de el c
odigo de Hamming de siete bits, algo que debe parecernos claro, dado que nos
permite calcular la paridad de tres diferentes subconjuntos de los siete bits de la palabra
recibida.
EJEMPLO 5.8
121
5.6 Decodificaci
on de sndrome
(5.7)
(5.8)
0
1 1 1 0
1 = 0
S(x) = Px =
1
1 0 0 1 1
1
El sndrome es la cadena 01, notese que la palabra 0111 no esta en el c
odigo.
Si en cambio calculamos el sndrome de la palabra 1011 que s esta en el c
odigo:
1
1 1 1 0
0 = 0
S(x) = Px =
0
1 0 0 1 1
1
el resultado es la palabra 00.
122
Codigos lineales
Teorema 5.8 Sea C un codigo lineal. Dos cadenas x y y estan en el mismo coset si y solo si
tienen el mismo sndrome.
Demostraci
on:
Sea C un c
odigo con arreglo estandar:
0
c2
...
cM
f2 f2 + c2 . . . f2 + cM
..
..
..
.
.
.
fq fq + c2 . . . fq + cM
(5.9)
(5.10)
123
5.6 Decodificaci
on de sndrome
Ah! algo cuyo sndrome es cero, eso significa que el algo esta en el codigo, es decir:
fi fj C.
Ahora tenemos una suma de dos elementos que no estan en el codigo (recordemos
que las f son lderes de coset y no estan en el codigo) y cuya suma s esta, como habamos
dicho la u
nica posibilidad de que esto ocurra es que fi fj = 0, de donde finalmente:
fi = fj
lo que significa que x y y estan en el mismo coset.
As que dos elementos con el mismo sndrome estan en el mismo coset del arreglo
est
andar, esto significa dos cosas u
tiles:
Tienen el mismo lder de coset y por tanto el mismo patron de error.
Cada coset esta caracterizado por el sndrome de sus elementos ya que es el mismo
para todos. As que no es necesario guardar todo el arreglo estandar, basta guardar
la lista de los sndromes y los lderes de coset.
Excelente! Ahora para decodificar tendramos que hacer lo siguiente:
1. En vez de almacenar todo el arreglo estandar del codigo C que se usar
a, simplemente se guarda una tabla con dos columnas: los lderes de coset y los valores de
sndrome de cada coset.
2. Dada una cadena x recibida, calculamos S(x).
3. Buscamos S(x) en la tabla hasta encontrar un lder de coset fi tal que S(fi ) = S(x).
4. fi es el patr
on de error, as que decodificamos a vecino mas cercano entregando
c = x fi .
EJEMPLO 5.9
En nuestro ejemplo recurrente C = {0000, 1011, 0110, 1101}, el arreglo est
andar es:
0000
1000
0100
0001
de donde obtendramos la tabla:
1011
0011
1111
1010
0110
1110
0010
0111
1101
0101
1001
1100
124
Codigos lineales
Lder
0000
1000
0100
0001
Sndrome
00
11
10
01
Hay una caracterstica curiosa mas en la matriz de verificacion de paridad que nos
ser
au
til. Resulta que la distancia mnima del codigo es justamente el n
umero mnimo
de columnas de la matriz de paridad linealmente dependientes. Es decir: cualquier
subconjunto de columnas con cardinalidad estrictamente menor a la distancia mnima
del c
odigo es un conjunto linealmente independiente.
p11 p12 . . . p1n
c1
p11 c1 + p12 c2 + . . . + p1n cn
p21 p22 . . . p2n c2 p21 c1 + p22 c2 + . . . + p2n cn
Pc = .
..
.. .. =
..
..
..
.
.
.
. .
.
.
.
pq1 pq2 . . . pqn
cn
(5.11)
(5.12)
c1
c2
P . = 0
(5.13)
.
.
cn
As que w(c) = r w(C) = d.
Por otra parte si c = c1 c2 . . . cn C es de peso mnimo entonces d = w(c) = w(C).
Dado que c est
a en el codigo y P es la matriz de verificacion de paridad, ocurre 5.13;
5.6 Decodificaci
on de sndrome
125
de donde se deduce que las d columnas que estan multiplicando a los elementos de c
distintos de cero son linealmente dependientes (el producto es cero sn que todos ellos
sean cero) as que r d.
126
Codigos lineales
0 0 0 0 1 1 1 1 1 1 1 1 1
H3 (3) = 0 1 1 1 0 0 0 1 1 1 2 2 2
1 0 1 2 0 1 2 0 1 2 0 1 2
Dados p, la base del codigo y h el n
umero de renglones, podemos determinar n, el
n
umero de columnas, es decir, la longitud de las palabras del codigo.
Supongamos que la posicion mas significativa de una columna es m {1, . . . h} (de
arriba hacia abajo). As que la posicion m de la columna es 1, antes de eso, las primeras
m 1 posiciones son cero, y hacia abajo, las restantes h m posiciones pueden ser
cualesquiera dgitos de Zp . Hay p posibilidades en cada una de esas posiciones, as que
en total hay phm columnas que pueden y deben estar en la matriz de verificaci
on de
paridad. Ahora sumemos sobre todos los posibles valores de m:
n = ph1 + . . . + p1 + p0 =
ph 1
p1
Ahora bien, cu
antas palabras tiene el codigo? La longitud de cada palabra es n,
la que acabamos de calcular, el n
umero de bits de verificacion que se incluyen en una
EJERCICIOS
127
palabra es justamente el n
umero de renglones en la matriz de verificacion de paridad,
nh
h. As que hay en total p
palabras de codigo, esto es un subespacio de dimensi
on
n h. Hemos demostrado el siguiente teorema.
ph 1
p1
Por supuesto cualquier codigo de Hamming puede corregir hasta un error exactamente, como habamos dicho. En el caso binario los parametros se convierten en: n = 2h 1,
k = n h y d = 3.
Por cierto en el caso general el sndrome de una palabra erronea en un c
odigo de
Hamming en base p 6= 2 no es el ndice del smbolo erroneo, eso solo funciona en el
caso binario, pero s proporciona un m
ultiplo de la posicion, solo hay que buscar una
columna de la matriz de verificacion tal que el sndrome sea un m
ultiplo de ella y el
ndice de esa columna s es la posicion del error.
Los c
odigos de Hamming son perfectos y u
nicos, en el sentido de que cualquier c
odigo
con par
ametros de la forma especificada en el teorema anterior resulta ser equivalente
a un c
odigo de Hamming.
En lo que respecta al codigo de Golay presentado en el captulo anterior, G24 hay
, verificar esto implica mucho
que a
nadir que es un codigo auto-dual, es decir, G24 = G24
trabajo porque hay que calcular el producto interior de cualesquiera dos renglones dis . Luego, dado que la dimensi
tintos de G24 . Con lo que se concluye que G24 G24
on de
ambos subespacios debe ser 12, entonces deben ser el mismo subespacio. Adem
as como
la matriz G24 es la de verificacion de paridad de G24 y este es igual a su dual entonces
tambien su generadora. G24 no es un codigo perfecto, pero su hermano cercano con
palabras de 23 bits G23 s lo es.
Cualquier rengl
on de la matriz G24 tiene un peso divisible por 4, de hecho cualquier
palabra de G24 tiene la misma propiedad. G24 es un [24, 12, 8]-codigo lineal binario. Eso
significa que puede corregir hasta 3 errores.
+Ejercicios
5.1 Sea S Znp . Demuestre que si el vector cero esta contenido en S entonces S es
linealmente dependiente.
5.2
128
Codigos lineales
1. {000, 100, 010, 110, 020, 200, 220, 210, 120} Z33
2. {100, 010, 001, 110, 011, 101, 111} Z32
3. {0000, 1234, 2413, 3142, 4321} Z45
5.3
Es un subespacio vectorial de Z42 el conjunto de todas las cadenas con peso par?
Encuentre todas las palabras del codigo binario generado por la matriz:
0 0 0 1
M=
1 0 0 0
5.8
0 0 1 1
M1 = 0 1 1 0
1 1 0 0
5.9 Encuentre una base para el codigo {0000, 0011, 0110, 1100, 0101, 1111, 1010, 1001}
en Z42 .
5.10 Se dice que la matriz generadora G de un codigo lineal de dimension r en Zn2
est
a en forma can
onica si es de la forma G = [I : A] donde I es la matriz identidad de
r r y A es una matriz arbitraria de r (n r). Encuentra la forma canonica de la
matriz generadora del codigo {00000, 00001, 00110, 00111, 11000, 11001, 11110, 11111}.
5.11 Un metodo para encontrar la matriz de verificacion de paridad P de un c
odigo,
se basa en que al multiplicar la generadora G por la transpuesta de dicha matriz el
EJERCICIOS
129
T
resultado
T es la matriz cero: G P = 0. Si se esta trabajando sobre Z2 , resulta que
P = A : I , donde A es la matriz descrita en el ejercicio previo. Encuentre la matriz
de verificaci
on de paridad del codigo del ejercicio anterior, verifique que al multiplicarla
por la generadora el resultado es cero.
C
odigos cclicos
Definici
on 6.1 Dada una cadena x = x1 x2 . . . xn1 xn , la rotacion derecha de x, denotada
rod (x), es la cadena xn x1 x2 . . . xn1 . La k-esima rotaci
on derecha de x es la cadena
rod (x, k) = xnk+1 xnk+2 . . . xn x1 . . . xnk . De manera analoga se definen la rotaci
on
izquierda y la k-esima rotaci
on izquierda de la cadena como: roi (x) = x2 x3 . . . xn x1 y
roi (x, k) = xk+1 xk+2 . . . xn1 xn x1 . . . xk .
Es decir, en una rotacion derecha se desplazan todos los smbolos que constituyen
la cadena un lugar a la derecha y el u
ltimo smbolo sale por la derecha y se introduce
por el otro extremo. Con base en esta definicion se puede formular la siguiente.
131
132
Codigos cclicos
Definici
on 6.2 Un codigo lineal C es un codigo cclico si, para toda c C, ocurre que
rod (c) C.
Esto u
ltimo implica que, siempre que una palabra esta en un codigo cclico, tambien lo est
an todas sus rotaciones derechas o, equivalentemente, toda ssus rotaciones
izquierdas.
EJEMPLO 6.1
El c
odigo
C 0 = {00000, 00101, 01010, 10100, 01001, 10010, 01111, 11110, 11101, 11011, 10111}
no es cclico. Lo parece, porque dada cualquier palabra en el, todas sus rotaciones
izquierdas o derechas estan tambien en el. Sin embargo no cumple con el requisito de
ser lineal. La suma de las palabras octava y novena dan como resultado 00011, que no
est
a en C 0 y debera de estar si C 0 fuera lineal. Podemos, claro esta, a
nadir esta palabra
y por tanto todas sus rotaciones. El resultado es:
C = {00000, 00011, 00110, 01100, 11000, 10001,
00101, 01010, 10100, 01001, 10010,
01111, 11110, 11101, 11011, 10111}
que, en efecto es lineal y cclico. Es el codigo de paridad par de longitud 5.
133
Si queremos restringirnos a un grado n fijo entonces los coeficientes que salen por
la izquierda no regresan por la derecha, nos estamos saliendo del conjunto, nuestro
conjunto no es cerrado bajo la multiplicacion.
Para asegurarnos de que la multiplicacion corresponda realmente a una rotaci
on,
lo que significa que no nos salimos del conjunto de polinomios de grado menor a n,
debemos asegurarnos de que los coeficientes que rebasan el borde izquierdo de la palabra
regresen por la derecha. Tenemos entonces que usar operaciones modulares, como las
que mostramos en el primer captulo, de hecho usaremos xn 1 como el tama
no del
m
odulo y llamaremos Rn (Z2 ) al subconjunto de Pn (Z2 ) con las operaciones modulares.
Con esto logramos que nuestro conjunto de polinomios (palabras de codigo), con las
operaciones modulares de producto y suma, se comporte como un anillo y los c
odigos
lineales en el son lo que en algebra se denomina un ideal.
EJEMPLO 6.2
Tomemos los polinomios p14 = x4 + x3 + x2 + 1 y q = x2 en P5 (Z2 ), su producto m
odulo
5
x 1 es:
(x4 + x3 + x2 + 1)(x2 )
= x4 + x2 + x + 1
Hay que recordar que en R5 (Z2 ): x5 = 1. El polinomio p14 corresponde a la decimocuarta palabra del codigo C del ejemplo anterior y su producto por q es la decimosexta,
que justamente es la que le corresponde a p14 rotada dos lugares a la izquierda, tal como
lo indica el grado del monomio q.
EJEMPLO 6.3
Cu
al es el resultado de multiplicar el polinomio g = x + 1 por f12 = x2 + 1, m
odulo
134
Codigos cclicos
N
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Factor
0
1
x
x2
x3
x4
x+1
x2 + x
x3 + x2
x4 + x3
x4 + 1
x2 + 1
x3 + x
x4 + x2
x3 + 1
x4 + x
Producto
0
x+1
x2 + x
x3 + x2
x4 + x3
x4 + 1
x2 + 1
x3 + x
x4 + x2
x3 + 1
x4 + x
3
x + x2 + x + 1
x4 + x3 + x2 + x
x4 + x3 + x2 + 1
x4 + x3 + x + 1
x4 + x2 + x + 1
Palabra
00000
00011
00110
01100
11000
10001
00101
01010
10100
01001
10010
01111
11110
11101
11011
10111
Tabla 6.1: Los elementos del codigo C del ejemplo 6.1 obtenidos a partir de g = x + 1
en P5 (Z2 ).
x5 1? Veamos:
(x + 1)(x2 + 1)
= x3 + x2 + x + 1
g corresponde a la segunda palabra de C, mientras que el producto corresponde a la
decimosegunda. Si esta la multiplicamos por x, lo que equivale entonces a multiplicar
g por x3 + x, obtendramos la decimotercera. Si el factor de g fuera x4 + x2 , o bien
si multiplic
aramos la decimotercera por x nuevamente, obtendramos la decimocuarta.
Realmente podemos obtener todas las palabras de C escogiendo el polinomio factor,
por el que se debe multiplicar a g, como se muestra en la tabla 6.1.
Entonces si multiplicamos a g por cualquier polinomio de grado menor que 5, m
odulo
x5 1 obtenemos siempre un polinomio asociado a una palabra del codigo C!
Definici
on 6.3 Sea C un codigo lineal cclico asociado con un conjunto C Rn (Z2 ). Si g C
es un polinomio tal que, para todo elemento w C existe f Rn (Z2 ) tal que w = f g,
se dice que g es un generador de C y por tanto de C, lo que denotaremos como C = hgi.
135
Teorema 6.1 Sea C 6= {0} un codigo lineal cclico identificado con C Rn (Z2 ). Si g es el
polinomio m
onico y distinto de cero con el menor grado en C, entonces:
1. C = hgi.
2. g es u
nico.
3. g divide al m
odulo, es decir, g | (xn 1).
Demostraci
on:
(1) Como C tiene al menos una palabra distinta de 0, entonces en C hay al menos un
polinomio distinto del polinomio cero. Cada uno de los polinomios de C es m
onico (salvo
el cero) y existe entre ellos uno con el menor grado. Sea g este polinomio y m su grado.
Sea
hgi = {q(x) g(x) | q(x) Rnm (Z2 )}
Por supuesto, como C es lineal y cclico, entonces hgi C. Hay que comprobar que
tambien C hgi.
Sea c(x) C. Usando el algoritmo de la division, existen q(x), r(x) Rn (Z2 ), tales
que
c(x) = q(x) g(x) + r(x)
donde grado (r(x)) < m = grado (g(x)).
De esto se desprende:
r(x) = c(x) q(x) g(x)
En el lado derecho de esta expresion tenemos dos sumandos: c(x), que est
a en C y
al producto q(x) g(x) que esta en hgi y por tanto en C. As que todo el lado derecho
es un elemento de C y por tanto r(x) C. As que r(x) resulta ser un polinomio en C
con grado menor que g(x), lo que contradice que g(x) es el polinomio monico con grado
menor de C, a menos que r(x) = 0.
Por tanto c(x) = q(x) g(x) hgi, como se quera demostrar.
(2) Si hubiera otro polinomio h(x) C monico con el mnimo grado m entonces, por
lo que acabamos de probar, existe q(x) tal que h(x) = q(x) g(x). Pero dado que
m = grado (g(x)) = grado (h(x)) entonces q(x) tiene grado cero, es decir, debe ser
una constante. C
omo tanto h como g son monicos, entonces, de hecho q(x) = 1 por lo
que resulta que h(x) = g(x).
(3) Nuevamente, por el algoritmo de la division, existen q(x) y r(x) tales que:
xn 1 = q(x) g(x) + r(x)
136
Codigos cclicos
donde r(x) es el polinomio cero o bien grado (r(x)) < g(x). Pero en Rn (Z2 ), xn 1 es
de hecho el polinomio cero, as que:
r(x) = q(x) g(x) C
como en C no hay un polinomio distinto de cero de grado menor que g entonces r(x) = 0,
por lo que:
xn 1 = q(x) g(x)
lo que equivale a decir que g | (xn 1).
Esto nos proporciona una inusitada manera de representar a todos los elementos
del c
odigo. Cuando hablamos de codigos lineales nos aprovechamos de su estructura
para representarlos usando solamente los vectores en la base del codigo, de hecho los
escribimos en lo que denominamos la matriz generadora del mismo; ahora poseemos
el mismo poder de expresividad en una sola palabra, la que corresponde al polinomio
generador. Claro, como este polinomio es el monico de menor grado de aquellos que
est
an en el c
odigo tendramos que saber ademas o el tama
no de las palabras del c
odigo,
o equivalentemente, el modulo con el que se trabaja.
Teorema 6.2 Sea C un codigo cclico sobre Rn (Z2 ) con generador g(x) = gk xk + . . . g1 x + g0
de grado k, entonces el conjunto:
B = {g(x) xnk1 , . . . , g(x) x, g(x)}
es una base para C y la matriz
g0 g1
0 g0
0 0
G= .
..
..
.
0 0
0 0
es la matriz generadora de C.
de n columnas y n k renglones:
g2 . . . gk 0
0
0
g1 g2 . . . gk 0
0
g0 g1 g2 . . . gk 0
.. .. .. .. ..
.
.
.
.
.
0 . . . g0 g1 g2 . . .
0 . . . 0 g0 g1 g2
...
...
...
0
0
0
..
.
gk 0
. . . gk
137
Demostraci
on:
Para probar que G es la matriz generadora probaremos primero que sus renglones son
linealmente independientes y luego que cualquier palabra de codigo es una combinaci
on
lineal de ellos.
Sea {a1 , . . . , ank } un conjunto de n k escalares en el campo donde se encuentran
los coeficientes de los polinomios. Sea ri el i-esimo renglon de la matriz G.
La ecuaci
on:
a1 r1 + a2 r2 + . . . + ank rnk = 0
(6.1)
cuyo lado izquierdo es una combinacion lineal de los renglones de G, implica que, considerando la u
ltima columna de G y por tanto la u
ltima entrada del vector resultante
de la combinaci
on lineal:
0 a1 + 0 a2 + . . . + ank gk = 0
(6.2)
Sabemos que gk es distinto de cero (de hecho vale 1) porque g(x) es el polinomio
m
onico de grado menor de C, as que para satisfacer 6.2 se requiere que ank = 0. Lo
que anula todo el u
ltimo factor a la izquierda de la expresion 6.1. De esto, siguiendo
el razonamiento analogo podemos concluir que ank1 = 0 y continuar hasta que,
finalmente, a1 = 0. De modo que la expresion 6.1 implica que todos los escalares deben
ser cero, es decir, el conjunto de reglones de G es linealmente independiente.
Sea c(x) una palabra de codigo en C (aqu abusamos un poco del lenguaje, realmente c(x) es el polinomio asociado a la palabra de codigo). Sabemos que existe alg
un
polinomio p(x) Rn (Z2 ) tal que:
c(x) = p(x) g(x)
(6.3)
(6.4)
138
Codigos cclicos
Teorema 6.3 Si g(x) Rn (Z2 ) es polinomio monico de grado de grado k < n y g(x) | xn 1,
entonces g(x) es el polinomio generador de un codigo cclico C.
Demostraci
on:
Supongamos que g(x) = g0 +g1 x+g2 x2 +. . . gk xk , que en esta expresion gk = 1 (m
onico)
y que existe m(x) Rn (Z2 ) tal que:
xn 1 = g(x) m(x)
(6.5)
claro est
a que grado (m(x)) = n k.
Sea B = {g(x), x g(x), x2 g(x), . . . , xnk1 g(x)}, este es un conjunto linealmente
independiente, as que podemos decir que existe un codigo lineal C = hgi = hBi.
Sea entonces p un polinomio cualquiera en C, es decir, p es una combinaci
on lineal
de elementos de B:
p(x) = p0 g(x) + p1 x g(x) + . . . + pnk1 xnk1 g(x)
Este polinomio tiene la forma:
p(x) = p0 g0 + p0 g1 x + p0 g2 x2 + . . . + p0 gk xk +
p1 g0 x + p1 g1 x2 + p1 g2 x3 + . . . + p1 gk xk+1 +
..
.
pnk1 g0 xnk1 + pnk1 g1 xnk + pnk1 g2 xnk+1 + . . . + pnk1 gk xn1
= p0 g0 + (p0 g1 + p1 g0 )x + (p0 g2 + p1 g1 + p2 g0 )x2 + . . . +
+(pnk2 gk + pnk1 gk1 )xn2 + pnk1 gk xn1
Para demostrar que C es cclico habra que probar que xp(x) esta tambien en C.
Entonces:
xp(x) = p0 xg(x) + p1 x2 g(x) + . . . + pnk2 xnk1 g(x) + pnk1 xnk g(x) (6.6)
= (p0 x + p1 x2 + . . . pnk2 xnk1 + pnk1 xnk ) g(x)
(6.7)
139
(6.8)
Definici
on 6.4 Un polinomio no constante p(x) Rn (Z2 ) es irreducible si siempre que se puede
escribir como el producto de dos factores p(x) = q1 (x) q2 (x), con q1 (x), q2 (x) Rn (Z2 ),
al menos uno de los factores es constante.
Ahora podemos decir, con toda propiedad, que los codigos cclicos en Rn (Z2 ) est
an
identificados con los factores irreducibles del modulo xn 1 y sus productos.
EJEMPLO 6.4
En R5 (Z2 ):
x5 1 = (x + 1)(x4 + x3 + x2 + x + 1)
As que s
olo hay cuatro posibles codigos en R5 (Z2 ), a saber:
1. El generado por x + 1, que es justamente el utilizado en el ejemplo 6.3.
140
Codigos cclicos
Sera entonces provechoso tener un catalogo de los posibles codigos o, mejor dicho,
de todos los posibles generadores de codigos cclicos de diversas longitudes. Bastara
poseer la factorizaci
on de los modulos respectivos. Sin embargo, tal como ocurre con los
n
umeros naturales y en los campos finitos, factorizar no es trivial en general y es tanto
m
as difcil cuanto mayor sea el exponente de xn 1.
EJEMPLO 6.5
En R7 (Z2 )
x7 1 = (x + 1)(x3 + x + 1)(x3 + x2 + 1)
El n
umero de polinomios irreducibles que factorizan al modulo x7 1 es tres, as que
hay un total de 23 = 8 posibles codigos cclicos en R7 (Z2 ), a saber, los generados por:
1. g0 (x) = 1. Este es el codigo trivial C0 = Z72 .
2. g1 (x) = x + 1. Este es el analogo a nuestro ejemplo 6.1, el codigo de paridad par
de 7 bits.
3. g2 (x) = x3 + x + 1.
4. g3 (x) = (x + 1)(x3 + x + 1) = x4 + x3 + x2 + 1.
5. g4 (x) = x3 + x2 + 1.
6. g5 (x) = (x + 1)(x3 + x2 + 1) = x4 + x2 + x + 1.
7. g6 (x) = (x3 + x + 1)(x3 + x2 + 1) = x6 + x5 + x4 + x3 + x2 + x + 1. Este es el
c
odigo trivial C6 = {1111111}.
8. g7 (x) = (x+1)(x3 +x+1)(x3 +x2 +1) = x7 1. Este es el codigo trivial C7 = {0}.
El c
odigo generado por g3 (x) resultara particularmente interesante en el futuro cercano.
141
Definici
on 6.5 Sea g(x) Rn (Z2 ), el polinomio generador de un codigo cclico C. El polinomio
v(x) tal que:
xn 1 = v(x) g(x)
es llamado el polinomio de verificaci
on de paridad de C.
Por lo que sabemos de la seccion anterior podemos decir que el polinomio de verificaci
on est
a bien definido: si g es un generador, entonces divide al modulo, y como g es
u
nico entonces tambien v lo es.
Que un polinomio g sea generador de C significa que todo elemento c C, visto
como el polinomio c(x), puede escribirse como c(x) = g(x) p(x) para alg
un polinomio
p(x) Rn (Z2 ). Eso significa que si multiplicamos a c(x) por el polinomio de verificaci
on
de C tenemos v(x) c(x) = v(x) g(x) p(x) lo que, por definicion de v resulta ser cero. La
afirmaci
on inversa tambien es cierta.
Teorema 6.4 Sea C un codigo cclico en Rn (Z2 ) con polinomio generador g(x) y polinomio verificador v(x). Un polinomio dado c(x) esta en C (formalmente hablando en el conjunto
de polinomios asociado a C) si y solo si v(x) c(x) = 0 Rn (Z2 ).
Demostraci
on:
Lo hicimos en el parrafo previo.
Supongamos que c(x)v(x) = 0 Rn (Z2 ). Dividamos c(x) por g:
c(x) = q(x) g(x) + r(x)
donde r(x) = 0 (lo que resolvera nuestro problema) o bien grado (r(x)) < grado (g(x)),
supongamos esto u
ltimo. Si multiplicamos por v(x), por hipotesis tenemos:
0 = c(x) v(x) = q(x) g(x) v(x) + r(x) v(x)
El primer sumando a la derecha, de todos modos es cero, as que el segundo debe
serlo tambien:
r(x) v(x) = 0
(6.10)
Por otra parte, recordando que g(x) v(x) = xn 1 y que estamos suponiendo que
grado (r(x)) < grado (g(x)) tenemos:
grado (r(x) v(x)) < grado (g(x) v(x)) = grado (xn 1) = n
(6.11)
142
Codigos cclicos
La u
nica manera de satisfacer simultaneamente 6.10 y 6.11 es que r(x) = 0, as
que c(x) = q(x) g(x) C
Bien, ahora es claro por que llamamos a v el polinomio de verificacion de paridad de
C, hace la misma labor que ya conocamos para las matrices verificadoras de paridad
de los c
odigos lineales. De hecho si v(x) = v0 + v1 x + v2 x2 + . . . + vk xk es el polinomio
de verificaci
on del c
odigo C, de grado k, entonces la matriz de verificacion de paridad
de C es:
vk vk1 vk2 . . .
v0
0
0
0
... 0
0
vk vk1 g2
...
v0
0
0
... 0
0
0
vk vk1 vk2 . . .
v0
0
... 0
V = .
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
0
0
0
...
vk vk1 vk2 . . . v0 0
0
0
0
...
0
vk vk1 vk2 . . . v0
Seguramente el lector ha notado ya que el polinomio de verificacion de paridad,
por ser tambien divisor del modulo, es tambien el generador de otro codigo cclico y
entonces tenemos una situacion analoga a que tenamos con los codigos lineales: el
polinomio generador de un codigo es el de verificacion de paridad de otro y viceversa.
EJEMPLO 6.6
Retomando nuestro ejemplo anterior. El polinomio g2 (x) = x3 + x + 1 genera el c
odigo:
C2 = { 0000000, 0001011, 0010110, 0101100,
1011000, 0110001, 1100010, 1000101,
0011101, 0111010, 1110100, 1101001,
1010011, 0100111, 1001110, 1111111}
Su matriz generadora es, por tanto:
1 1
0 1
M2 =
0 0
0 0
0
1
1
0
1
0
1
1
0
1
0
1
0
0
1
0
0
0
0
1
1 0 1 1 1 0 0
V2 = 0 1 0 1 1 1 0
0 0 1 0 1 1 1
6.6 Codificaci
on y decodificacion
143
0 0 0 1 1 1 1
V20 = 0 1 1 0 0 1 1
1 0 1 0 1 0 1
que el lector reconocera como la matriz H2 (3) mostrada en la expresion 4.14: la matriz
de verificaci
on del c
odigo de Hamming binario de longitud 7.
En efecto, el c
odigo C2 es equivalente al codigo de Hamming binario de longitud 7.
En general cualquier codigo de Hamming binario resulta equivalente a un c
odigo cclico.
144
Codigos cclicos
la palabra enviada c(x) fue alterada al sumarse con una cierta palabra o polinomio de
errores y que es esto lo que hace que el producto no sea cero. Es decir, se nos envi
o
c(x) = m(x) g(x) y recibimos d(x) = c(x) + e(x). Esto nos da pie para hablar de una
nueva faceta del concepto de sndrome que ya mencionamos a proposito de los c
odigos
lineales.
Definici
on 6.6 Sea C = hg(x)i un codigo cclico de longitud n, donde grado (g(x)) = r y.
El sndrome del polinomio d(x) Rn (Z2 ), denotado S(d(x)) es el polinomio de grado
menor que r que se obtiene como residuo de dividir d(x) por g(x).
Al igual que en los c
odigos lineales, podemos entonces construir nuestra tabla con los
sndromes posibles indexada por los lderes de coset, que son nuestros posibles patrones
de error e(x).
Entonces para decodificar:
1. Sea d(x) el polinomio asociado con la cadena binaria recibida.
2. Si v(x) d(x) = 0 entonces la palabra decodificada es c(x) = d(x). Se recupera el
mensaje original dividiendo c(x) por g(x).
3. Si no es as, dividiendo d(x) por g(x) se obtienen los polinomio q(x) y S(d(x)) de
la expresi
on: d(x) = q(x) g(x) + S(d(x)) con grado (S(d(x))) < r = grado (g(x)).
S(d(x)) es el sndrome de d(x).
4. La palabra decodificada es c(x) = d(x) + e(x) donde e(x) es el lder del coset en
el que se encuentra el sndrome S(d(x)).
EJEMPLO 6.7
Para nuestro c
odigo C2 tenemos la tabla de decodificacion 6.2.
Recordemos qe g2 (x) = x3 + x + 1 y que, por tanto, podemos codificar polinomios
hasta de grado 3 (i.e. palabras de longitud 4). El polinomio de verificacion de paridad
es v2 (x) = x4 + x2 + x + 1.
Supongamos que se nos desea enviar el mensaje m = 0101 que equivale al polinomio
m(x) = x2 + 1.
La palabra enviada estara asociada al polinomio:
c(x) = g2 (x) m(x) = (x3 + x + 1)(x2 + 1) = x5 + x2 + x + 1
por lo que ser
a c = 0100111.
Si esta palabra fuera recibida del otro lado, al multiplicar el polinomio asociado a
ella por el polinomio verificador obtendramos:
c(x) v2 (x) = (x5 + x2 + xx + 1)(x4 + x2 + x + 1) = 0
145
6.6 Codificaci
on y decodificacion
Lder
0
1
x
x2
x3
x4
x5
x6
Sndrome
0
1
x
x2
x+1
x2 + x
x2 + x + 1
x2 + 1
x5 + x4
+ x2 + x + 1
x5
x3 x2
x4 x3
+x
x4
x2 x
x3 x2
+1
x3
+x+1
x2 + x + 2
146
Codigos cclicos
+Ejercicios
6.1
Diga cu
ales de los siguientes codigos son cclicos:
1. {00000, 11111}
2. {000, 110, 011, 101}
3. {000, 100, 111, 011}
6.2 El polinomio x4 + x + 1 es irreducible en R15 (Z2 ) y ademas es factor de el m
odulo
x15 1, as que es un polinomio generador de un codigo. Cual?
6.3 En el ejemplo 6.5 se encontro que g2 (x) = x3 + x + 1 es un factor irreducible de
x7 1. Construya el c
odigo cclico asociado con el: sea la raz del polinomio, es decir,
3 + + 1 = 0 o equivalentemente 3 = + 1. Tomando en cuenta esto calcule las
palabras del c
odigo generado por las 7 diferentes potencias de mas el cero (claro est
a
usando 3 bits). Es cclico el codigo resultante?
6.4 x3 1 tiene dos factores, uno de ellos es x + 1, encuentre el otro. Encuentre
tambien el c
odigo generado por el.
k
6.5 Trabajando sobre Z2 resulta que x2 n 1 = (xn 1)2 . Usando esto y la factorizaci
on del ejercicio anterior, encuentre los factores de x6 1.
6.6
6.7
Cu
al es el c
odigo generado por la
0
G= 0
1
siguiente matriz?
0 1 0 1
1 0 1 0
0 1 0 0
Bibliografa
[1] Biggs, Norman L., Codes: An Introduction to Information Communication and
Cryptography, Springer Verlag, 2008.
[2] Bressoud, David y Stan Wagon, A Course in Computational Number Theory, Key
College Publishing-Springer Verlag, 2008.
[3] Cover, Thomas M. y Joy A. Thomas, Elements of Information Theory, 2a ed.,
Wiley, 2006.
[4] Gray, Robert M., Entropy and Information Theory, Springer Verlag, 2011.
[5] Hamming, Richard, Coding and Information Theory, Prentice Hall, 1980.
[6] Held, Gilbert, Data Compression, Techniques and Applications, Hardware ans Software Considerations, 2a. ed., John Wiley & Sons, 1987 (con software elaborado por
Thomas Marshall).
[7] Koblitz, Neal, A Course in Number Theory and Cryptography, 2a ed., Springer
Verlag, 1994, Graduate Texts in Mathematics.
[8] Baldoni, M. Welleda, Ciro Ciliberto y G.M. Piacentini Cattaneo, Elementary Number Theory, Cryptography and Codes, Springer Verlag, 2008.
[9] McIlroy, M. D., The number of 1s in binary integers: bounds and extremal properties, SIAM Journal of Computing, 3, 255, 1974.
[10] Roman, Steven, Introduction to Coding and Information Theory, Springer Verlag,
1996, Undergraduate Texts in Mathematics.
[11] Togneri, Roberto y Christopher J.S. deSilva, Fundamentals of Information Theory
and Coding Design, Chapman and Hall - CRC, 2003.
147