Practica de Huffman
Practica de Huffman
Practica de Huffman
Alumnos:
Galicia Rojas Ulises Alberto
Méndez Ruiz Jorge Yatzar
Mejía Cortes Abraham
Grupo: 8CV1
El codificador Huffman crea una estructura arbórea ordenada con todos los
símbolos y la frecuencia con que aparecen. Las ramas se construyen en forma
recursiva comenzando con los símbolos menos frecuentes.
La construcción del árbol se realiza ordenando en primer lugar los símbolos según
la frecuencia de aparición. Los dos símbolos con menor frecuencia de aparición se
eliminan sucesivamente de la lista y se conectan a un nodo cuyo peso es igual a la
suma de la frecuencia de los dos símbolos. El símbolo con menor peso es asignado
a la rama 1, el otro a la rama 0 y así sucesivamente, considerando cada nodo
formado como un símbolo nuevo, hasta que se obtiene un nodo principal llamado
raíz.
Los códigos correspondientes a cada carácter son tales que los códigos para los caracteres
más frecuentes son cortos y los correspondientes a los símbolos menos frecuentes son largos:
La salida que se tiene del codificador está en muchos casos correlada, y algunos bits o
cadenas de bits son mucho más probables que otros. Esto provoca que se transmitan
más bits de los que son estrictamente necesarios para enviar la información deseada
una fuente viene medida por su entropía. Suponiendo que una fuente discreta es capaz
de generar un total de M valores distintos, cada uno de ellos con probabilidad pi, su
La entropía proporciona el límite inferior del número de bits por muestra necesarios
para transmitir la información de la fuente sin pérdidas, y es la tasa de salida hacia la
que debe tender un buen codificador de fuente. Cuando la tasa de transmisión es mucho
mayor que la entropía de la fuente, entonces es posible que algunas de las propiedades
de las modulaciones (por ejemplo, su anchura espectral) no sean idénticas a los valores
teóricos, lo que puede dar lugar a interferencias con otros sistemas de comunicaciones.
La codificación de fuente se encarga de eliminar dicha correlación de tal forma que los
bits que aparecen a su salida están incorrelados, y todas las cadenas de cualquier
otra cadena de bits de longitud variable. Cuanto mayor sea la probabilidad de aparición
forma que la longitud media de las cadenas resultantes sea menor que la de las cadenas
Si seguimos haciendo una codificación con respecto a las demás letras, encontraremos que hay
algunas que se utilizan menos que otras, y por lo tanto, tenemos que analizar la probabilidad de
ocurrencia de cada letra, para codificarlo con más o menos bits. Pero hay que tener cuidado que
sea un código prefijo, es decir, que ninguna palabra del código constituye la palabra de otro código
y no presentar ambigüedad en la decodificación.
Es importante hacer una clara distinción entre los conceptos "set de caracteres" y "codificación de
caracteres".
Un set de caracteres o repertorio comprende el grupo de caracteres que se utilizarían para una
finalidad específica, ya sea los necesarios para el soporte de los idiomas de Europa Occidental en
la computadora, o los que aprendería en el colegio un niño chino en tercer grado (sin relación con
la computadora).
La ventaja principal del software open source es la posibilidad de compartir, modificar y estudiar el
código fuente de un sistema informático. Por otro lado, el código abierto promueve la
colaboración entre usuarios. Esta característica supone el desarrollo rápido y variado de multitud
de herramientas. Por ejemplo, los usuarios de un determinado programa pueden realizar
personalizaciones, solventar fallos o mejorar las funcionalidades básicas gracias a los miembros de
las comunidades, los foros, etc.
5.- ¿Cuáles son las características que debe cumplir un código óptimo?
Me gusta que mi código sea elegante y eficaz. La lógica debe ser directa para evitar errores
ocultos, las dependencias deben de ser mínimas para facilitar el mantenimiento, el procesamiento
de errores completo y sujeto a una estrategia articulada, y el rendimiento debe ser óptimo para
que los usuarios no tiendan a estropear el código con optimizaciones sin sentido. El código limpio
hace bien una cosa.
las características que debe cumplir el código limpio son las siguientes:
Legible
Simple
Elegancia
Eficaz
Óptimo
Con pruebas
Un buen código de fuente reduce la cantidad de bits que se requiere para enviar la información. La
codificación de fuente consigue que el canal reciba la información con la mayor redundancia
binaria posible, obteniendo así mayor eficiencia en términos de ancho de banda v/s velocidad de
transmisión.
Longitud media de un código de la fuente S, L no puede ser inferior a H(S). Según esto, se define el
rendimiento de un código.
La longitud media de un código se define como la sumatoria de los productos entre las
probabilidades y longitudes de cada símbolo.
CONCLUSIONES