Sesion 11 Arbol Hoffman
-
Upload
walter-cabrera -
Category
Documents
-
view
8 -
download
0
description
Transcript of Sesion 11 Arbol Hoffman
![Page 1: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/1.jpg)
Arbol de Huffman
![Page 2: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/2.jpg)
Arbol de Huffman (Algoritmo)• El algoritmo de Huffman es un algoritmo para la construcción de
códigos de Huffman, desarrollado por David A. Huffman en 1952 y descrito en “A Method for the Construction of Minimum-Redundancy Codes”.
• Permite la compresión y encriptación de mensajes de entrada, utilizando un mínimo de bits para ello.
• El algoritmo que crea el árbol de Huffman, que llamado también algoritmo voraz
![Page 3: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/3.jpg)
3
La solución se obtiene aplicando las siguientes fases:Fase 1Crear un vector de frecuencias de aparición de cada byte en el archivo de entrada.Ejm. • Se ingresa el texto HOLA PAPA• H, O,L se repite una vez• P se repite dos veces• A se repite tres veces
![Page 4: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/4.jpg)
Vector de Frecuencias
H 1O 1L 1 P 2 A 30.11
L.11
.11
P.22
A.34
1H.11
H O L A P A P A
NULL
![Page 5: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/5.jpg)
H O1 1
H O L A
NULL
P A P A
H 1O 1L 1 P 2 A 31 NULL
2
Algoritmo de Huffman
![Page 6: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/6.jpg)
H O1 1
H O L A
n1
P A P A
1L 1 P 2 A 3 NULL
2
n1 2
H 1O1
Algoritmo de Huffman
![Page 7: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/7.jpg)
H O L A P A P A
1L 1 P 2 A 3 NULLn1 2
H 1O1
Algoritmo de Huffman
![Page 8: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/8.jpg)
H O L A P A P A
P 2 A 3 NULLn1 2
H 1O1
L 1 1
n2 2
Algoritmo de Huffman
![Page 9: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/9.jpg)
H O L A P A P A
P 2 A 3 NULLn1 2
H 1O1
L 1 1
n2 2
n2 2
L 11
Algoritmo de Huffman
![Page 10: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/10.jpg)
H O L A P A P A
P 2 A 3 NULLn1 2
H 1O1
n2 2
L 11
Algoritmo de Huffman
![Page 11: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/11.jpg)
H O L A P A P A
P 2
NULL
n1 2
H 1O1
n2 2
L 11
n3 4A 3 n3 4
P 2 n1 2
H 1O1
Algoritmo de Huffman
![Page 12: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/12.jpg)
Algoritmo de HuffmanH O L A P A P A
NULL
n2 2
L 11
n4 5
A 3P 2 n1 2
H 1O1
n3 4
n2 2
L 11
n4 5
A 3
![Page 13: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/13.jpg)
Arbol de HuffmanH O L A P A P A
NULL
n2 2
L 11
n4 5
A 3P 2 n1 2
H 1O1
n3 4
![Page 14: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/14.jpg)
Arbol de Huffman
NULL
n2 2
L 11
n4 5
A 3P 2 n1 2
H 1O1
n3 4
n5 9
![Page 15: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/15.jpg)
Fase 3Identificando los caminos de los nodos• Colocar 0 a la rama izquierda• Colocar 1 a la rama derecha• Indicar la longitud de cada nodo que contiene una letra
10
![Page 16: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/16.jpg)
Vector de Frecuencias
NULL
n2 2
L 11
n4 5
A 3P 2 n1 2
H 1O1
n3 4
n5 910
10 0
0 0
1
11
![Page 17: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/17.jpg)
Algoritmo de Huffman
H
O
1L
1
P 2
A 3
H O L A P A P A
1
1
010
011
100
101
00
11
Fase 4Crear una tabla de codificación a partir del árbol de codificación.
![Page 18: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/18.jpg)
Algoritmo de Huffman
H O L A P A P A
010 011 100 0011 11 00 11
Fase 5Crear las secuencia codificada según el mensaje y la tabla de codificación
![Page 19: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/19.jpg)
Operaciones con los árboles de Huffman
• Insertar Nodos en el árbol• Eliminar Nodos• Buscar Nodo
ARBOL MONTON
![Page 20: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/20.jpg)
Árbol binario completoUn árbol binario completo es un árbol binario de profundidad K que tiene todos los nodos posibles hasta el penúltimo nivel (profundidad K-1), y donde los elementos del último nivel están colocados de izquierda a derecha sin dejar huecos entre ellos.
Ejemplo de árbol binario completo de profundidad K=3, donde puede verse que está lleno hasta el nivel 2, y que los 5 nodos del último nivel están situados de izquierda a derecha sin dejar huecos libres.
![Page 21: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/21.jpg)
Ejemplo de árbol binario no completo de profundidad K=4, ya que en el último nivel los nodos no se han insertado sin dejar huecos.
Otro árbol binario no completo, ya que no está lleno hasta el penúltimo nivel.
Árbol binario completo
![Page 22: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/22.jpg)
Arboles de Montón o Heap• La estructura heap es frecuentemente usada para implementar colas
de prioridad. • En este tipo de colas, el elemento a ser eliminado (borrados) es aquél
que tiene mayor (o menor) prioridad. • En cualquier momento, un elemento con una prioridad arbitraria
puede ser insertado en la cola. • Una estructura de datos que soporta estas dos operaciones es la cola
de prioridad máxima (mínima).
![Page 23: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/23.jpg)
• Existen tres categorías de un heap: max heap, min heap y min-max heap.
Un max (min) tree es un árbol en el cual el valor de la llave de cada nodo no es menor (mayor) que la de los valores de las llaves de sus hijos (si tiene alguno).
• Un max heap es un árbol binario completo que es también un max tree. • Un min heap es un árbol binario completo que es también un min tree.• De la definición se sabe que la llave del root de un min tree es la menor llave
del árbol, mientras que la del root de un max tree es la mayor.• Si la llave (key) de cada nodo es mayor que o igual a las llaves de sus hijos,
entonces la estructura heap es llamada max heap.
Arboles de Montón o Heap
![Page 24: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/24.jpg)
• Ejemplo de un Max Heap
• El nodo padre siempre será mayor de sus descendientes
• El nodo raíz contiene el valor mas alto
Arboles de Montón o Heap
![Page 25: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/25.jpg)
• Si la llave (key) de cada nodo es menor que o igual a las llaves de sus hijos, entonces la estructura heap es llamada min heap.
Arboles de Montón o Heap
![Page 26: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/26.jpg)
• En una estructura min-max heap, un nivel satisface la propiedad min heap, y el siguiente nivel inferior satisface la propiedad max heap, alternadamente.
Las operaciones básicas de un heap son:• Creación de un heap vacío• Inserción de un nuevo elemento en la
estructura heap.• Eliminación del elemento más grande
del heap.
![Page 27: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/27.jpg)
PropiedadesUn heap tiene las siguientes tres propiedades:
Es completo, esto es, las hojas de un árbol están en a lo máximo dos niveles adyacentes, y las hojas en el último nivel están en la posición más a la izquierdaCada nivel en un heap es llenado en orden de izquierda a derecha.Está parcialmente ordenado, esto es, un valor asignado, llamado key del elemento almacenado en cada nodo (llamado parent), es menor que (mayor que) o igual a las llaves almacenadas en los hijos de los nodos izquierdo y derecho.
![Page 28: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/28.jpg)
Ejercicios
![Page 29: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/29.jpg)
MATEMATICAMENTE
• Utilizando el algoritmo de Huffman, construir el árbol y la tabla de códigos correspondiente a cada letra de la palabra
Ejercicio 1
![Page 30: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/30.jpg)
Ejercicio 2Dados los siguientes nodos, verificar si se puede construir un arbol tipo heap-min y un árbol tipo heap-max
12 10 4 20 50 9 64 43 34 54 67 23
![Page 31: Sesion 11 Arbol Hoffman](https://reader034.fdocuments.net/reader034/viewer/2022051518/5695d23f1a28ab9b0299a7ad/html5/thumbnails/31.jpg)
Ejercicio: Arboles ABB1. Construir un algoritmo que permita insertar nodos en un árbol ABB
• Considerar si el árbol esta vacío• Dado un nodo, registrarlo en el lugar adecuado del árbol• No permitir ingresar un nodo que ya exista• Permita hacer el recorrido Pre, In y Post Orden. Mostrar los valores de los nodos
según el tipo de recorrido
2. Construir un algoritmo para obtener la altura del árbol y el peso del árbol3. Implementar la opción de eliminar un nodo en el árbol creado en el
punto 1 que permita realizar lo siguiente.• Eliminar un nodo hoja• Eliminar un nodo con un hijo