Está en la página 1de 36

Introducci

on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Estructura de Datos
Clase 13: Colas de prioridad Heaps Binarios
Carlos Contreras Bolton
Universidad Andr
es Bello
Facultad de Ingeniera

13 de mayo de 2014

Carlos Contreras Bolton Estructura de Datos

1/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Contenido
1 Introducci
on
2 Heap
3 Representaci
on
4 Operaciones del Heap
5 Eficiencia de las Operaciones
6 Heapsort

Carlos Contreras Bolton Estructura de Datos

2/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Introduccion

Una cola de prioridad es un tipo de datos abstracto que


almacena un conjunto de datos que poseen una llave
perteneciente a algun conjunto ordenado.
Permite insertar nuevos elementos y extraer el maximo (o
el mnimo, en caso de que la estructura se organice con
un criterio de orden inverso).
Numerosas aplicaciones: Sistemas operativos, algoritmos
de scheduling, gestion de colas en cualquier ambiente, etc.

Carlos Contreras Bolton Estructura de Datos

3/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Introduccion

La implementacion mas eficiente es a traves de heap.


Heap significa, literalmente, monton.
La principal caracterstica e importancia del Heap es que
se puede obtener el mnimo elemento en tiempo
constante O(1).

Carlos Contreras Bolton Estructura de Datos

4/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heap
Caractersticas

Propiedad estructural:

Es un Arbol
Binario Completo. Propiedades:
Su altura es a lo sumo (log n).
Admite una representaci
on implcita sobre un arreglo.

Propiedad de orden:
El valor de cualquier nodo es menor o igual que el de sus
hijos (Min-Heap).
De manera analoga se define un Max-heap.

Carlos Contreras Bolton Estructura de Datos

5/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heap
Caractersticas

Un heap es un AB completo con la propiedad de orden


enunciada.
Propiedades:

Arbol
binario perfectamente balanceado.
Todas las ramas del arbol son secuencias ordenadas.
La raz del arbol es el nodo de valor mnimo (o maximo
en un Max-Heap).
Todo subarbol de un Heap es tambien un Heap.
(no obligatorio): es izquierdista, o sea, el u
ltimo nivel
esta lleno desde la izquierda.
(Ojo: no es un ABB, ni una estructura totalmente
ordenada!)

Carlos Contreras Bolton Estructura de Datos

6/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Representacion

Todas las representaciones usadas para arboles binarios


son admisibles:
Representacion con punteros, eventualmente con punteros
hijo-padre.
Representacion con arreglos: particularmente eficiente.

Carlos Contreras Bolton Estructura de Datos

7/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Representacion
Arreglos

Ventajas:
Muy eficientes en terminos de espacio (ver
desventajas!).
Facilidad de navegaci
on.

Desventaja:
Implementaci
on estatica (puede ser necesario duplicar el
arreglo (o achicarlo) a medida que se agregan/eliminan
elementos.

Carlos Contreras Bolton Estructura de Datos

8/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Representacion
Arreglos

i = posicion en el arreglo.
Hijo Izquierdo = 2i.
Hijo Derecho = 2i + 1.
Padre = (int)i/2.

13 21
1 2

16 24 31 19 68 65 26
3 4 5 6 7 8 9

Carlos Contreras Bolton Estructura de Datos

32
10
9/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Operaciones del Heap


Insertar

Insertar en la posicion correspondiente para que siga


siendo un arbol completo, es decir, al final de izquierda a
derecha.
Reorganizar para que cumpla las condiciones del heap,
haciendolo flotar:
Comparar con el nodo padre: si no cumple las
condiciones del arbol mnimo/maximo, entonces
intercambiar ambos.

Carlos Contreras Bolton Estructura de Datos

10/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Insertar
Ejemplo

13 21 16
1 2 3

24 31 19 68 65 26 32
4 5 6 7 8 9 10

Carlos Contreras Bolton Estructura de Datos

14
11

11/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Insertar
Ejemplo

13 21 16
1 2 3

24 14 19 68 65 26
4
5
6 7 8 9

Carlos Contreras Bolton Estructura de Datos

32 31
10 11

12/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Insertar
Ejemplo

13 14
1
2

16 24 21 19 68 65 26
3 4 5 6 7 8 9

Carlos Contreras Bolton Estructura de Datos

32 31
10 11

13/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Operaciones del Heap


Eliminar

Se elimina mnimo/maximo elemento. Este esta en la


posicion 1 de arreglo y raz del arbol.
El ultimo nodo lo colocaremos en la posicion uno, y lo
hundiremos
Se hunde en la direccion del hijo menor para mantener la
propiedad de orden.

Carlos Contreras Bolton Estructura de Datos

14/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Eliminar
Ejemplo

13 14 16 19 21 19
1 2 3 4 5 6

Carlos Contreras Bolton Estructura de Datos

68 65 26 32 31
7 8 9 10 11

15/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Eliminar
Ejemplo

31 14 16 19 21 19 68 65 26 32
1

Carlos Contreras Bolton Estructura de Datos

10 11

16/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Eliminar
Ejemplo

14 31
1
2

16 19 21 19 68 65 26
3 4 5 6 7 8 9

Carlos Contreras Bolton Estructura de Datos

32
10 11

17/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Eliminar
Ejemplo

14 19 16
1 2 3

31 21 19 68 65 26 32
4

Carlos Contreras Bolton Estructura de Datos

10 11

18/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Eliminar
Ejemplo

14 19 16
1 2 3

26 21 19 68 65 31
4 5 6 7 8
9

Carlos Contreras Bolton Estructura de Datos

32
10 11

19/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Eficiencia de las Operaciones

Operaciones
Acceder
Buscar
Insertar
Eliminar

Arreglo
Estatico
O(1)
O(n)

Arreglo
Lista
Dinamico Simplemente
Enlazada
O(1)
O(n)
O(n)
O(n)
O(n)
O(1)
O(n)
O(1)

Carlos Contreras Bolton Estructura de Datos

Lista
Arbol
Binario
Doblemente de Busqueda
Enlazada
O(n)
O(log n)
O(n)
O(log n)
O(1)
O(log n)
O(1)
O(log n)

Heap
Binario

1
O(log n)
O(log n)

20/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Otros Heaps
Eficiencia

Heap
Binario
Binomial
Fibonacci

Buscar
Extraer
Mn/Max Mn/Max
O(1)
O(log(n))
O(log(n)) O(log(n))
O(1)
O(log(n))*

Dism./Aum.
Insertar
Eliminar
Mezclar
Clave
O(log(n)) O(log(n)) O(log(n)) O(m + n)
O(log(n)) O(log(n)) O(log(n)) O(log(n))
O(1)*
O(1)
O(log(n))*
O(1)

(*)Tiempo Amortizado.

Carlos Contreras Bolton Estructura de Datos

21/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Funcionamiento

A partir de un arreglo desordenado que se quiere ordenar


ascendentemente:
Para i = n/2 hasta 1:
Hundir i.

Para i = n hasta 1:
Intercambiar posici
on 1 con i.
Hundir i.

Carlos Contreras Bolton Estructura de Datos

22/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

1
19

2 3 4 5 6 7
5 18 2 3 23 16

Carlos Contreras Bolton Estructura de Datos

23/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Hundir i = 3.

Carlos Contreras Bolton Estructura de Datos

24/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Hundir i = 2.

Carlos Contreras Bolton Estructura de Datos

25/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Hundir i = 1.

Carlos Contreras Bolton Estructura de Datos

26/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Intercambiar 1 con 7.

Carlos Contreras Bolton Estructura de Datos

Hundir raz (i = 0).

27/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Intercambiar 1 con 6.

Carlos Contreras Bolton Estructura de Datos

Hundir raz (i = 0).

28/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Intercambiar 1 con 5.

Carlos Contreras Bolton Estructura de Datos

Hundir raz (i = 0).

29/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Intercambiar 1 con 4.

Carlos Contreras Bolton Estructura de Datos

Hundir raz (i = 0).

30/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Intercambiar 1 con 3.

Carlos Contreras Bolton Estructura de Datos

Hundir raz (i = 0).

31/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Intercambiar 1 con 2.

Carlos Contreras Bolton Estructura de Datos

Hundir raz (i = 0).

32/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Ejemplo

Carlos Contreras Bolton Estructura de Datos

33/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Eficiencia

La eficiencia para un algoritmo Heapsort esta dominado


por el ordenamiento hacia abajo O(n log n) y no por la
construccion O(n).
Heapsort garantiza ordenar n elementos en su lugar en un
tiempo proporcional a n log n sin importar la entrada.
No hay entrada de peor caso que haga el algoritmos
Heapsort significativamente mas lento (como es el caso
de Quicksort).

Carlos Contreras Bolton Estructura de Datos

34/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Heapsort
Eficiencia

No utiliza espacio adicional (como es el caso de


Mergesort).
El ciclo interno (costo por comparacion) tiene mas
operaciones basicas que Quicksort y utiliza mas
comparaciones que Quicksort para entradas aleatorias.
Heapsort tambien es util para problemas de seleccion,
como encontrar el k elemento mayor entre n elementos
(deteniendo el algoritmo despues de k extracciones).

Carlos Contreras Bolton Estructura de Datos

35/36

Introducci
on Heap Representaci
on Operaciones del Heap Eficiencia de las Operaciones Heapsort

Tarea
Investigar sobre Heap Binomial y Fibonacci.
El Informe debe contener:
Introduccion.
Heap Binario.
Heap Fibonacci.
Conclusiones.
Bibliografa.

Observaciones:
Usar Formato APA para la bibliografa (investigar).
No se acepta referencia de paginas web (wikipedia,
apuntes, etc), en caso de usar una web, nota mnima.
Debe usar referencias de libros, artculos cientficos,
conferencias, etc.
En caso de no existir referencias, nota mnima.
Carlos Contreras Bolton Estructura de Datos

36/36

También podría gustarte