Montículos
description
Transcript of Montículos
![Page 1: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/1.jpg)
1
MONTÍCULOS
Daniel González Pérez
Cristina Sánchez Aragón
Miguel Ángel Moreno Leiva
![Page 2: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/2.jpg)
2
ÍNDICE
1. ¿Qué son los montículos?2. Especificación3. Implementación4. Colas de prioridad con montículos5. Otros tipos de montículos
Mont. Binarios Mont. Binomiales Mont. Fibonacci
![Page 3: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/3.jpg)
3
1. ¿QUÉ SON LOS MONTÍCULOS?
Un heap o montículo es un árbol binario completo, y además parcialmente ordenado. Completo: que tiene todos sus niveles
completos a excepción del último. Y el último nivel contiene los nodos agrupados de izquierda a derecha
Parcialmente ordenado: tiene todas y cada una de sus ramas, consideradas como listas, totalmente ordenadas, ya sea de forma creciente o decreciente
![Page 4: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/4.jpg)
4
1. ¿QUÉ SON LOS MONTÍCULOS?
Completo:
![Page 5: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/5.jpg)
5
1. ¿QUÉ SON LOS MONTÍCULOS?
Parcialmente Ordenado:
![Page 6: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/6.jpg)
6
2. ESPECIFICACIÓN
Operaciones:
Vacio: Devuelve el montículo vacío. Inserta x m: Devuelve un montículo añadiendo el
elemento x en el montículo m. Menor m: Devuelve el menor elemento del
montículo m. Resto m: Devuelve el montículo resultante de
eliminar el menor elemento del montículo m. esVacio m: Devuelve verdadero si el montículo m
es vacío. Valido m: Devuelve verdadero si m es un
montículo correcto y cumple sus propiedades.
![Page 7: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/7.jpg)
7
3. IMPLEMENTACIÓN
![Page 8: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/8.jpg)
8
3. IMPLEMENTACIÓN
![Page 9: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/9.jpg)
9
3. IMPLEMENTACIÓN
![Page 10: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/10.jpg)
10
3. IMPLEMENTACIÓN
![Page 11: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/11.jpg)
11
3. IMPLEMENTACIÓN
![Page 12: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/12.jpg)
3. IMPLEMENTACIÓN
Pasos para insertar en un Heap Agregamos el nodo. (de izquierda a derecha) Comparamos son su padre.
Si es mayor permutamos hasta llegar a la raíz
Repetimos el paso 1 y 2 hasta llenar el nivel. Una vez llenado ese nivel pasamos al siguiente
nivel.
12
![Page 13: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/13.jpg)
INSERTA (EJEMPLO)
13
19
30
24
19
Agregamos el 19 Agregamos el 24
Comparamos el 24 > 19
19
24
=> 14
Agregamos el 14
19
24
Comparamos el 14 > 24
14
Agregamos el 30
19
24
Comparamos el 30 > 1919
1430
24
Comparamos el 30 > 24
=> =>
19
1424
30
![Page 14: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/14.jpg)
INSERTA (EJEMPLO)
14
1825
5
Agregamos el 25
Comparamos el 25 > 24
19
1424
30
2419
1425
30
=>
Agregamos el 18
2419
1425
30
Comparamos el 18 > 14
142419
1825
30
=>
Agregamos el 5
142419
1825
30
![Page 15: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/15.jpg)
3. IMPLEMENTACIÓN
Pasos para eliminar Eliminamos la raíz del heap (SIEMPRE!!) Una vez eliminada remplazamos la raíz con el
último nodo del último nivel. Comparamos si los hijos de la nueva raíz son
menores Si son menores no se hace ninguna permutación Si son mayores (o uno de ellos) se hace permutación con el
hijo mayor. Repetimos los pasos anteriores hasta no tener
nodos para eliminar.
15
![Page 16: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/16.jpg)
RESTO (EJEMPLO)
16
5181419
2425
30
Eliminamos el 30
181419
2425
5
=>
Comparamos si el 5 > 25
181419
245
25
=>
Comparamos si el 5 > 19
18145
2419
25
=>
![Page 17: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/17.jpg)
RESTO ( EJEMPLO)
17
Eliminamos el 25 Comparamos si el 24 > 19Y si el 24 >18
18145
2419
25
=>
145
2419
18
Eliminamos el 24
=>
145
1819
24
5
1819
14
Comparamos si el 14 > 19
=>
5
1814
19
Comparamos si el 14 > 5
145
1819
24
![Page 18: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/18.jpg)
RESTO (EJEMPLO)
18
=>
5
1814
19
Eliminamos 19
=>1814
5
Comparamos si el 5 > 14
1814
5
Comparamos si el 14 > 18
514
18=>
Eliminamos 18
514
18
=>14
5
5
14
![Page 19: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/19.jpg)
RESTO (EJEMPLO)
19
5
14
Eliminamos 14
=> 5 5
Eliminamos 5
=> vació
Los nodos eliminados fueron:30 25 24 19 18 14 5
![Page 20: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/20.jpg)
20
3. IMPLEMENTACIÓN
![Page 21: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/21.jpg)
21
3. IMPLEMENTACIÓN
![Page 22: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/22.jpg)
22
3. IMPLEMENTACIÓN
![Page 23: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/23.jpg)
23
3. IMPLEMENTACIÓN
![Page 24: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/24.jpg)
24
4. OTRAS OPERACIONES AUXILIARES
![Page 25: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/25.jpg)
25
4. OTRAS OPERACIONES AUXILIARES
![Page 26: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/26.jpg)
26
4. OTRAS OPERACIONES AUXILIARES
![Page 27: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/27.jpg)
27
4. OTRAS OPERACIONES AUXILIARES
![Page 28: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/28.jpg)
28
4. OTRAS OPERACIONES AUXILIARES
![Page 29: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/29.jpg)
29
4. OTRAS OPERACIONES AUXILIARES
![Page 30: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/30.jpg)
30
4. OTRAS OPERACIONES AUXILIARES
![Page 31: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/31.jpg)
31
4. OTRAS OPERACIONES AUXILIARES
![Page 32: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/32.jpg)
32
4. OTRAS OPERACIONES AUXILIARES
![Page 33: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/33.jpg)
33
4. OTRAS OPERACIONES AUXILIARES
![Page 34: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/34.jpg)
34
4. OTRAS OPERACIONES AUXILIARES
![Page 35: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/35.jpg)
35
5. COLAS DE PRIORIDAD
Cada elemento tiene asociada una prioridad y la operación de extracción siempre elige el elemento de menor prioridad. (Ciudades ordenadas por su distancia a un destino final)
Son necesarios dos procedimientos: para insertar elementos al final y extraer el primer elemento.
Insertar al final de la cola, el elemento se añade al final del montículo como la última hoja. El restablecimiento de la propiedad de montículo en el caso de la inserción de elementos al final de una cola se logra al moverse desde la última hoja hacia la raíz.
La extracción del primer elemento del montículo consiste en eliminar el elemento de la raíz del montículo debido a que por la propiedad del montículo éste es el elemento con mayor prioridad. Luego la última hoja se pone en su lugar y es casi seguro que la propiedad del montículo tenga que restablecerse, esta vez al avanzar desde la raíz hacia abajo del árbol.
![Page 36: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/36.jpg)
36
5. COLAS DE PRIORIDAD
Aquí falta la Implementación de las colas
![Page 37: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/37.jpg)
37
6. TIPOS DE MONTÍCULOS
Montículos Binarios
Montículos Binomiales
Montículos de Fibonacci
![Page 38: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/38.jpg)
38
6.1 MONTÍCULOS BINARIOS
Consiste en la representación de un montículo como un vector
![Page 39: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/39.jpg)
39
6.1 MONTÍCULOS BINARIOS
![Page 40: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/40.jpg)
40
6.2 MONTÍCULOS BINOMIALES
Los montículos binomiales están formados por una colección de árboles binomiales los cuales se definen recursivamente de la siguiente forma:El árbol B₀ es el que tiene un solo
elemento.Un árbol Bk consiste en dos árboles Bk₋₁
que están unidos, siendo la raíz de uno el hijo más a la izquierda de la raíz del otro.
![Page 41: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/41.jpg)
41
6.2 MONTÍCULOS BINOMIALES
Es un conjunto de árboles binomiales tales que: Cada árbol binomial es un árbol parcialmente
ordenado, es decir, la clave de todo nodo es mayor o igual que la de su padre.
Contiene no más de un árbol binomial Bi para cada grado i
![Page 42: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/42.jpg)
42
6.2 MONTÍCULOS BINOMIALES
Ejemplo de Montículo Binomial de 13 Nodos:
La representación binaria de 13 es 1, 1, 0, 1 , ⟨ ⟩por tanto M contiene los árboles binomiales B3, B2 y B0, con 8, 4 y 1 nodos, respectivamente
![Page 43: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/43.jpg)
43
6.3 MONTÍCULOS DE FIBBONACCI
Los montículos de Fibonnacci consisten en una colección de árboles. Los árboles no están ordenados como sucede con los montículos binomiales, pero si están enlazados las raíces.
Cada nodo contiene: Un encadenamiento al nodo padre. Un encadenamiento al nodo de uno de sus hijos. Un encadenamiento circular a sus hermanos
hacia la derecha. Un encadenamiento circular a sus hermanos
hacia la izquierda.
![Page 44: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/44.jpg)
44
6.3 MONTÍCULOS DE FIBBONACCI
En el caso de que el nodo no tenga hermanos se encadena hacia sí mismo. Además cada nodo tiene dos parámetros: El número de hijos de la lista de hijos. Una marca indicando si un nodo determinado ha
perdido un hijo desde la última vez que fue asignado hijo de otro nodo.
![Page 45: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/45.jpg)
45
6.3 MONTÍCULOS DE FIBBONACCI
![Page 46: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/46.jpg)
46
6.3 MONTÍCULOS DE FIBBONACCI
Comparado con los montículos binomiales, la estructura de un montículo de Fibonacci es más flexible.
Los árboles no tienen una forma predefinida y en un caso extremo el montículo puede tener cada elemento en un árbol separado o en un único árbol de profundidad n.
Esta flexibilidad permite que algunas operaciones puedan ser ejecutadas de una manera 'perezosa', posponiendo el trabajo para operaciones posteriores.
![Page 47: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/47.jpg)
47
7. COMPARATIVA DE RENDIMIENTO
Dependiendo del tipo de montículo, podemos que cada operación tiene una complejidad:
![Page 48: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/48.jpg)
48
8. VENTAJAS DE LA PROGRAMACIÓN FUNCIONAL
Brevedad
Facilidad para comprender
Manejo de los tipos de datos
Reutilización de código y polimorfismo
Evaluación perezosa y programas modulares
Abstracciones poderosas y funciones como valores de primera clase
![Page 49: Montículos](https://reader036.fdocuments.ec/reader036/viewer/2022081506/56813dcf550346895da795ed/html5/thumbnails/49.jpg)
49
BIBLIOGRAFÍA