Você está na página 1de 7

Universidad Simn Bolvar

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

Você também pode gostar