Teoría de códigos

155
1 + +1.5em -1.2em +1em

description

Introducción a la teoría de códigos y de la Información

Transcript of Teoría de códigos

  • 1+ +1.5em -1.2em +1em

  • 2

  • Introduccion a la teorade codigos y de lainformacion

    Jose Galaviz Casas

    Departamento de MatematicasFacultad de CienciasUNAM

  • Indice

    Prefacio V

    1 Preliminares 11.1 Aritmetica modular y un poco de teora de numeros . . . . . . . . . . . . 11.2 Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.3 Cadenas de smbolos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.4 Codigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.5 Anotaciones finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    2 Codificacion eficiente 352.1 Arbol de decodificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.2 Codificacion de Shannon-Fano . . . . . . . . . . . . . . . . . . . . . . . . . 372.3 Codificacion de Huffman . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.4 Longitud promedio de un codigo . . . . . . . . . . . . . . . . . . . . . . . 432.5 La eficiencia del esquema de codificacion de Huffman . . . . . . . . . . . . 45

    Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    3 Informaciony entropa 55

    3.1 Cantidad de informacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.2 Entropa de informacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.3 Propiedades de la entropa . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.4 Extensiones de una fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . 633.5 El primer teorema de Shannon . . . . . . . . . . . . . . . . . . . . . . . . 66

    Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    4 Codificacion para detectar y corregir errores 734.1 Regla de decision y canal de comunicacion . . . . . . . . . . . . . . . . . . 744.2 Decodificacion al vecino mas cercano . . . . . . . . . . . . . . . . . . . . . 814.3 Distancia mnima, capacidad de deteccion y correccion . . . . . . . . . . . 824.4 Codigos maximales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894.5 Probabilidad de error al decodificar . . . . . . . . . . . . . . . . . . . . . . 91

    III

  • IV INDICE

    4.6 Codigos de Hamming: idea e implementacion . . . . . . . . . . . . . . . . 924.7 Esferas y codigos perfectos . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.8 Equivalencia de codigos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.9 Tasa de transmision y de correccion . . . . . . . . . . . . . . . . . . . . . 1004.10 El teorema de la codificacion con ruido . . . . . . . . . . . . . . . . . . . . 1024.11 Codigos de Golay: idea e implementacion . . . . . . . . . . . . . . . . . . 104

    Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

    5 Codigos lineales 1095.1 Definicion, caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095.2 La matriz generadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.3 Correccion de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135.4 Probabilidad de decodificar correctamente . . . . . . . . . . . . . . . . . . 1165.5 Complemento ortogonal, codigo dual . . . . . . . . . . . . . . . . . . . . . 1185.6 Decodificacion de sndrome . . . . . . . . . . . . . . . . . . . . . . . . . . 1205.7 Codigos de Hamming y Golay revisados . . . . . . . . . . . . . . . . . . . 126

    Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    6 Codigos cclicos 1316.1 Definicion, asociacion con polinomios . . . . . . . . . . . . . . . . . . . . . 1316.2 Polinomio generador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1336.3 Matriz generadora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1366.4 Polinomios irreducibles y factorizacion . . . . . . . . . . . . . . . . . . . . 1386.5 Polinomio y matriz de verificacion de paridad . . . . . . . . . . . . . . . . 1416.6 Codificacion y decodificacion . . . . . . . . . . . . . . . . . . . . . . . . . 143

    Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

    Bibliografa 147

  • +Prefacio

    Se buscan jovenes delgados y vigorosos, no mayores de 18 anos, deben ser jinetesexpertos dispuestos a arriesgar la vida diariamente. Preferentemente huerfanos. Erael atemorizante texto que se poda leer en los carteles de reclutamiento de la recienfundada compana Pony Express en 1860. Los jovenes candidatos deban comprometersea atravesar dos tercios de la anchura de Norteamerica (3 200 km), en 10 das a lomode caballo, haciendo entregas entre St. Joseph, Missouri y Sacramento, California.La garanta de entrega de la correspondencia era tan endeble como la pervivencia delmensajero: la creciente de un ro, un trastabilleo de las agobiadas herraduras, una balao los rigores de la Sierra Nevada podan segar la vida del jinete y entregar al olvido suepistolar cargamento.

    Al ano siguiente la compana Western Union completo la lnea telegrafica que hizoobsoleta la Pony Express. La entrega confiable, sin embargo, aun dependa de la figuradel mensajero, ahora personificado por muchachos de 12 anos que recorran las calles enbicicleta. 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 lainformacion. Lo que ha hecho posible, en buena medida, que hoy podamos escribirun mensaje de correo electronico y estar confiados en que sera ledo, tal cual, por sudestinatario; lo que nos ha hecho posible observar la superficie de Marte, los anillos deSaturno o un partido de futbol soccer en Sudafrica.

    En julio y octubre de 1948, en el Bell Systems Technical Journal aparecio el artculotitulado A Mathematical theory of communication, en el que Claude Shannon formulolos fundamentos de la teora de la informacion. El artculo versa, por una parte, de lamanera de codificar los datos producidos por una fuente de informacion para represen-tarlos eficientemente, suponiendo una confiabilidad absoluta en la recuperacion exactade lo que la fuente ha producido. Trata, por otra parte, de la manera de codificar los da-tos 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 loque conocemos como codificacion de fuente (source coding), el segundo a la codificacionde canal (chanel coding).

    Es acerca de esto que trata la presente obra, la codificacion eficiente y la codificacionpara detectar y corregir errores. El objetivo es presentar los fundamentos de la teorade codigos en el marco conceptual que ofrece la teora de la informacion.

    Se supone del lector un conocimiento elemental de algebra lineal, de combinatoria yde probabilidad. El captulo inicial, sin embargo, esta dedicado a presentar brevementealgunos de los conocimientos preliminares necesarios para abordar el contenido esencialdel libro: un poco de teora de numeros, de combinatoria relacionada con cadenas desmbolos y de operaciones con polinomios.

    V

  • VI Prefacio

    El captulo 2 esta dedicado a la codificacion eficiente de datos. Se introducen losconceptos relacionados con la codificacion y con los codigos enfocados en la eficienciade la representacion.

    En el captulo 3 se presenta el marco teorico y conceptual de la teora de la in-formacion. Se introducen los mecanismos para cuantificar la informacion contenida enlos smbolos individuales y para evaluar el promedio de la misma, lo que constituye elconcepto de entropa de informacion.

    El captulo 4 introduce la transmision de datos sujeta a errores. Se analiza la natu-raleza estadstica de los mismos y se establecen los requisitos que la codificacion debeposeer 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 quesimplifica notablemente las operaciones.

    El captulo 6 trata de los codigos cclicos, que constituyen un paso mas en la evolucionde los codigos detectores y correctores de errores, pensando como polinomios a laspalabras del codigo.

    El texto esta pensado para estudiantes de la segunda mitad de una carrera a ni-vel licenciatura en ciencias exactas o de ingeniera, preferentemente vinculadas con lacomputacion.

    Debo agradecer a mi institucion, la Facultad de Ciencias de la UNAM, en particularal Departamento de Matematicas de la misma, por las facilidades concedidas para larealizacion de la obra y al apoyo economico institucional que a traves del proyectopapime PE100205 brindo la Universidad.

    Agradezco tambien a los muchos estudiantes de Ciencias de la Computacion y al-gunos de Matematicas quienes conocieron las versiones preliminares del texto y cuyaretroalimentacion resulto fundamental. Agradezco tambien a mis colegas de la facultadque han contribuido con la forma y el fondo del libro, particularmente a la Dra. ElisaViso, quien estuvo a cargo de la supervision del proyecto institucional mencionado yademas construyo el formato en el que se presenta la obra.

    Jose Galaviz CasasCiudad Universitaria, diciembre de 2010

  • Preliminares 1

    1.1 +Aritmetica modular y un poco de teora de numeros

    En general en toda la teora de codigos se suele trabajar en conjuntos cuyo alfabeto esbastante restringido. En las aplicaciones tecnologicas en dispositivos de almacenamientoo transmision de datos, por ejemplo, el alfabeto de smbolos posibles es el conjunto{0, 1}, los dgitos binarios, que en adelante llamaremos bits. En la teora de codigos yen criptografa suele trabajarse sobre el conjunto de todos los enteros menores que uncierto numero primo. En general se trata de subconjuntos de los enteros con una ciertaestructura, lo que conocemos como las clases residuales modulo algun numero entero.As que sera necesario recordar algo de nuestros conocimientos de aritmetica modular.

    Lo primero que debemos recordar es el algoritmo de la division.

    Teorema 1.1 [Algoritmo de la division] Dados a, b Z, con b 6= 0, existen dos enterosunicos q y r tales que a = bq + r con 0 r

  • 2 Preliminares

    a b es divisible por m (i.e. es multiplo de m), en notacion m | (a b). Por elalgoritmo de la division podemos escribir:

    a = c1m+ r1

    b = c2m+ r2

    (1.1)

    de donde:

    a b = c1m+ r1 c2m r2 = (c1 c2)m+ (r1 r2) (1.2)

    como r1 = r2:

    a b = (c1 c2)m = c3m (1.3)

    de donde concluimos que m | (a b). Existe k Z tal que a = km+ b. Esto es claro si reescribimos 1.3 como:

    a = (c1 c2)m+ b

    EJEMPLO 1.1

    7 3 (mod 2) porque 3 = 2 1 + 1 y 7 = 2 3 + 1. 5 49 (mod 6) porque 49 = 6 8 + 1 y 5 = 6 (1) + 1. 96 4 (mod 23) porque 4 = 23 0 + 4 y 96 = 23 4 + 4. 131 100 (mod 7) porque 100 = 7 (15) + 5 y 131 = 7 18 + 5.

    Si m es un entero positivo Zm denota el conjunto de los enteros modulo m, es decir:

    Zm = {0, . . . ,m 1}, el conjunto de todos los posibles residuos que resultan de dividirun entero cualquiera por m.

    De esto resulta algo interesante, si fijamos m, el tamano del modulo, y luego esta-blecemos que un entero cualquiera esta en relacion con todos los enteros congruentescon el modulo m, con esto construimos una relacion de equivalencia. Formalmente, unarelacion:

    Reflexiva. Un entero cualquiera a esta en relacion con el mismo. O sea a a (mod m).

  • 1.1 Aritmetica modular y un poco de teora de numeros 3

    Simetrica. Si a esta 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 esta relacionado con b y b esta relacionado con c, entonces a esta relacionadocon 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 particion en elconjunto sobre el que se define, en nuestro caso, los enteros. En efecto, una vez quese ha fijado m, el tamano del modulo, los posibles residuos que se obtienen de dividirpor m son los enteros no negativos menores que m, as que cualquier entero, estarafinalmente en relacion con uno y solo uno de estos posibles residuos. El conjunto detodos los enteros, a traves de la relacion de congruencia modulo m, es partido en mdiferentes subconjuntos o clases de equivalencia. Cada una de estas clases podemospensarla representada por el entero mas pequeno en ella, es decir, uno de los mresiduos posibles, por lo que a estas clases suele llamarseles clases residuales modulo m.

    EJEMPLO 1.2

    x 61 (mod 7)significa que x = 5 porque 61 = 7 8 + 5

    Podemos tambien darle una estructura mas interesante a Zm definiendo operacionesen el. Por ejemplo la suma y el producto modulo m.

    Definicion 1.2 Sean x, y Z. La suma de x y y en Zm es el residuo que resulta de dividirx+ y Z entre m. Analogamente el producto de x y y en Zm es el residuo que resultade dividir x y Z entre m.

    Notese que con esta definicion Zm es un conjunto cerrado bajo la suma y el productomodulo 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

  • 4 Preliminares

    Definicion 1.3 A la terna Zm,+, es a lo que, en adelante, llamaremos los enteros modulom. Generalmente, abusando de la notacion, lo denotaremos simplemente como Zm.

    Es bien conocido, por todos los dedicados a la computacion el conjunto de los enterosmodulo dos. La tabla de sumar en Z2 es:

    + 0 1

    0 0 1

    1 1 0

    y la de multiplicar:

    0 10 0 0

    1 0 1

    Notese que 42 = 0 en Z8, pero 4 y 2 son ambos, distintos de cero. Sera deseable quecuando un producto sea cero al menos uno de los operandos sea cero. Que necesitamospara que esto ocurra?

    Supongamos que a, b Zm y que a b = 0 Zm, es decir:a b 0 (mod m) (1.4)

    o dicho de otra forma m | (a b). Nosotros quisieramos que alguna de las siguientescondiciones fuera verdadera:

    1. a = 0lo que significa que a 0 (mod m) y por tanto m | a.

    2. b = 0lo que analogamente significa que: m | b

    As que, en sntesis, quisieramos que m | (a b) implique que m divide a uno de losfactores, al menos. Esto significa, como demostraremos, que m es un numero primo.

    Teorema 1.2 Sean a, b Zp. a b = 0 en Zp implica que a = 0 o b = 0 si y solo si p es primo.

    Demostracion:

    Notemos que la estructura del teorema es A B C donde A es a b = 0, B esa = 0 o b = 0 y C es la afirmacion de que p es primo.

  • 1.1 Aritmetica modular y un poco de teora de numeros 5

    Suponemos A y C, pretendemos concluir B.Suponemos que a b = 0 en Zp. Esto significa que (a b) 0 (mod p) y por tantop | (a b). Dado que p es primo entonces ocurre alguna de las dos cosas siguientes: p | a, lo que significa que a 0 (mod p), es decir, a = 0 en Zp p | b lo que analogamente significa que b = 0 en Zp

    Demostrar A B C es equivalente a demostrar C (A B). Es decir,supondremos que p no es primo y que no es cierto que si el producto de a y b escero, a o b son cero.

    Si p no es primo entonces es posible dividirlo por algun numero que no es ni elmismo ni la unidad, es decir, lo podemos escribir como:

    p = a b (1.5)

    donde a, b Z y tanto a como b son distintos de p y de 1, y deben ser menoresque p entonces 2 a, b p 1. As que son, de hecho elementos de Zp distintosde cero y por 1.5 tales que:

    a b 0 (mod p)As que: ab = 0 en Zp.

    En algebra, a un conjunto cerrado bajo una operacion definida en el, que sea asocia-tiva se le denomina semigrupo. Si un semigrupo posee elemento identidad se denominamonoide y si ademas cada elemento tiene inverso bajo la operacion definida, se deno-mina grupo. Si la operacion es conmutativa el grupo es abeliano. Nuestros Zm sonun grupo abeliano con la operacion + y con el producto () son un semigrupo, esto enlenguaje algebraico es un anillo. Pero lo mejor viene cuando m es un numero primo, enese caso Zm es un campo.

    Definicion 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. Asociatividada+ (b+ c) = (a+ b) + c

    a (b c) = (a b) c2. Conmutatividad

    a+ b = b+ a

    a b = b a

  • 6 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:

    1 a = a 1 = a

    6. Existe un inverso aditivo, denotado con a y un inverso multiplicativo, denotadocon a1 tales que:

    a+ (a) = (a) + a = 0

    a (a1) = (a1) a = 1

    Teorema 1.3 Zp es un campo si y solo si p es primo.

    No vamos a demostrar todas las propiedades. Pero s la que tiene particular rele-vancia para nuestros propositos.

    Teorema 1.4 En Zp todos los elementos distintos de cero tienen un inverso multiplicativo siy solo si p es primo.

    Demostracion:

    La demostracion en este sentido la haremos negando la tesis y demostrando la ne-gacion de la hipotesis. Es decir: si p no es primo entonces no todos los elementosde Zp tienen inverso.

    Si p no es primo significa que es divisible entre algun numero distinto de 1 y dep mismo. Es decir, podemos escribir p = ab con a y b enteros distintos de cero ymenores a p. Pero entonces a, b Zp y como el producto de ellos es p entoncesa 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 contradiccion.Por tanto a no tiene inverso, existe un elemento en Zp sin inverso.

  • 1.1 Aritmetica modular y un poco de teora de numeros 7

    Supongamos ahora que p es primo, debemos deducir que todos los elementos de Zptienen inverso.

    Sea a un elemento cualquiera de Zp. Consideremos ahora todos los productos dela forma a b donde b Zp. Si hubiera un par de elementos b, b Zp distintosentre s pero que dieran el mismo producto al multiplicarse por a tendramos queb 6= b y a b = a b, es decir

    (a b) c (mod p)

    y(a b) c (mod p)

    Es decir, al dividir a b entre p se obtiene el mismo resduo que al dividir a bentre p. Entonces:

    ab = kp+ c

    ab = kp+ c

    Si el residuo es el mismo y el divisor tambien, el algoritmo de la division nos diceque los cocientes son los mismos. Esto es: k = k.

    Entonces b debe ser tambien igual a b lo que contradice nuestra hipotesis. Asque no puede haber dos productos iguales. Para toda b Zp el producto a b esun elemento distinto de Zp. As que en total hay p productos distintos, todos ellosen Zp, entonces el conjunto de todos los posibles productos es exactamente todoZp y debe haber algun producto que sea igual a 1. Es decir, existe alguna b Zptal 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 quedemostraremos mas adelante, a saber: en un conjunto Zm un elemento a tiene inversomultiplicativo 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, asque todos los elementos de Zm tendran inverso.

    Tambien es prudente senalar que estos campos finitos no son los unicos. En generalexiste un campo finito de tamano pm para todo primo p y todo entero positivo m. Aestos campos se les suele llamar Campos de Galois y se denotan con GF(q) (GaloisField), donde q = pm. Los Zp son un caso particular de campo de Galois en los queq = p1. Estos campos constituyen una de las areas de trabajo fundamentales en la teorade codigos y en criptografa.1

    1Ademas, dada una pareja p,m, el campo de Galois de orden (tamano) pm es unico salvo el nombrede sus elementos y la manera de denotar las operaciones, es decir, son unicos salvo isomorfismo.

  • 8 Preliminares

    EJEMPLO 1.4

    En Z11 6 + 5 = 0, as que el inverso aditivo de 6 es 5, en notacion:

    6 = 5

    Ademas en Z11 6 2 = 1, as que

    61 = 2

    Por supuesto, dado que 2 es primo Z2 es un campo, un campo curioso: cada elementoes su propio inverso aditivo: sumar es lo mismo que restar.

    Recordemos ahora un par de conceptos elementales: el de mnimo comun multiplo

    y maximo comun divisor.

    Definicion 1.5 Dados dos numeros enteros cualesquiera a y b, el Maximo Comun Divisor dea y b, denotado mcd(a, b), es el entero mas grande que los divide a ambos. El mnimocomun multiplo de a y b, denotado mcm(a, b), es el entero mas pequeno que resultadivisible por ambos.

    Con base en el concepto de mcd(a, b) se define lo siguiente.

    Definicion 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 elsiguiente hecho evidente.

    Teorema 1.5 Sean a, b y c en Z. Si a | b y b | c entonces a | c.

    Demostracion:

    Como a | b entonces es posible escribir b = ax para algun x Z. Ademas b | c entoncesc = by para algun y Z. Sea z = xy Z. Entonces c = axy = az por lo que a | c.

    Como dijimos, el teorema 1.4 es un caso particular de uno mas general que estamosen condiciones de mostrar ahora.

    Encontrar el inverso de un numero a Zm consiste en hallar x Zm tal que ax = 1tomando el producto modulo m. Es decir:

    ax 1 (mod m) (1.6)

  • 1.1 Aritmetica modular y un poco de teora de numeros 9

    Esta ecuacion tiene solucion, y es unica, si y solo si a y m son primos relativos, esdecir, mcd(a,m) = 1. Es facil demostrarlo.

    Teorema 1.6 Un elemento a de Zm posee inverso multiplicativo si y solo si mcd(a,m) = 1.

    Demostracion:

    Supongamos que:

    1. mcd(a,m) = d > 1.

    2. Existe b Zm tal que ab 1 (mod m).1 significa que:

    d | a (1.7)y

    d | m (1.8)con d > 1.

    Por otra parte 2 significa que:

    m | (ab 1) (1.9)As que por 1.8 y 1.9 y usando el teorema 1.5 tenemos que:

    d | (ab 1) (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)lo que, por supuesto, es imposible.

    El regreso es tambien facil y sera evidente luego de revisar, mas adelante, el algoritmode Euclides extendido.

    El algoritmo mas antiguo de que se tenga memoria es, justamente, el formulado porEuclides para encontrar el maximo comun divisor de dos numeros. El algoritmo 1.1 esla version recursiva.

    Observemos un ejemplo de ejecucion de este algoritmo. En la tabla 1.1 se mues-tran los valores de a y b en las llamadas recursivas que se efectuan para encontrar elmcd(97, 77), que por cierto son primos relativos y por tanto mcd(97, 77) = 1.

  • 10 Preliminares

    Algoritmo 1.1 Version recursiva del algoritmo de Euclides para obtener el maximo comun divisorde dos numeros a y b.

    MCD(a, b)1 if b = 0 then2 return a3 else4 return MCD(b, a (mod b))5 endif

    llamada a b cociente

    0 97 77 1

    1 77 20 3

    2 20 17 1

    3 17 3 5

    4 3 2 1

    5 2 1 2

    6 1 0

    Tabla 1.1: Valores de a y b, argumentos del algoritmo de Euclides en las llamadasrecursivas sucesivas para encontrar mcd(97, 77).

  • 1.1 Aritmetica modular y un poco de teora de numeros 11

    Por la manera en que se efectua la llamada en la lnea 4 del algoritmo 1.1 vemos queen la tabla 1.1 tenemos en la llamada i como valor de a (llamemosle ai en adelante) elvalor que tena b en la llamada anterior (llamemosle bi1). Por otra parte el argumentoque ocupara el valor de b en la llamada que ocurre en la lnea 4 es a mod b, el residuoque resulta de dividir a por b. As que podemos escribir ai = qi bi + bi+1, es decir,el siguiente valor de b sera el residuo de dividir la a actual entre la b actual. Pero elvalor actual de a es en realidad el que tena b en la llamada anterior como habamosobservado, as que:

    bi1 = qi bi + bi+1 (1.13)

    En esencia la ecuacion 1.13 dice que cualquier residuo (los valores de b) resultado delproceso, puede escribirse como combinacion lineal de sus dos predecesores, solo tenemosque reescribir la ecuacion como bi+1 = qi bi + bi1. Pero si esto es posible entoncespodemos irnos hacia atras escribiendo cada residuo de la expresion como combinacionlineal de sus predecesores hasta llegar a los mismsimos a y b. Como el ultimo residuo esmcd(a, b) esto quiere decir que el maximo comun divisor de dos numeros puede escribirsecomo combinacion lineal de ellos. En particular si los dos numeros a y b eran primosrelativos entonces:

    1 = a+ b (1.14)

    Ahora bien, si estamos en Zb quien es ? la expresion 1.14 dice que a 1 (mod b)as que resulta ser el inverso multiplicativo de a en Zb.

    Al algoritmo de Euclides modificado para obtener la combinacion lineal que expresael mcd se le suele llamar el algoritmo de Euclides extendido y en particular es util paracalcular inversos multiplicativos como hemos visto.

    Ahora es posible echar un nuevo vistazo al teorema 1.6 y pensar en la demostracionde regreso. Un tratamiento bonito de esto puede hallarse en [2].

    Otros dos resultados que nos seran utiles son los siguientes.

    Teorema 1.7 [Teorema de Fermat] Sea p un numero primo y a un entero. Si mcd(p, a) = 1(p y a son primos relativos) entonces:

    ap1 1 (mod p)

    Otra manera de enunciarlo, restringiendo el conjunto de posibles valores de a es:Si p es primo entonces ap1 1 (mod p) para toda a en ZpDonde Zn denota el subconjunto de elementos en Zn relativamente primos con n.

    Por ejemplo Z15 = {1, 2, 4, 7, 8, 11, 13, 14}. Como en el teorema p es primo entonces dehecho Zp = Zp.

  • 12 Preliminares

    Teorema 1.8 Si n1, n2, . . . , nk son primos relativos por parejas y n = n1n2 . . . nk entonces,para cualesquiera enteros x y a y toda i {1, 2, . . . , k} ocurre:

    x a (mod ni)si y solo 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.

    Teorema 1.9 [Teorema fundamental de la artitmetica] Cualquier entero n tal que| n |> 1 se puede expresar como el producto de numeros primos. La expresion es unicasalvo 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.

    Definicion 1.7 Un polinomio en x es una expresion de la forma:

    anxn + an1xn1 + . . .+ a1x+ a0

    en la que los exponentes de la variable x son enteros no negativos y los coeficientesai R.

    Al coeficiente distinto de cero, asociado con la mayor potencia de x se le suele llamarel coeficiente principal y si es 1, se dice que el polinomio es monico. A la potencia mayorde 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 elproducto. La primera de estas operaciones es asociativa y conmutativa y cada elementodel conjunto de polinomios posee un inverso aditivo, as que, de acuerdo con lo quehabamos mencionado antes, el conjunto de polinomios es un grupo abeliano con lasuma.

    Con el producto, dado que este es asociativo, el conjunto de polinomios es, al menosun semigrupo. Resulta entonces que con la suma y el producto, el conjunto de polinomioses un anillo. Ademas posee un par de caractersticas especiales, existe un elementoneutro con el producto y este al igual que la suma, tambien es conmutativo, as que estole concede dos calificativos adicionales al anillo: anillo conmutativo con unidad.

  • 1.2 Polinomios 13

    Debido a nuestro interes particular en este texto, nos restringiremos al estudio depolinomios con coeficientes enteros.

    EJEMPLO 1.5

    Sean p(x) = 2x4 3x2 y q(x) = 6x4 + 2x3 + x2 + 2.

    p(x) + q(x) = 8x4 + 2x3 2x2 + 2

    y

    p(x)q(x) = 12x8 + 4x7 + 2x6 + 4x4 18x6 6x5 3x4 6x2= 12x8 + 4x7 16x6 6x5 + x4 6x2

    En los cursos elementales de algebra nos ensenaron a factorizar, es decir, expresar

    polinomios como producto de otros mas simples.

    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 yadquieren un papel analogo al que tienen los numeros primos en la aritmetica.

    Teorema 1.10 [Teorema fundamental del algebra] Para todo polonomio p(x) de gradon > 0 existen exactamente n races {c1, c2, . . . , cn} (no necesariamente distintas), talesque:

    p(x) = a(x c1)(x c2) . . . (x cn)donde a es el coeficiente principal de p.

  • 14 Preliminares

    El teorema fundamental del algebra es, esencialmente, una reescritura del de laaritmetica pero con los polinomios irreducibles x ci haciendo las veces de los factoresprimos.

    Sera de nuestro interes, mas adelante, considerar el conjunto de todos los polinomiosque pueden generarse a partir de un polinomio irreducible dado, multiplicandolo por losdistintos monomios disponibles de un conjunto.

    EJEMPLO 1.7

    Sea p(x) = x + 1, entonces los polinomios que pueden generarse a partir de p con elconjunto {1, x, x2, x3} son: x+ 1, x2 + x, x3 + x2 y x4 + x3.

    Tambien nos va a interesar hacer aritmetica modular, pero con polinomios. Es

    decir, obtener expresiones del tipo p(x) = q(x)d(x) + r(x) de la que podemos decir queq es el cociente que resulta de dividir p entre d y r es el residuo o bien: p(x) r(x)(mod d(x)). Por analoga con lo que ocurre en el algoritmo de la division, el grado delpolinomio residuo debe ser menor que el del polinomio divisor. Necesitaremos recordarcomo se lleva a cabo la division entre polinomios. Lo haremos a traves de ejemplos:

    EJEMPLO 1.8

    La division de 9x3 + 3x2 + 6x+ 3 entre 3x2 + 6 se puede obtener de la siguiente forma:

    3x+ 1

    3x2 + 6) 9x3 + 3x2 + 6x+ 3 9x3 18x

    3x2 12x+ 3 3x2 6

    12x 3

    de donde: 9x3 + 3x2 + 6x + 3 = (3x2 + 6)(3x + 1) (12x + 3). Es decir, el polinomiocociente es: 3x+ 1 y el residuo es: 12x 3.

  • 1.2 Polinomios 15

    EJEMPLO 1.9

    Mas tarde estaremos particularmente interesados en el producto de polinomios modulootro polinomio de la forma xn + 1 o xn 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 + 1) 2x4 + 3x3 + 2x2 + 15x+ 18 2x4 2x

    3x3 + 2x2 + 13x+ 18 3x3 3

    2x2 + 13x+ 15

    As que: (x3 + x+ 6)(2x+ 3) = 2x2 + 13x+ 15 (mod x3 + 1).

    Cuando los coeficientes estan en al campo finito Z2, hacer lo anterior es todava un

    poco mas facil, dado que siempre puede reemplazarse xn por 1, los coeficientes paresse convierten en cero y 1 = +1. En adelante denotaremos con Pn(Zp) al conjunto depolinomios de grado estrictamente menor a n, con coeficientes en Zp y con Rn(Zp) almismo conjunto con las operaciones suma, producto y producto por escalar realizadasmodulo xn 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 1) x6 + 2x4 + 2x2 + 1 x6 + x

    2x4 + 2x2 + x

  • 16 Preliminares

    1.3 +Cadenas de smbolos

    Codificar significa, esencialmente expresar cosas escritas con ciertos smbolos medianteel uso de otros smbolos. As que la siguiente definicion sentara las bases de todo lo quenos ocupara mas adelante.

    Definicion 1.8 A un conjunto finito S = {s1, s2, . . . , sn} de n smbolos distintos le denomina-remos un alfabeto. A una secuencia finita de elementos de S se le denomina una cadenasobre S. Al numero de elementos en S le llamaremos el tamano 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 interesanlas palabras mismas.

    Dado que una cadena es finita podemos hablar de su longitud. La longitud de unacadena x = x1x2 . . . xk es el numero de smbolos que la constituyen y la denotaremoscon lon (x) = k.

    La concatenacion o yuxtaposicion de dos cadenas x,y es la cadena z obtenida deponer 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 Sn 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 tamano del conjunto A.

    Teorema 1.11 Sea S un alfabeto de tamano k > 1.

    1. | Sn |= kn

    2. | Sn |= kn+11k1

    Demostracion:

    Para demostrar el primer inciso basta notar que, dado que se trata de cadenas delongitud n entonces hay, en cada cadena, k maneras de escoger el smbolo a poner en laprimera posicion, cada vez que se elige esta hay k opciones para la siguiente, etcetera.

  • 1.3 Cadenas de smbolos 17

    Para demostrar el segundo inciso usaremos el primero. El numero de cadenas delongitud n y menor es:

    | Sn |=| S0 | + | S1 | + . . .+ | Sn |

    esto es:

    | Sn |= 1 + k + k2 + . . .+ kn = kn+1 1k 1

    El calculo de la suma parcial es facil de comprobar, solo debemos restar a la sumaoriginal el producto de k veces ella misma.

    Teorema 1.12

    1. En Zn2 el numero de cadenas que tienen exactamente k ceros es:(nk

    )2. En Znr el numero de cadenas que tienen exactamente k ceros es:(

    nk

    )(r 1)nk

    Demostracion:

    Esencialmente, de los n lugares disponibles en la cadena debemos elegir donde ponerlos k ceros, esto es, elegir un subconjunto de k posiciones de las n posibles, de all:(

    nk

    )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 nopodemos poner ceros, as que para todos los lugares podemos elegir solo de entre r 1smbolos.

    Hay que notar que en el teorema anterior tenemos la posibilidad de elegir las posi-ciones 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 quetengan k ceros en posiciones fijas el resultado es, por supuesto, diferente. En este casoya no es posible elegir donde poner los ceros y si solo puede haber una posibilidad. Siqueremos saber cuantas cadenas hay que tengan al menos k ceros en ciertas posiciones

  • 18 Preliminares

    fijas, entonces debemos contar cuantas opciones hay para las restantes nk posiciones.En cada una de ellas podemos poner 0 o 1, as que el resultado es 2nk.

    EJEMPLO 1.11

    En Z124 , el numero de cadenas que tienen exactamente tres ceros y dos unos es:(123

    )(92

    )27

    primero elegimos tres de las 12 posiciones donde poner cero, luego 2 de las 9 restantesdonde poner 1, el resto de las posiciones (7) las rellenamos con 2 o 3.

    En general el numero de cadenas en Zkn (cadenas de longitud k en Zn) que contienen

    r ceros y t unos es: (kr

    )(k rt

    )(n 2)(krt)

    En Z124 , el numero de cadenas con, al menos 10 ceros es:(1210

    )32 +

    (1211

    )3 +

    (1212

    )Generalizando, el numero de cadenas en Zkn con, al menos, r ceros es:(

    kr

    )(n 1)kr +

    (k

    r + 1

    )(n 1)kr1 + . . .+

    (kk

    )Ahora que tenemos un concepto de cadena de smbolos en un alfabeto, resulta con-

    veniente definir una nocion de distancia que nos permita expresar que tan diferentesson dos cadenas entre s, que tan alejadas estan. Para ello utilizaremos la distancia deHamming.

    Definicion 1.9 La distancia de Hamming entre dos cadenas cualesquiera x,y Sn, denotadacon d (x,y), es el numero 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 susdos primeros y en sus dos ultimos smbolos y difieren en los 3 centrales.

  • 1.3 Cadenas de smbolos 19

    La distancia de Hamming resulta ser realmente una buena nocion de distancia ometrica desde el punto de vista formal del termino. Es decir, si x,y, z son elementoscualesquiera de Sn la distancia de Hamming cumple con las siguientes propiedades:

    1. Positiva definida.

    d (x,y) 0y d (x,y) = 0 si y solo si x = y.

    2. Simetrica.

    d (x,y) = d (y,x)

    3. Desigualdad del triangulo.

    d (x, z) d (x,y) + d (y, z)

    No demostraremos las dos primeras propiedades, pero s la tercera, la mas intere-sante.

    Teorema 1.13 Si x, y y z son tres cadenas cualesquiera en Sn y d denota la distancia deHamming, entonces se satisface:

    d (x, z) d (x,y) + d (y, z)

    Demostracion:

    Las posiciones en las que x difiere de y se pueden dividir en dos conjuntos ajenos:

    1. Las r posiciones en las que x difiere de y y y no difiere de z.

    2. Las u posiciones en las que x difiere de y y y difiere de z.

    As que d (x,y) = r + u con u 0.Por otra parte las posiciones en las que y difiere de z se pueden dividir tambien en

    dos conjuntos ajenos:

    1. Las t posiciones en las que y difiere de z y x no difiere de y.

    2. Las u posiciones mencionadas con anterioridad, en las que y difiere de z y x difierede y.

    As que d (y, z) = t+ u.En el caso binario, cuando Sn = Zn2 , las posiciones en las que x difiere de z estan

    constituidas por las mencionadas en los incisos (1). Es decir:

    d (x, z) = r + t r + t+ 2u = d (x,y) + d (y, z)

  • 20 Preliminares

    dado que u 0.En un caso mas 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 quelas posiciones en las que x difiere de z estan constituidas por las de los incisos (1) yposiblemente por algunas de las restantes u posiciones. Digamos que difieren en w deesas 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 implementa-cion, es conveniente pensar la distancia de Hamming entre dos cadenas como el numerode unos contenidos en el resultado de aplicar la operacion de disyuncion exclusiva (ala que tambien podemos llamar suma modulo dos) entre las dos cadenas, la operacionbit a bit conocida como or exclusivo o xor. La tabla de verdad para esta operacion,denotada con , es la siguiente:

    x y x y0 0 0

    0 1 1

    1 0 1

    1 1 0

    Notara el lector que el xor vale 1 cuando ambos operandos son diferentes y 0 enotro caso. As que el xor nos marca las posiciones en las que difieren dos cadenasbinarias. Solo resta contar el numero de unos en el resultado del xor para conocer ladistancia de Hamming.

    EJEMPLO 1.13

    Sean x = 01001101 y y = 10001110 dos cadenas en Z82. La distancia de Hamming es elnumero de unos en:

    X Y = 11000011por lo que d (x,y) = 4.

    A fin de cuentas podemos pensar a las cadenas binarias como la expresion binaria

    de un numero entero; por supuesto, podemos entonces pensar el resultado de un xor,

  • 1.4 Codigos 21

    como otro numero escrito en binario. As que contar el numero de unos en cualquiercadena binaria consiste en saber cuantos unos tiene la expresion binaria del numero querepresenta. En ciertas circunstancias2 podemos hacer esto echando mano de la expresionobtenida en [9]:

    w(n) = nni=1

    n

    2i

    (1.15)

    donde n es el numero del que se quiere saber el numero de unos en su expresion binaria yw(n) denota justamente el numero de unos en la expresion binaria de n. A este numerose le denomina frecuentemente el peso de n.

    1.4 +Codigos

    Un codigo es un conjunto cualquiera de cadenas sobre un cierto alfabeto. Por ejemploC = {0, 01, 101, 1101, 0010} es un codigo sobre Z2. Formalmente hablando:

    Definicion 1.10 Sea A = {a1, a2, . . . , ar} un conjunto finito de smbolos al que llamaremosalfabeto del codigo. Un codigo r-ario sobre A es un subconjunto C de A de todas laspalabras sobre A. El numero r es llamado la base del codigo.

    Por supuesto los codigos sobre Z2 se llaman binarios.

    Definicion 1.11 Sea S = {s1, s2, . . . , sq} un conjunto finito de smbolos al que nos referiremoscomo alfabeto fuente. Sea C un codigo. Una codificacion o funcion de codificacion esuna funcion 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 unacodificacion:

    f(A) = 1

    2En general calcular la suma de la expresion 1.15 para un valor particular de n es mas complicadoque hacer log2(n) desplazamientos para obtener cada bit de la expresion binaria de n. Pero si sabemosde antemano el valor maximo de n que se usara en un determinado problema, podemos guardar en unarreglo el peso de cada n que necesitemos usando la expresion.

  • 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 igualque E y que BC se codifica igual que F . No hay una unica manera de leer la secuenciacodificada 11 o 22 o 23. Por cierto, a las palabras escritas en smbolos de codigo asociadascon el alfabeto fuente se les llama palabras del codigo; en nuestro ejemplo las palabrasdel codigo son todas las de la derecha del smbolo =.

    Tambien hay que notar que no todas las palabras del codigo miden lo mismo, las hayde 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 smbolosdel alfabeto fuente son todas de la misma longitud. En ese caso al codigo se le llama delongitud fija o de bloque.

    Representar datos mediante codigos de longitud fija tiene ventajas: Si se lee unasecuencia de palabras de codigo se sabe exactamente donde termina una palabra ycomienza la otra. Sin embargo, como veremos mas adelante, no es la manera maseficiente de hacerlo.

    +1.5em1.4.1. +Codigos unvocamente decodificables

    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 asegurarnosque es invertible. Queremos poder codificar y decodificar; mapear los smbolos enel alfabeto fuente a palabras de codigo y luego poder recuperar los datos originalesdecodificando estas luego de haberlas transmitido a traves de una lnea de comunicaciono luego de haberlas almacenado durante algun tiempo.

    En nuestro ejemplo anterior ya nos percatamos de que no siempre hay una unicalectura posible para una secuencia de palabras de codigo, pero desearamos que as fuerapara evitar interpretaciones ambiguas. A esta propiedad se le llama decodificacion unica.Solo hay una manera de interpretar una secuencia de palabras de codigo en terminos delos smbolos del alfabeto fuente.

    Definicion 1.12 Un codigo C sobre un alfabeto A es unvocamente decodificable si, para todacadena x = x1x2 . . . xn sobre A existe a lo mas una secuencia de palabras de codigoc = c1c2 . . . cm que coincide con x. Es decir: x = c.

  • 1.4 Codigos 23

    Parafraseando: Un codigo es unvocamente decodificable si no hay dos secuenciasdiferentes de palabras de codigo que representen la misma cadena sobre A.

    Computacionalmente lo que esto significa es que, si un emisor transmite una cadenaformada por palabras de un codigo unvocamente decodificable, para el receptor esdecidible determinar la secuencia de palabras de codigo que le fueron enviadas. Esdecir, sabra que si ha logrado separar la cadena de smbolos del alfabeto en palabrasdel codigo, entonces esa es la unica lectura posible. Si el codigo no es unvocamentedecodificable no es posible decir si cualquier separacion que haga es la correcta o no.

    EJEMPLO 1.15

    C1 = {c1 = 01, c2 = 11, c3 = 011101} sobre Z2 no es unvocamente decodificable dadoque la cadena: 011101 puede ser interpretada como c3 o como la secuencia c1 c2 c1.

    EJEMPLO 1.16

    El codigo C = {0, 10, 1101, 1110, 1011, 110110} sobre Z2 no es unvocamente decodifi-cable, la cadena 110110 puede interpretarse como la ultima palabra del codigo o biencomo la tercera seguida de la segunda.

    EJEMPLO 1.17

    El codigo C1 = {0, 01, 011, 111} sobre Z2, es unvocamente decodificable. A un codigode esta forma se le llama codigo coma porque al leer un mensaje escrito usando suspalabras hay un smbolo que hace las veces de delimitador o terminador de palabra, eneste caso el 0. Este es el codigo coma binario de cuatro palabras.

    Pero si hacemos una pequena modificacion el codigo deja de ser unvocamente deco-dificable, sea C2 = {0, 01, 10, 011, 111} sobre Z2, hemos anadido la palabra 10 al codigocoma 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 decodificacion unicasolo por anadir una palabra? Intuitivamente lo que ocurre es que hay demasiadaspalabras en el codigo. Si un codigo tiene muchas palabras cortas, entonces es facil queocurra 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 codigo. Para decirlo en terminos informales es excesivo el poder expresivodel codigo.

    Usando el codigo C2, por ejemplo, cuantas cadenas de 6 bits de longitud puedenformarse usando las palabras del codigo? Una cadena de longitud 6 puede formaseuniendo:

    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 posibilida-

    des.

    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 numero decadenas binarias diferentes de longitud 6 es 26 = 64, as que nuestro codigo C2 tiene unpoder de expresividad que rebasa lo indispensable para expresar todas las cadenas; esosignifica que debe haber mas de una manera de expresar algunas cadenas de longitud 6con palabras del codigo, 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 decodifi-cable.

    Nuestro analisis 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 nuestroejemplo nos hace ver: no puede haber demasiadas palabras en un codigo porque dejade ser unvocamente decodificable.

    Teorema 1.14 Sea C = {c1, c2, . . . , cq} un codigo r-ario y sea `i = lon (ci). Si C esunvocamente decodificable, entonces las longitudes de sus palabras de codigo debensatisfacer:

    qk=1

    1

    r`k 1

  • 1.4 Codigos 25

    Demostracion:

    Sea j el numero de palabras del codigo cuya longitud es j. Sea m = maxi{`i} lamaxima longitud de las palabras del codigo. Supondremos que C es unvocamentedecodificable.

    La suma de la desigualdad la podemos escribir como sigue:

    qk=1

    1

    r`k=

    mj=1

    jrj

    (1.16)

    la suma del lado izquierdo es sobre las q palabras del codigo, la suma del lado derechoagrupa las palabras de acuerdo a su longitud y por tanto recorre todas las posibleslongitudes.

    Recordemos que el numero total de cadenas de longitud k en un codigo r-ario es rk,as que el cociente

    jrj

    es la proporcion de palabras de longitud j que estan en el codigo.Sea u un entero positivo cualquiera: m

    j=1

    jrj

    u = (1r

    +2r2

    + + mrm

    )u=

    {ij}

    [i1ri1 iu

    riu

    ]=

    {ij}

    i1i2 iuri1+i2+...+iu

    (1.17)

    ij es una longitud de cadena, as que 1 ij m, dado que m es la maxima longitud.As que i1 + i2 + . . . + iu esta entre u (si cada longitud fuera mnima) y um (si cadalongitud fuera maxima):

    u i1 + i2 + . . .+ iu umSi agrupamos ahora todos los terminos de la suma que tienen el mismo denominador,

    es decir, el mismo valor de i1 + i2 + . . .+ iu, podemos escribir 1.17 como: mj=1

    jrj

    u = umk=u

    Nkrk

    (1.18)

    donde:Nk =

    i1+i2+...+iu=k

    (i1i2 . . . iu)

    Sera bueno que analizaramos que significa el producto de las s. La demostracionya es de suyo bastante poco didactica. j es el numero de palabras de codigo de longitudj, as que el producto es el numero total de cadenas de longitud

    k = i1 + i2 + . . .+ iu

  • 26 Preliminares

    construidas con u palabras de codigo de las longitudes especificadas por las ij .Si ahora se suma sobre todas las posibles combinaciones de longitudes que sumen k

    entonces realmente estamos obteniendo la cantidad total de cadenas de longitud k quepueden ser construidas con u palabras de codigo.

    Es decir, dado un conjunto de u longitudes que suman k, el producto de las s esel numero de cadenas de longitud total k que pueden formarse con palabras del codigode las longitudes del conjunto. Si luego ya no se nos proporciona el conjunto y se nosencomienda encontrar todas las combinaciones de u longitudes que cumplan con eserequisito, estaremos buscando realmente todas las cadenas de longitud k que puedenformarse pegando u palabras del codigo.

    Dado que C es unvocamente decodificable, podemos afirmar que3: no hay dossecuencias de u palabras de codigo que generen la misma cadena de longitud k. Porsupuesto hay a lo mas rk de tales secuencias, as que:

    Nk rk (1.19)Usando 1.19, 1.16 y 1.18:(

    qk=1

    1

    r`k

    )u=

    mj=1

    jrj

    u

    =umk=u

    Nkrk

    umk=u

    1

    um (1.20)Ahora bien, dados un entero cualquiera m y un numero real x, si x > 1 entonces

    existe un numero entero u tal que xu > um. La expresion 1.20 indica que si

    x =

    qk=1

    1

    r`k

    no es posible hallar u tal que xu > um, as que necesariamente:

    qk=1

    1

    r`k 1 (1.21)

    Hay que enfatizar que el teorema de McMillan no nos dice cuando un codigo esunvocamente decodificable, sino cuando no lo es, negando el teorema.

    3Mas delante haremos referencia a esta afirmacion.

  • 1.4 Codigos 27

    A la desigualdad del teorema de McMillan se le denomina desigualdad de Kraft, aspues, el teorema de McMillan dice que todo codigo unvocamente decodificable satisfacela desigualdad de Kraft pero no que todo codigo que la satisface es unvocamentedecodificable. Dado un codigo, si la desigualdad de Kraft no se cumple en el entoncesseguro no es unvocamente decodificable, si la satisface entonces no podemos decir si loes o no.

    La razon de esto es la afirmacion que hicimos notar en la demostracion del teorema:no hay dos secuencias de u palabras de codigo que generen la misma cadena de longitudk. Esto es cierto, pero que tal si es posible generarla con u palabras y ademas conv 6= u palabras. En ese caso bien podra ocurrir que para un codigo C, cada uno de lossumandos Nk

    rkcumpliera con ser menor o igual a 1, podra cumplirse la desigualdad de

    Kraft y que a pesar de todo C no fuera unvocamente decodificable. De hecho los codigosde los ejemplos 1.15 y 1.16 satisfacen la desigualdad de Kraft y no son unvocamentedecodificables.

    +1.5em1.4.2. +Codigos instantaneos

    Los codigos instantaneos son un caso particular de los codigos unvocamente deco-dificables.

    Definicion 1.13 Un codigo instantaneo es un codigo unvocamente decodificable en el que ladecodificacion puede hacerse leyendo secuencialmente de izquierda a derecha la cadenade palabras de codigo.

    EJEMPLO 1.19

    El codigo C = {c1 = 1, c2 = 10} es unvocamente decodificable, pero no instantaneo. Sise 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 nosabemos 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 ultima palabra recibida es c2.

    Varias veces hemos terminado de leer una palabra del codigo y no podemos deciraun si realmente la hemos terminado de leer o si es solo el prefijo de alguna otra palabra.

  • 28 Preliminares

    Esta ultima afirmacion nos da pretexto para formular una conjetura: En los codigosinstantaneos ninguna palabra completa del codigo constituye un prefijo, una subca-dena inicial, de otra palabra mas larga; equivalentemente ninguna palabra del codigocomienza con otra palabra de codigo mas corta.

    Definicion 1.14 Un codigo tiene la propiedad de prefijo si ninguna palabra de codigo es prefijode alguna otra.

    Es un poco paradojica la definicion anterior: un codigo es prefijo o tiene la propiedadde prefijo si sus palabras de codigo no son prefijos de otras.

    Ahora podemos formular nuestra conjetura mas formalmente:

    Teorema 1.15 Un codigo C es instantaneo si y solo si tiene la propiedad de prefijo.

    Demostracion:

    (Por reduccion al absurdo).Supongamos que C es instantaneo, en cuanto una palabra de codigo es leda puedeser interpretada. Supongamos que C no tiene la propiedad de prefijo, es decir,existe una palabra de codigo c que es prefijo de la palabra de codigo mas larga d.Entonces al recibir la secuencia cc, no es posible interpretar la primera c hastaleer un smbolo mas, dado que podra tratarse del principio de d. As C no esinstantaneo, lo que es una contradiccion.

    Supongamos que C tiene la propiedad de prefijo, sea n el numero de palabras decodigo ledas e interpretadas.

    1. n = 1 Se lee completamente una primera palabra c1. Dado que no hayninguna palabra que sea prefijo de otra entonces podemos estar seguros dehaber ledo c1

    2. Suponemos que se puede leer e interpretar secuencialmente n = k palabras. Sileemos una mas, cualquiera, n = k+1, dado que no dejamos nada pendiente yla (k+1)-esima no es prefijo de ninguna otra entonces puede ser interpretadainmediatamente.

    EJEMPLO 1.20

    Un ejemplo de codigo instantaneo es el codigo coma, como el primero mostrado enel ejemplo 1.17. El codigo coma de ocho palabras es el siguiente:

    Coma8 = {0, 10, 110, 1110, 11110, 111110, 1111110, 1111111}

  • 1.4 Codigos 29

    El cero actua como delimitador de las palabras del codigo, salvo en el caso de laultima palabra, que es facilmente distinguible dado que tiene una longitud predetermi-nada y es la unica constituida solo de 1.

    Este codigo es unvocamente decodificable y, mas aun, es instantaneo, ninguna pa-labra es prefijo de otra.

    En cambio el codigo siguiente, muy parecido al codigo coma, no es instantaneo:

    C = {0, 01, 011, 0111, 01111, 011111, 0111111, 01111111, 11111111}

    Hay palabras que son prefijo de otras, esto basta para decir que no es instantaneo.Sin embargo s es unvocamente decodificable, basta leer cualquier mensaje de derechaa izquierda para decodificar de la unica manera posible.

    Aclaremos un poco las cosas. En un codigo unvocamente decodificable solo hay una

    manera de dividir cualquier mensaje en palabras del codigo. En un codigo instantaneosolo hay una posible division de el mensaje en palabras y esta division puede hacerseleyendo secuencialmente los smbolos del mensaje de izquierda a derecha, cada vez quees ledo el ultimo smbolo de una palabra esta puede ser interpretada sin mas demora,nunca tenemos incertidumbre acerca de si realmente hemos acabado de leer una palabrao solo hemos ledo el principio de otra mas larga.

    Esta situacion contrapone dos ambitos diferentes, la diferencia sustancial entreun codigo unvocamente decodificable y uno instantaneo no radica en cualidades ma-tematicas, ambos son igualmente buenos desde el punto de vista puramente formal. Elproblema fundamental en ese ambito es la decidibilidad. En ambos tipos de codigos elmensaje codificado es siempre decidible, no hay ambiguedad. La diferencia radica en lascualidades computacionales. Esta bien, en un unvocamente decodificable el mensajepuede separarse en palabras de codigo, de una unica manera, quien sabe como, pero sepuede. Si pensaramos en un dispositivo automatico para decodificar un mensaje arbitra-rio codificado con un codigo unvocamente decodificable, dependiendo de las cualidadesdel codigo, debemos dotar al dispositivo de cierta capacidad para recordar aquello queya ha sido ledo pero aun no se ha decidido como interpretar, lo que pueden ser variaspalabras de codigo. En un codigo instantaneo, en cambio solo debemos recordar tantossmbolos como la longitud de palabra de codigo mas larga.

    Hay un teorema que nos permite decir si, dado un conjunto arbitrario de longitudes,existe un codigo instantaneo con palabras de esas longitudes justamente. Se lo debemosa Kraft (el de la desigualdad), quien lo formulo en 1949. Pero antes de proceder con elteorema haremos algunas operaciones que seran necesarias para demostrarlo.

    Retomaremos la desigualdad de Kraft recordando la equivalencia que mostramos enla expresion 1.16:

    qk=1

    1

    r`k=

    mj=1

    jrj

    (1.22)

  • 30 Preliminares

    Donde j es el numero de palabras de longitud j en el codigo. Si multiplicamos ydividimos por rm tenemos:

    qk=1

    1

    r`k=

    1

    rm

    mj=1

    jrmj (1.23)

    As que la desigualdad de Kraft es equivalente a:

    1

    rm

    mj=1

    jrmj 1 (1.24)

    es decir:

    mj=1

    jrmj rm (1.25)

    En la suma el ultimo termino es: mrmm = m, as que podemos escribir:

    m +

    m1j=1

    jrmj rm (1.26)

    como un equivalente a la desigualdad de Kraft.

    Teorema 1.16 Existe un codigo instantaneo r-ario C = {c1, c2, . . . , cq} con palabras delongitudes `1, `2, . . . , `q si y solo si estas longitudes satisfacen la desigualdad de Kraft:

    qk=1

    1

    r`k 1

    Demostracion:

    Sea c C una palabra en un codigo instantaneo C, lon (c) = j m 1, dado quec no debe ser prefijo de ninguna otra palabra en C entonces ninguna palabra dela forma cx con lon (x) = m j puede estar en C. Dada c hay exactamente rmjpalabras de la forma cx de longitud m que deben ser excluidas de C. Esto paracada posible eleccion de c de longitud j en el codigo C. Hay j posibles eleccionesde c y por cada una rmj palabras de longitud m que deben excluirse del codigo.As que, en total, hay:

    m1j=1

    jrmj

    palabras de longitud m que no deben estar en C.

  • 1.4 Codigos 31

    Las que s estan (m) mas las que no deben estar (la suma anterior) deben ser, alo mas, tantas como todas las posibles (rm). As que:

    m +

    m1j=1

    jrmj rm

    que es justo la expresion 1.26, equivalente a la desigualdad de Kraft.

    Por induccion sobre q.

    q r.Podemos elegir q smbolos (hay r disponibles) con los cuales comenzar qpalabras de longitudes `1, `2, . . . , `q, por lo tanto ninguna palabra es prefijode otra y el codigo es instantaneo.

    hipotesis: dadas las longitudes `1, `2, . . . , `q. Siqj=1

    1

    r`j 1 (1.27)

    entonces existe un codigo instantaneo con palabras de esas longitudes preci-samente.

    Sean `1, `2, . . . , `q+1 longitudes tales que: `1 `2 . . . `q+1 y que cumplencon:

    q+1j=1

    1

    r`j 1 (1.28)

    entonces, dado que `q+1 > 0, si lo excluimos de la suma tenemos:

    qj=1

    1

    r`j< 1 (1.29)

    Tenemos ahora un conjunto de longitudes `1, `2, . . . , `q que satisfacen la de-sigualdad de Kraft, de hecho la satisfacen estrictamente, por hipotesis deinduccion existe entonces un codigo instantaneo con esas longitudes. En esecodigo que ahora sabemos que existe habra entonces 1 palabras de longitud1, 2 palabras de longitud 2 y en general j palabras de longitud j y sabemosque se satisface:

    m +m1j=1

    jrmj < rm (1.30)

    con la desigualdad estricta, dado que se cumpla estrictamente la de Kraft.

    El primer sumando es el numero de cadenas de longitud m que estan en elcodigo, la suma que le sigue es el numero total de cadenas de longitud m

  • 32 Preliminares

    que no estan en el codigo y que no deben estar porque se construyen usandocomo prefijo a otras y el lado derecho de la desigualdad es el numero totalde posibles cadenas de longitud m.

    Dado que la desigualdad anterior es estricta entonces concluimos que falta almenos una palabra de longitud m que no esta en el codigo pero que podraestar, porque en la suma contamos a todas las que no pueden estar. Asque incluimos esa palabra, que ya sabemos que existe y que tiene longitudm y ya tenemos un codigo con q + 1 palabras de longitudes `1, `2, . . . , `q+1instantaneo.

    EJEMPLO 1.21

    Si se nos plantea la pregunta existira algun codigo instantaneo binario con cincopalabras de longitudes 3, 3, 2, 2, 2? Podemos utilizar el teorema de Kraft.

    qk=1

    1

    r`k= 2

    (1

    23

    )+ 3

    (1

    22

    )= 4/4 = 1

    la desigualdad de Kraft se cumple, de hecho se cumple con la igualdad estricta en estacaso, as que s existe un codigo binario instantaneo con las longitudes dadas.

    El hecho de que se cumpla la igualdad estricta significa que no es posible anadirle

    al codigo instantaneo una palabra mas, cualquier anadidura ocasionara que el codigoresultante ya no fuera instantaneo. En casos como el del ejemplo, en los que se cumplela igualdad estricta, se dice que el codigo en cuestion es maximal.

    Definicion 1.15 Un codigo r-ario instantaneo C es maximal si no esta contenido en otrocodigo r-ario instantaneo de mayor tamano.

    Por supuesto mayor tamano aqu, significa con mayor numero de palabras.

  • 1.5 Anotaciones finales 33

    1.5 +Anotaciones finales

    Es conveniente recapitular lo visto acerca de los teoremas de McMillan y Kraft.

    El teorema de McMillan dice que si un codigo es unvocamente decodificable entoncescumple con la desigualdad de Kraft, es decir, la desigualdad de Kraft es una condicionnecesaria para que un codigo sea unvocamente decodificable, pero no es suficiente. Deall que digamos que el teorema nos provee de un mecanismo para probar cuando uncodigo no es unvocamente decodificable: si no cumple con algo que es necesario paraserlo, no puede serlo.

    El teorema de Kraft por su parte nos dice que si damos un conjunto de longitudesque cumplan con la desigualdad de Kraft entonces existe un codigo instantaneo conpalabras de esas longitudes precisamente, y que si nos es dado un codigo instantaneoentonces debe cumplir con la desigualdad de Kraft. Pero no dice que si nos es dado uncodigo que cumpla con la desigualdad entonces ese codigo es instantaneo, puede no serprecisamente ese, solo sabremos que existe alguno con las mismas longitudes que el quenos dieron y que s es instantaneo pero no dice nada respecto al que tenemos enfrente,para saber si ese precisamente es instantaneo habra que verificar que cumpla con lapropiedad de no tener prefijos.

    Si estuvieramos en la situacion de poseer un par de codigos con las mismas carac-tersticas, es decir, el mismo tamano y las mismas longitudes de palabras, uno de ellosunvocamente decodificable y el otro instantaneo, por supuesto que preferiramos utilizareste ultimo, si las caractersticas son las mismas, son utiles en las mismas circunstancias,pero el instantaneo nos ofrece indiscutibles ventajas computacionales.

    Dado un codigo unvocamente decodificable, si encadenamos los resultados de McMi-llan y de Kraft, tenemos, por el primero, que este codigo debe satisfacer la desigualdadde Kraft. Dado este primer resultado, el segundo teorema nos asegura que existe uncodigo instantaneo de las mismas caractersticas, as que realmente para que quedarsecon el unvocamente decodificable si debe haber uno de iguales caractersticas y deco-dificacion mas simple?

    +Ejercicios

    1.1 Cual es el numero de cadenas en Zn2 con exactamente k n unos? Cuantas sonen Znr ?

    1.2 Si en este momento fueran las 13:00 horas en punto, que hora sera dentro de 144horas?, y dentro de 295?, por que?

  • 34 Preliminares

    1.3 Demuestre que un numero escrito en notacion decimal es divisible por 3 si y solosi la suma de sus dgitos tambien lo es.

    1.4 Z6 es un campo finito? Por que?

    1.5 Compruebe que en P5(Z5)

    x4 3x3 + 2x2 + 4x 1 = x+ 3 (mod x2 2x+ 3)

    1.6 Considerese el conjunto de todos los polinomios de grado menor a 3 con coeficientesen Z3. P1(x) = x2 + 1 es un polinomio irreducible en este conjunto, al igual queP2(x) = x

    2 +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 elementosdel campo finito de nueve elementos son generados por y por ?

    1.7 Cual es el numero de posibles prefijos de una palabra de longitud n en base r?

    1.8 El codigo 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 Demuestre que todo codigo instantaneo es unvocamente decodificable.

  • Codificacioneficiente 2

    2.1 +Arbol de decodificacion

    El hecho de que en los codigos instantaneos, revisados en el captulo anterior, seaposible leer secuencialmente un mensaje codificado de izquierda a derecha, smbolo asmbolo e irlo decodificando al vuelo nos hace pensar en algunas cosas. Probablementea 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 elque se ha terminado de reconocer una palabra de codigo y en ese instante se producecomo smbolo de salida el smbolo del alfabeto de la fuente que le corresponde bajo elesquema de codificacion usado.

    Probablemente a algunos otros les haga pensar en un arbol de decision. Cada vezque se recibe un smbolo en el alfabeto r-ario del codigo, se desciende desde un nodode un arbol por una de sus r posibles ramas hasta otro nodo. El proceso de descensocontinua hasta que se ha terminado de leer completamente una palabra de codigo, enese momento el nodo actual del proceso sera una hoja asociada a la palabra de codigoleda y que nos permite determinar el smbolo del alfabeto fuente que es codificado porella.

    Ambas visiones son igualmente correctas, pero para fines de demostraciones formalesposiblemente sea un poco mas util el enfoque de arboles.

    Si r es la base del codigo, entonces cada nodo del arbol de decodificacion tiene, a lo

    35

  • 36 Codificacion eficiente

    0

    0

    0

    0

    0

    1

    1

    1 1

    1

    A B

    C

    D E

    F

    A

    B

    C

    D

    E

    F

    =

    =

    =

    =

    =

    = 111

    110

    10

    011

    010

    00

    Figura 2.1: Arbol de decodificacion para el codigo del ejemplo.

    mas, r hijos. Cada arista de salida de un nodo tiene asociada como etiqueta un smbolodel alfabeto r-ario del codigo, si el smbolo ledo del mensaje codificado es c entoncesrecorremos la arista de salida del nodo actual etiquetada c, llegamos as a un nuevonodo, hijo del anterior desde el que podemos repetir el proceso leyendo el siguientesmbolo del mensaje. Evidentemente al iniciar la lectura del mensaje el nodo inicial esla raz del arbol r-ario de decodificacion. Cada vez que se lee una palabra completase llega a una hoja del arbol y antes de leer el siguiente smbolo se regresa a la raz.Asociada con cada hoja hay una palabra de codigo y, usando la biyeccion de la funcionde codificacion, tambien un smbolo del alfabeto fuente.

    EJEMPLO 2.1

    El codigo 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.

    Asociado pues a todo codigo r-ario instantaneo tenemos un arbol de decodificacion

    r-ario. Con esto en mente podemos empezar a pensar en cosas interesantes.

  • 2.2 Codificacion de Shannon-Fano 37

    Que tal si todas las palabras de un codigo instantaneo fueran del mismo tamano. Siel numero de palabras es q significa que las q hojas del arbol de decodificacion asociadoal codigo estan a la misma profundidad en el arbol, para llegar a cualquiera de ellasdesde 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, enel siguiente r2, r3 en el siguiente y rn en el n-esimo nivel. As que si todas las hojasestan en un mismo nivel, resulta que rn = q lo que significa que n = logr(q). Ademas, sitodas las hojas estan a la misma profundidad n, entonces las longitudes de las palabrasde codigo asociadas a ellas son siempre n. Como se ve la desigualdad de Kraft en estecaso:

    qk=1

    1

    rn=

    qk=1

    1

    rlogr(q)=

    qk=1

    1

    q= q

    (1

    q

    )= 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 unnovedoso punto de vista. Si nos topamos con un codigo r-ario instantaneo en el que todaslas palabras sean de la misma longitud y tenga rk palabras, para alguna k, entoncessabemos que debe ser maximal. Esto es, de hecho, un codigo de bloque o de longitudfija visto como un caso particular de codigo instantaneo.

    En el captulo anterior se presento un ejemplo de codigo maximal de longitud variableinstantaneo, sirva dicho ejemplo para dejar claro que no todos los codigos maximalestienen longitud fija y por tanto, sus arboles de decodificacion tampoco tienen por quetener todas sus hojas al mismo nivel.

    2.2 +Codificacion de Shannon-Fano

    El codigo de Shannon-Fano fue desarrollado independientemente por Claude Shan-non, el padre de la teora de la informacion, en Bell Labs y R. M. Fano en el MIT afinales de la decada de 1940.

    Es un codigo que busca la representacion eficiente de los datos que codifica. Poseelongitud variable y proporciona codigos mas largos para los smbolos de la fuente menosprobables y mas cortos para los mas probables. Por supuesto se requiere de conocerpreviamente la distribucion de probabilidad de los smbolos del alfabeto de la fuente.

    Para obtener el codigo de Shannon-Fano de un alfabeto fuente dadas las proba-bilidades (o equivalentemente las frecuencias) de cada smbolo en el se procede comosigue:

  • 38 Codificacion eficiente

    1. Se ordena crecientemente1 la lista de todos los smbolos del alfabeto fuente deacuerdo a su probabilidad.

    2. Se selecciona un punto de corte que divida la lista en dos partes. El criterio paraseleccionar el punto de corte es que la suma de las probabilidades de los smbolosen la sublista de un lado del corte sea lo mas parecida posible a la suma de lasprobabilidades en la sublista del otro lado.

    3. A cada uno de los smbolos en una de las sublistas se les asocia un cero, a los dela otra sublista un uno.

    4. A cada sublista se le aplica recursivamente el mismo procedimiento descrito en losdos incisos anteriores.

    EJEMPLO 2.2

    Supongase que tenemos el alfabeto fuente {A,B,C,D,E, F} con las siguientes frecuen-cias:

    Smb. Frec.

    A 3

    B 5

    C 10

    D 12

    E 18

    F 22

    En la figura 2.2 se muestra el alfabeto ordenado y en las primeras tres columnasla diferencia entre la suma superior y la inferior, la suma inferior y la suma superior,respectivamente. Cuando la diferencia es menor (10 en el ejemplo) se elije ese comoel punto de corte (senalado con una lnea). Para las siguientes iteraciones ya no semuestran las sumas, solo los puntos de corte.

    El algoritmo de Shannon-Fano es el 2.1. En el idxini e idxfin son, respectivamente

    el ndice inicial y final de la particion a procesar de la lista original, evidentemente laprimera vez que se llama al algoritmo son el ndice inicial y el final de la lista completa.

    1Adoptamos la convencion de ordenar crecientemente, en realidad el orden puede ser creciente odecreciente.

  • 2.3 Codificacion de Huffman 39

    3

    8

    18

    30

    48

    70

    70

    62

    52

    40

    22

    67

    10

    34

    54

    64

    26

    A

    B

    C

    D

    E

    F

    12

    3

    10

    18

    22

    5

    0

    0

    0

    0

    1

    1

    0

    0

    1

    0

    0

    0

    1

    1

    0 0

    1

    Figura 2.2: Obtencion del codigo de Shannon-Fano para los smbolos del ejemplo.

    La funcion suma obtiene la suma de las frecuencias de los elementos en la lista entrelos ndices que recibe como argumentos. La funcion arbolbin construye un arbol binariode un solo nodo (la raz) cuyo contenido es el argumento de la funcion. En la segundallamada a arbolbin (lnea 16) el argumento no importa (cualquiersimb). Las funcionessetSubIzq y setSubDer establecen el subarbol izquierdo y derecho de la instancia de arbolbinario que las llama, en este caso arbol es el identificador de dicha instancia. Hay quenotar que en las lneas 17 y 18 se llama recursivamente al proceso de construccion, el ifde la lnea 1 establece la condicion de terminacion de la recursion. Al final el procesoregresa 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 susfrecuencias, no es unico. Basta con cambiar todos los ceros por unos, por ejemplo, paraobtener otro esquema de codificacion que, siendo de Shannon-Fano, es diferente del quese obtuvo primero. Si hay dos smbolos con igual frecuencia basta con intercambiar suscodigos para obtener otra codificacion de Shannon-Fano.

    2.3 +Codificacion de Huffman

    En 1952 Huffman publico un metodo que, al igual que el de Shannon-Fano, buscarepresentar los smbolos de un alfabeto fuente de acuerdo con sus frecuencias y tambienes instantaneo.

    Al igual que en la codificacion de Shannon-Fano se requiere una lista de todos lossmbolos del alfabeto fuente con sus frecuencias. El procedimiento de codificacion de

  • 40 Codificacion eficiente

    Algoritmo 2.1 Algoritmo de construccion del arbol de decodificacion de Shannon-Fano.

    Shannon-Fano(idxini, idxfin, lista)1 if (idxini = idxfin) then2 return (arbolbin(lista[idxini]))3 else4 idxpart = idxini5 ssup = suma(lista, idxini, idxpart)6 sinf = suma(lista, idxpart+ 1, idxfin)7 dif = | ssup sinf |8 difant = dif9 while (difant dif) do

    10 idxpart = idxpart+ 111 ssup = suma(lista, idxini, idxpart)12 sinf = suma(lista, idxpart+ 1, idxfin)13 difant = dif14 dif = | ssup sinf |15 endwhile16 arbol = arbolbin(cualquiersimb)17 arbol.setSubIzq ( Shannon-Fano (idxini, idxpart 1, lista))18 arbol.setSubDer ( Shannon-Fano (idxpart, idxfin, lista))19 return arbol20 endif21 end

  • 2.3 Codificacion de Huffman 41

    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 unico nodo, laraz.

    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 nuevonodo raz.

    4. Introducir un nuevo elemento a la lista, asociado con el arbol recien construido. Elvalor del smbolo no es relevante, la frecuencia debe ser la suma de las frecuenciasde los smbolos que se unieron. Al introducir este nuevo elemento a la lista debeasegurarse que esta permanece ordenada.

    5. Regresar al paso 3 hasta que en la lista haya un unico elemento; el arbol asociadoa 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 representaremoscada elemento en la lista como una pareja ordenada (smbolo, frecuencia). As, la listaordenada 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) asociadosa d y e se juntan en un solo arbol con d como hijo izquierdo y e como derecho, el pesode 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 asociaal nuevo nodo.

    En el siguiente paso se unen el arbol asociado a 1 y el arbol (de hecho otra vez unasola hoja) asociado a b. El resultado es un nuevo nodo etiquetado con 2 tal como semuestra en la figura 2.3. La lista ordenada es:

    {(c, 12), (a, 15), (2, 20)}

  • 42 Codificacion eficiente

    d e

    b c a

    1

    2

    4

    3

    4 6

    10 10

    20

    12 15

    27

    471

    11

    1

    0

    0

    0

    0

    Figura 2.3: El arbol de decodificacion de Huffman para el codigo del ejemplo. Bajo cadanodo se ha puesto la suma de las frecuencias del subarbol del que es raz, cada nodose ha etiquetado con un smbolo, en el caso de las hojas con un smbolo del alfabetofuente, en el caso de los nodos interiores con un smbolo i sin importancia. Las aristasde 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 tieneun peso de 27. La lista resultante sera:

    {(2, 20), (3, 27)}

    En el ultimo paso se unen estos unicos dos smbolos para formar el arbol de decodi-ficacion que se muestra en la figura 2.3. El peso asociado a la raz es de 20 + 27 = 47.

    El algoritmo de Huffman es el 2.2. En el se esta suponiendo que cada elemento de la

    lista es en realidad una estructura constituida por un arbol binario, al que denotaremosab, y una frecuencia, a la que denotaremos frec. El atributo frec contiene la suma de lasfrecuencias de aquellos smbolos que se encuentran en el atributo ab. La funcion (mejordicho: metodo, en terminologa orientada a objetos) getMin se encarga de encontrar yregresar el elemento de la lista con la mnima frecuencia y eliminaMin de eliminarlo;con vistas al analisis que haremos posteriormente, supondremos que el algoritmo recibela lista, ordenada crecientemente respecto al atributo frec, en una estructura de datosoptima para llevar a cabo estas dos operaciones de manera optima. Las funcionessetSubIzq y setSubDer establecen al subarbol izquierdo y derecho, respectivamente, dela instancia de arbol que las llama, en el caso del algoritmo 2.2, el nombre de la instanciaes arbol. getArbol regresa el atributo ab del elemento que llama a la funcion y setArbolestablece dicho atributo, getFrec y setFrec hacen lo analogo para el atributo frec. getElementrega el elemento de la lista indexado por el argumento de la funcion, supondremosque el ndice inicial es el 0. insertaOrden inserta el elemento que recibe como argumentoen la lista preservando el orden respecto al atributo frec.

  • 2.4 Longitud promedio de un codigo 43

    Algoritmo 2.2 Algoritmo de Huffman

    Huffman(lista)1 while (lista.longitud > 1) do2 elem1 = lista.getMin3 lista.eliminaMin4 elem2 = lista.getMin5 lista.eliminaMin6 arbol = arbolbin(cualquiersim)7 arbol.setSubIzq(elem1.getArbol)8 arbol.setSubDer(elem2.getArbol)9 elemnuevo.setArbol(arbol)

    10 elemnuevo.setFrec(elem1.getFrec + elem2.getFrec)11 lista.insertaOrden(elemnuevo)12 endwhile13 return (lista.getElem(0).getArbol)14 end

    Al igual que en el caso de la codificacion de Shannon-Fano, el codigo de Huffmanobtenido para un alfabeto dadas sus frecuencias, no es unico, basta cambiar la conven-cion derecha = 1, izquierda = 0 por la complementaria para tener otra codificacion deHuffman.

    Calculemos ahora la complejidad del algoritmo de Huffman mostrado en el algoritmo2.2 y que suponemos que recibe la lista de smbolos ya ordenada en una estructura dedatos optima para hacer busquedas, un heap por ejemplo. Si denotamos con n el numerode smbolos en el alfabeto fuente, en cada iteracion solamente tenemos que buscar a losdos elementos de menor frecuencia, e insertar al smbolo resultante de unirlos, estonos tomara O(3 log(n)) = O(log(n)) operaciones de comparacion. Esto lo hacemosen cada iteracion y hay n iteraciones del ciclo, as que en sntesis la complejidad delalgoritmo de Huffman es O(n log(n)).

    2.4 +Longitud promedio de un codigo

    Hemos presentado ya dos esquemas de codificacion diferentes para representar datoseficientemente. Pero, como evaluamos que tan bueno es un esquema?, habra algunesquema mejor que otros? Para resolver estas preguntas debemos inventar una metricaque nos proporcione un criterio para decidir el grado de eficiencia de un codigo.

    La informacion que poseemos es: la frecuencia de aparicion de cada smbolo del

  • 44 Codificacion eficiente

    alfabeto fuente y el codigo que le es asociado. Con base en las frecuencias podemosestimar la probabilidad de aparicion de cada smbolo. Mientras mayor sea la cantidadde datos producidos por la fuente que han sido observados y considerados para contarlas frecuencias, mayor sera nuestra confianza de que esas frecuencias nos permiten esti-mar la distribucion de probabilidades de los smbolos. Si en total hemos observado Nsmbolos producidos por una fuente y de ellos Fi han sido el smbolo i-esimo entoncesnuestro estimador para la probabilidad de aparicion de i-esimo es el cociente Fi/N alque denotaremos pi. Debemos definir esto formalmente.

    Definicion 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 proba-bilidad P : S 7 [0, 1] que asocia a cada smbolo si del alfabeto fuente una probabilidadP (si) = pi.

    Ahora podemos considerar la variable aleatoria longitud del codigo asociado al smboloproducido 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 comose define a continuacion.

    Definicion 2.2 Sea S = (S, P ) una fuente de informacion y sea (C, f) un esquema de codi-ficacion para S = {s1, s2, . . . , sq}. La longitud promedio de palabra de codigo de (C, f)es:

    lon(C, f) =

    qi=1

    [P (si) lon (f(si))] (2.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 depalabra es:

    lon(C1, f1) = 2 217

    + 1 217

    + 3 817

    + 4 517

    =50

    17

    En el esquema (C2, f2), donde C2 es tambien un codigo binario, definido comosigue: f2(a) = 01010, f2(b) = 00, f2(c) = 10, f2(d) = 11. La longitud promediode palabra es:

    lon(C2, f2) = 5 217

    + 2 217

    + 2 817

    + 2 517

    =40

    17

  • 2.5 La eficiencia del esquema de codificacion de Huffman 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 probable-mente mas corto si lo hicieramos usando el segundo esquema de codificacion quesi lo hicieramos con el primero. Hay que notar algo importante. Si codificaramos,por ejemplo, el mensaje aa . . . a resultara mejor usar el esquema 1, pero, dadala distribucion de probabilidad de la fuente, este no es un mensaje representativode la fuente. Nuestra afirmacion de cual esquema es mejor, mas eficiente, se basaen la distribucion de probabilidades, buscamos como codificar de la manera maseficiente posible aquellos mensajes que son mas representativos de lo que sueleproducir la fuente.

    2. Sea S = {A,B,C,D,E} el alfabeto fuente y {15, 7, 6, 6, 5} las frecuencias respec-tivas. 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 comoresultado: lon(SF ) = 2.28

    Usando el esquema de Huffman: Huff(A) = 0, Huff(B) = 111, Huff(C) =101, Huff(D) = 110, Huff(E) = 100. Lo que nos da como resultado: lon(Huff) =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, engeneral, la diferencia entre las longitudes promedio de ambas codificaciones sueleser pequena.

    2.5 +La eficiencia del esquema de codificacion de Huffman

    Hay que notar una caracterstica del esquema de Huffman dada por su construccion:los smbolos del alfabeto S, estan asociados biyectivamente a las hojas del arbol deHuffman. No hay smbolo sin hoja ni hoja sin smbolo.

    Demostraremos que no puede haber un esquema de codificacion instantaneo maseficiente que los de Huffman. Para ello debemos primero demostrar un par de lemasque nos seran utiles.

    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) tienelongitud promedio de palabra mnima entonces m1 m2 . . . mq

  • 46 Codificacion eficiente

    Demostracion:

    Por reduccion al absurdo.

    Supongamos que (C, f) es un esquema instantaneo de longitud promedio mnima yque p1 p2 . . . pq pero no es cierto que m1 m2 . . . mq. Es decir, hay almenos una pareja (mi, pi) tal que mi > mi+1 y pi pi+1.

    La longitud promedio en este caso es:

    lon(C, f) =i1j=1

    pjmj +mipi +mi+1pi+1 +

    qj=i+2

    pjmj

    Definamos ahora un nuevo esquema de codificacion (C, f ), identico a (C, f) salvoque intercambia ci con ci+1. En este caso:

    lon(C, f ) =i1j=1

    pjmj +mi+1pi +mipi+1 +

    qj=i+2

    pjmj

    Si calculamos la diferencia:

    lon(C, f) lon(C, f ) = mipi +mi+1pi+1 mi+1pi mipi+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

    de donde lon(C, f) lon(C, f ) por lo que (C, f) no es un esquema de longitud promediomnima, 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, . . . , pqy longitudes: m1,m2, . . . ,mq respectivamente. Si el esquema (C, f) tiene longitud pro-medio de palabra mnima entonces mq1 = mq y las palabras cq1 y cq difieren solo ensu ultimo bit.

    Demostracion:

    Por reduccion al absurdo.

    Supongase que el esquema (C, f) posee longitud promedio mnima de palabra conC = {c1, c2, . . . , cq1, cq} y f(s1) = c1, f(s2) = c2, . . . f(sq1) = cq1, f(sq) = cqPodemos suponer que p1 p2 . . . pq y, por el lema anterior sabemos que entonceslas longitudes estan ordenadas: m1 m2 . . . mq1 mq.

  • 2.5 La eficiencia del esquema de codificacion de Huffman 47

    Supongase ademas que mq1 < mq. Consideremos la palabra cq en C y eliminemossu ultimo bit, llamemos cq a esta palabra cuya longitud es necesariamente mq1.

    Como C es instantaneo no existe ninguna palabra en C que sea igual a cq porquede haberla sera prefijo de cq y el codigo no sera instantaneo. Ade