Está en la página 1de 3

Universidad Abierta y a Distancia de Mxico

Computacin I. Unidad 2. Actividad 2. Parmetros para comparacin de algoritmos Rodrigo Galindo Murillo. AL10507103. Introduccion. No importa que tan rapidas sean las computadoras o las redes modernas, los usuarios siempre necesitaran servicios de mayor velocidad. Para reducir el volumen de datos que se transfieren, generalmente se utiliza cierto tipo de compresin. Por eso, este tema resulta ser un interesante campo de investigacin dentro de las Ciencias de la Computacion. Existen muchos tipos de algoritmos de compresin de datos, algunos no tienen perdidas, otros pierden una parte de los datos que comprimen, pero el principal objetivo es el ahorro de almacenamiento y una mayor velocidad de transferencia. i. Run-Length Encoding

Como primer ejemplo, tenemos un algoritmo sencillo conocido como RLE o Run-length encoding. Este algoritmo consiste en reemplazar largas secuencias de datos repetitivos con un solo digito, seguido por un contador indicando el nmero de veces que se repite el digito. Por ejemplo:

aaaaaaaaaabbbaxxxxyyyzyx
Esta variable es de 24 dgitos y tiene muchas repeticiones. Utilizando el RLE, podemos reemplazarlo por una variable ms corta como esta:

a10b3a1x4y3z1y1x1
Ahora la variable es de 17 dgitos, que es aproximadamente un 70% ms corta. Se puede optimizar an ms el algoritmo para lograr una mayor compresin eliminando los dgitos unitarios (los que indican que solo hay un digito), quedando:

a10b3ax4y3zyx
Este algoritmo se usa tambin para arreglos y se ha usado para imgenes, como el formato GIF y TGA.

ii.

Variable-Length Encoding

En este caso, el algoritmo utiliza un nmero variable de bits para representar los datos que se quieren comprimir. Este algoritmo permite una compresin y descompresin de una serie de bits sin error o lossless. Estos cdigos se utilizan con mucha frecuencia por lo mencionado y tienen mucha aplicacin, porque son ms eficientes que los cdigos de longitud fija. Esto es, el nmero de dgitos que se requieren para representar un mensaje dado con un cdigo de longitud variable es frecuentemente menor que si se compara con un RLE. iii. Construccin del Cdigo Huffman

El algoritmo de Huffman es un algoritmo para la construccin de cdigos de Huffman, desarrollado por David A. Huffman en 1952. Este algoritmo toma un alfabeto de n smbolos, junto con sus frecuencias de aparicin asociadas, y produce un cdigo de Huffman para ese alfabeto y esas frecuencias.

El algoritmo consiste en la creacin de un rbol binario que tiene cada uno de los smbolos por hoja, y construido de tal forma que siguindolo desde la raz a cada una de sus hojas se obtiene el cdigo Huffman asociado. 1. Se crean varios rboles, uno por cada uno de los smbolos del alfabeto, consistiendo cada uno de los rboles en un nodo sin hijos, y etiquetado cada uno con su smbolo asociado y su frecuencia de aparicin. 2. Se toman los dos rboles de menor frecuencia, y se unen creando un nuevo rbol. La etiqueta de la raz ser la suma de las frecuencias de las races de los dos rboles que se unen, y cada uno de estos rboles ser un hijo del nuevo rbol. Tambin se etiquetan las dos ramas del nuevo rbol: con un 0 la de la izquierda, y con un 1 la de la derecha. 3. Se repite el paso 2 hasta que slo quede un rbol.

Con este rbol se puede conocer el cdigo asociado a un smbolo, as como obtener el smbolo asociado a un determinado cdigo. Para obtener el cdigo asociado a un smbolo se debe proceder del siguiente modo: 1. 2. 3. 4. 5. 6. Comenzar con un cdigo vaco Iniciar el recorrido del rbol en la hoja asociada al smbolo Comenzar un recorrido del rbol hacia arriba Cada vez que se suba un nivel, aadir al cdigo la etiqueta de la rama que se ha recorrido Tras llegar a la raz, invertir el cdigo El resultado es el cdigo Huffman deseado

Para obtener un smbolo a partir de un cdigo se debe hacer as: 1. Comenzar el recorrido del rbol en la raz de ste 2. Extraer el primer smbolo del cdigo a descodificar 3. Descender por la rama etiquetada con ese smbolo Un ejemplo de uso se ve ilustrado en la siguiente imagen:

La tabla describe el alfabeto a codificar, junto con las frecuencias de sus smbolos. En el grfico se muestra el rbol construido a partir de este alfabeto siguiendo el algoritmo descrito. Se puede ver con facilidad cul es el cdigo del smbolo E: subiendo por el rbol se recorren ramas etiquetadas con 1, 1 y 0; por lo tanto, el cdigo es 011. Para obtener el cdigo de D se recorren las ramas 0, 1, 1 y 1, por lo que el cdigo es 1110.

La operacin inversa tambin es fcil de realizar: dado el cdigo 10 se recorren desde la raz las ramas 1 y 0, obtenindose el smbolo C. Para descodificar 010 se recorren las ramas 0, 1 y 0, obtenindose el smbolo A. Referencias consultadas y para saber ms: Berstel, Jean; Perrin, Dominique; Reutenauer, Christophe (2010). Codes and automata. Encyclopedia of Mathematics and its Applications 129. Lossless Image Compression by Dmitry Pechyonyj - Alexander Bogomjakov (cis.cs.technion.ac.il, consultado el 5 de Diciembre, 2013) Adenso-Daz, Belarmino; Laguna, Manuel (2006). Fine-Tuning of Algorithms Using Fractional Experimental Designs and Local Search. Operations research 54 (1): pp. 99114.

También podría gustarte