Departamento de Computacin y Tecnologa de la Informacin
Organizacin del Computador CI-!"# Proyecto 1 Objetivos Generales: realizar un programa en lengua$e de %a$o nivel del simulador de la m&'uina (I)S* S)I(+ Objetivos Especficos: o ,d'uirir destrezas en el lengua$e de %a$o nivel del simulador S)I( o ,prender a realizar la traduccin de alto nivel a %a$o nivel de instrucciones comunes o ,prender a utilizar distintas estructuras de datos a %a$o nivel+ o ,d'uirir destrezas en el mane$o de su%rutinas y la aplicacin de las convenciones de responsa%ilidad compartida Introduccin -a codificacin de .uffman es una t/cnica para la compresin de datos ampliamente usada y muy efectiva+ 0ste algoritmo le asigna secuencias %inarias 1cdigos2 a los sm%olos de un alfa%eto de forma tal de utilizar la menor cantidad de %its posi%les+ -a idea del algoritmo de .uffman es 'ue los datos a ser comprimidos contienen sm%olos 'ue aparecen con mayor frecuencia y otros 'ue aparecen muy poco* asign&ndole un cdigo m&s corto a los 'ue m&s aparecen+ Supongamos 'ue en un cierto te3to aparecen 4 caracteres diferentes y la frecuencia de aparicin de cada uno de ellos es la siguiente5 a % c d e f 6recuencia 7# " "8 "4 9 # : Cmo podemos codificar los caracteres para comprimir el espacio ocupado utilizando un cdigo binario ; Solucin 1 : Cdigo de longitud fi$a+ )ara 4 caracteres se necesitan %its a % c d e f Fija <<< <<" <"< <"" "<< "<" Solucin 2 : Cdigo de longitud varia%le en el 'ue los m&s frecuentes tienen el cdigo m&s corto+ =estriccin5 ning>n cdigo es prefi$o de otro+ " a % c d e f Variable < "<" "<< """ ""<" ""<< 0sta t/cnica de codificacin se denomina cdigo prefijo+ )ara la codificacin de un te3to* %asta con concatenar el cdigo de cada uno de los caracteres 'ue conforman dic?o te3to aabacd <<"<"<"<<""" <<"<"<"<<""" -a decodificacin de un te3to cifrado es f&cil pues ning>n cdigo es prefi$o de otro cdigo y por lo tanto @O ?ay am%igAedad+ "<"<"""<""""<"""<< %adadcf )ara la aplicacin de la codificacin .uffman es necesario representar el cdigo prefi$o mediante un &r%ol %inario* en donde5 -as ?o$as representan los sm%olos o los caracteres* y 0l camino de la raz a las ?o$as con la interpretacin < a la iz'uierda y " a la derec?a nos da el cdigo prefi$o )ara el e$emplo anterior* la codificacin de longitud varia%le sera 8 a:7# b:" bb: c:"8 d:"4 e:9 f:# < < < < < " " " " "<< ## 8# < "7 " @ote 'ue los caracteres 'ue presentan mayor frecuencia o%tienen un cdigo con menor longitud y los menos frecuentes tienen cdigos de mayor longitud+ , continuacin se muestra como* a partir de una lista de frecuencias* se genera el &r%ol %inario usado para generar los cdigos .uffman+ Ejemplo de funcionamiento Fase 1 5 Caracteres colocados en orden creciente de frecuencia+ Fase ! y posteriores5 6usionar ?asta o%tener un slo &r%ol manteniendo el ordenamiento creciente+ Se fusionan el nodo f y e 'ue son los menores en frecuencia+ ,l fusionarlos se o%tiene una frecuencia con$unta de "7 1 # B 9 2+ 0ste nuevo nodo es colocado en la lista respetando el ordenamiento de menor a mayor+ )ara el desarrollo de nuestro proyecto* en caso de tener nodos con la misma frecuencia* vamos a colocar el nuevo nodo de primero entre los 'ue tengan igual frecuencia+
, continuacin se fusionan los dos nodos con menor frecuencia 1 c y b 2* o%teni/ndose una frecuencia con$unta de 8#+ 0ste nuevo nodo es colocado en la posicin 'ue le corresponda por su frecuencia
f5# e59 c5"8 b5" d5"4 a57#
c5"8 b5" d5"4 a57# "7 f5# e59 < " "7 f5# e59 < " d5"4 a57# 8# c5"8 b5" < " Se fusionan los nodos fe y d con una frecuencia con$unta de < y se coloca en la posicin apropiada+ Se fusionan los nodos cb y fed y se o%tiene una frecuencia con$unta de ##+ 6inalmente se fusionan los nodos a y cbfed* y se o%tiene el &r%ol de cdigos prefi$os 7 8# c5"8 b5" < " a57# < d5"4 "7 f5# e59 < " < " < d5"4 "7 f5# e59 < " < " 8# c5"8 b5" < " a57# ## < " ,r%ol de cdigos prefi$os O%teni/ndose asi la siguiente ta%la de codificacin a % c d e f Variable < "<" "<< """ ""<" ""<< # a:7# b:" c:"8 d:"4 e:9 f:# < < < < < " " " " "<< ## 8# < "7 " Enunciado del Proyecto Se desea 'ue Ud+ implemente el algoritmo de .uffman para la compresin y descompresin de te3tos o arc?ivos+ )ara ello de%er& implementar un men> con las siguientes opciones5 "+ "n#lisis de $e%to5 Se introduce el te3to a analizar por medio de una eti'ueta T0CTO colocada en el &rea de datos en el arc?ivo e3ception+s 'ue se instala $unto con el simulador+ 0ste te3to ser& analizado para o%tener la frecuencia de cada car&cter 'ue aparece en el te3to+ Tenga en cuenta 'ue el car&cter DespacioE de%e ser incluido si /ste aparece en el te3to+ ,suman 'ue el te3to slo puede contener letras min>sculas y el car&cter DespacioE +data T0CTO5 +asciiz F0sto es un e$emplo de posi%le te3to a comprimirG @ota5 de%en respetar el nom%re de la eti'ueta* pues para la revisin de su proyecto* usaremos nuestra versin de e3ception+s con dic?a eti'ueta y con el te3to 'ue se usar& como caso de prue%a 8+ I&presin de las frecuencias+ 0sta opcin permite visualizar 'u/ caracteres aparecen en el te3to con su respectiva frecuencia+ Slo interesan los caracteres 'ue aparecieron en el te3to+ + 'onstruccin del #rbol+ 0sta opcin lleva a ca%o la generacin del &r%ol de cdigos prefi$os %asado en la frecuencia o%tenida en la opcin "+ De%e verificar 'ue se disponga de dic?as frecuencias+ 7+ I&presin de los cdigos prefijos+ Con esta opcin es posi%le o%tener los cdigos prefi$os para cada car&cter 'ue aparece en el te3to con el cual se est& tra%a$ando+ De%en mostrar el car&cter* el cdigo asignado y la longitud en %its del cdigo+ =ecuerden 'ue con la codificacin .uffman los caracteres son representados por cdigos de longitud varia%le+ )ara facilidad* muestren el cdigo de .uffman en decimal Car&cter Cdigo .uffman -ongitud a < " % # c 7 d H e " 7 f "8 7 #+ 'o&presin del te%to Basado en los cdigos prefi$os o%tenidos en la opcin * convierte el te3to original representado con cdigos ,SCII a una representacin usando los cdigos .uffman+ 0l te3to estar& conformado por una secuencia de < y "+ =ecuerden 'ue la nueva codificacin es de tamaIo 4 varia%le y no necesariamente ocupa los ! %its 'ue ocupa la representacin ,SCII+ 0$emplo aabacd <<"<"<"<<""" <<"<"<"<<""" )ara facilitar la correccin* la codificacin o%tenida ser& impresa como enteros de ! %its+ 0s decir aabacd <<"<"<"< <""" 78 J H 0l resultado de la compresin de%er&n colocarlo en el &rea de datos en el e3cpetion+s %a$o la eti'ueta CO()= 4+ (esco&presin del te%to 0sta opcin toma la secuencia de " y < y o%tiene el te3to en ,SCII* es decir o%tiene el te3to en su representacin original+ )ara la descompresin tomar& la cadena de < y " 'ue se encuentra almacenada %a$o la eti'ueta CO()= en el &rea de datos dentro del e3ception+s (etalles de I&ple&entacin )ara el desarrollo del proyecto de%en implementar las distintas funciones siguiendo las convenciones compartidas de S)I(+ 0s importante 'ue estas convenciones se cumplan pues de lo contrario ser& penalizado su cdigo+ )ara cada funcin 'ue se implemente de%e especificar los argumentos 'ue reci%e y el valor de retorno de la funcin+ -leve a ca%o el desarrollo de su proyecto de forma modular+ )uede desarrollar funciones adicionales 'ue le permitan mantener su cdigo m&s estructurado y f&cil de leer+ Entrega 0l proyecto de%e ser entregado antes de la medianoc?e del lunes de la semana 9 1"# de $unio2+ Ser& entregado a trav/s de ,ula Kirtual+ De%en formar sus grupos a trav/s de ,ula Kirtual y la entrega se ?ar& a trav/s de la seccin de Documentos del grupo correspondiente+ 0l da martes "4 de $unio durante la clase de Teora de%er&n entregar en un so%re manila cerrado el listado de su cdigo documentado* incluyendo la planificacin de registros por funcin y las especificaciones de los argumentos de las funciones implementadas asi como los de los valores de retorno+ Tam%i/n de%er& incluir un informe corto en dnde especifi'uen las estructuras de datos utilizadas para la implementacin de su proyecto+ H