Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LABORATORIO N° 14
Heap Advanced
Alumno(s) Nota
Briceño Sanchez, Rodrigo
Castillo Llanos, Alberth
Coayla Godoy, Jose
Macedo Zeballos, Aisha
Peralta Tito, Rocio
Grupo A-B
Ciclo I
Fecha de entrega
I.- OBJETIVOS:
Definir las reglas básicas a seguir para la construcción y la correcta interpretación de los Diagramas de
Flujo, resaltando las situaciones en que pueden, o deben, ser utilizados.
Elaborar y Diseñar algoritmos con arreglos de una sola dimensión(unidimensional) denominada vectores
II.- SEGURIDAD:
Advertencia:
En este laboratorio está prohibida la manipulación del
hardware, conexiones eléctricas o de red; así como la
ingestión de alimentos o bebidas.
V.- RECURSOS:
En este laboratorio cada alumno trabajará con un equipo con Windows 10.
VII.- PROCEDIMIENTO:
EJERCICIO DE APLICACIÓN
class Heap:
'''
Heap class
'''
def __init__(self):
self.heapList = []
self.size = 0
valueLeftChild = self.leftChild(idx)
valueRightChild = self.rightChild(idx)
if valueRightChild == -1 :
return self.leftChildIndex(idx)
def getTop(self):
'''
Get root value for Heap
:return:
'''
if self.size == 0:
return -1
return self.heapList[0]
#
# 10
# 3 9
# 12 78
#
def buildHeap(self,list):
'''
Built heap from array
:param list:
:return:
'''
i = len(list) // 2
self.size = len(list)
self.heapList = list
print("")
while i >= 0:
tmp = self.heapList[i]
print("percolate-down ", tmp , " <<", self.heapList)
self.percolateDown(i)
print("percolate-down ", tmp , " >>", self.heapList)
print("")
i=i-1
2.3.- Ejecutar el siguiente Código que usa la clase MinHeap, ¿Qué sucede? , agrege
evidencias de ejecución:
Siguiendo los pasos del ejercicio 2, cree una clase MaxHeap y adaptelo para que cree un Max
Heap
4.- Eliminación de elementos raices de un Min Heap.
def delete(self):
'''
Delete an element from top
of heap and apply percolate doown
:return:
'''
ret = self.heapList[0]
self.heapList[0] = self.heapList[self.size-1]
self.size = self.size-1
self.heapList.pop()
self.percolateDown(0)
return ret
4.2.- Ejecute el siguiente código , ¿Qué es lo que esta realizando?, adjuntar evidencias
print("=========================")
for i in range(len(heap.heapList)):
print(heap.heapList)
ret = heap.delete()
print("------------------------")
print("attend --> ", ret)
print(heap.heapList)
list = LIST_ORIGIN
heap = MinHeap()
for i in range(len(list)):
#print("c[%d] = %d" % (i,list[i]))
heap.insert(list[i])
print("--------------------------")
print(heap.heapList)
print("--------------------------")
print("input <<",list)
print("output >>",heap.heapList)
7.- Insert elementos en un Max Heap
CONCLUSIONES:
1. Los montones son estructuras de datos extremadamente versátiles y
útiles que se utilizan junto con otras estructuras de datos como gráficos y
árboles
2.Aprendimos que heap advance,son los montículos o también llamados
árboles binarios para los cuales cada nodo padre tiene un valor menor o
igual que cualquiera de sus hijos. Esta implementación utiliza matrices
para las cuales heap[k] <= heap[2*k+1] y heap[k] <= heap[2*k+2] para todo
k, contando los elementos desde cero. Para poder comparar, los
elementos inexistentes se consideran infinitos. La propiedad interesante
de un montículo es que su elemento más pequeño es siempre la raíz,
heap[0].
3. observamos que la mejorar la eficiencia de varias operaciones.