jueves, 25 de abril de 2013

Tarea #4 - Codigo Adaptativo

Para esta semana se nos encargo un método de compresión que se adaptara según la entrada.

La idea es que el programa lea una cadena en paquetes y cuando el paquete llegue a cierto limite el python sea capaz de comprimirlo y enviarlo. La variante es que se tiene que estar adaptando según el paquete de entrada.

La idea que yo tengo/tenia era tomar la frecuencia de las letras del alfabeto español y con el primer paquete que le llegue al python hacer lo siguiente:

1.- Identificábamos las letras únicas del paquete y las ordenábamos por frecuencias de apariciones.
2.- Sustituíamos o creábamos otra lista(conservando el orden) pero ahora con el agregábamos el  valor de la probabilidad del que la letra apareciera en el alfabeto español.
3.- Escogíamos un umbral que fuera el promedio de la suma de frecuencias del alfabeto
4.- Por cada paquete se aseguraba que la letra no estuviera ya anteriormente en el grafo, esto para eliminar el ruido de que haya repetidos.
5.- El nodo "padre" tenia un nombre único que fuera incapaz de confundirse y agregábamos los nodos con la siguiente regla.... "Si el valor el MAYOR al valor del nodo actual se agrega en la DERECHA; si es MENOR en la IZQUIERDA.
6.- Esto produciría un árbol que crece según la entrada y se acomoda según la frecuencia de las letras que aparecen en el pedazo de mensaje.
7 .- Con el árbol ya creado, lo único que faltaría seria recorrerlo para obtener el código para comprimir y lo mismo pero al revés para descomprimirlo.

Pero al intentar codificar esto tuve varios errores con lógica porque mis neuronas necesitan recargarse, pero bueno, se hizo un intento y se logro un avance parcial.
Estas son los fragmentos parciales mas importantes del programa.