Está en la página 1de 51

Tpicos I

Unidad I

Arboles, Montculos y Grafos

Semana 3

Cola de Prioridades

Objetivos Generales
Entender el manejo, uso de algoritmos y
estructuras de datos avanzados, haciendo
nfasis en los algoritmos de internet,
seguridad y redes.

Objetivo Especfico
Implementar
algoritmos
utilizando
estructura de datos avanzadas.

Objetivo Instruccional
Implementar algoritmos para casos en los
cuales el orden de procesamiento esta
basado en prioridades.

Contenidos

Introduccin

Estructura de datos montculo

Ordenacin por montculos

Cola de Prioridades

Introduccin

Consideraciones
El montculo binario permite obtener el mnimo
elemento de un conjunto en un tiempo constante, es
decir; independiente del tamao del conjunto de
datos.
Su utilidad se aprecia en la implementacin de una
Cola de Prioridad en la que se van obteniendo los
datos en base a su prioridad. Por ejm:
Atencin de clientes en una agencia bancaria (tarjetas
clsicas, doradas, etc.).
Atencin de pacientes en un hospital (estado de salud
mas critico).
Priorizacin de trabajos de impresin (primero se imprimen
las de menor cantidad de paginas)

Estructura de datos montculo

Propiedades de los montculos


Un montculo binario (o simplemente
heap) cumple dos propiedades:
Propiedad estructural
Es un rbol binario completo

Propiedad de orden

montculo o

Estructura de datos montculo

Propiedad estructural
Un montculo binario es un rbol binario
completo en el cual todos los niveles estn
llenos, con la posible excepcin del nivel
mas bajo, que se llena de izquierda a
derecha.
Un rbol binario completo de altura h,
tiene entre 2h y 2h+1-1 nodos. Esta
regularidad facilita su representacin
mediante un vector.

15

12

13
8

Para cualquier elemento


en la
7 5 3 4 5
posicin i del vector, el hijo
izquierdo esta en la posicin 2i, el
hijo derecho en 2i+1 y el padre en
i/2

Estructura de datos montculo

Propiedad de orden
1. El mnimo
raz

(mximo)

esta en la

2. Como todo subrbol tambin


es un montculo, todo nodo
debe ser menor (mayor) o igual
que todos sus descendientes

15
12

13
8

7 5 3 4 5

Estructura de datos montculo

Ejemplo de montculos de mximos


1

13

10

12

15

12

11

15

13

12

10

11

12

Estructura de datos montculo

Ubicacin del elemento en el vector


15

13

10

12

11

i=3

i/2=1

12

2*i=2*3=6

2*i+1=2*3+1=7

15

13

12

10

11

12

Estructura de datos montculo

Ventajas
No hay necesidad de almacenar
punteros como en los ABB.

Los clculos de ndices tardan menos


tiempo que los de referencia de
punteros
asociados
a
una
representacin enlazada.

Estructura de datos montculo

Mantenimiento de montculos
La
operacin
EncontrarMin()
o
EncontrarMax(), se realiza en orden
constante ya que solo ser necesario
acceder al valor de la raz.
Las operaciones Insertar(x), EliminarMin()
o EliminarMax() no tienen implantaciones
triviales en un montculo binario. Es
necesario
asegurar
que
ambas
operaciones
no
destruyan
las
propiedades del montculo.

Estructura de datos montculo

Insertar (x)
Al insertar un elemento x en un montculo de n
elementos debe resultar un rbol binario de n+1
elementos, esto es:

El nodo se aade como una hoja extrema


creciendo de izquierda a derecha (n+1). (garantiza
la propiedad de forma)

Se garantiza la propiedad de ordenamiento


2

2 8 3 10
2 16 7 18 13 15 4

8
10
13

3
16

15

18

Ejemplo de
montculos de
mnimos

2
8

10
13

4
15

18

16

2 8 3 10
2 4 7 18 13 15 16

REFLOTAMIENTO

Insertar (x)

Estructura de datos montculo

Reordenando para garantizar las


propiedades

2
4
10
13

3
8

15

18

16

2 4 3 10
2 8 7 18 13 15 16

REFLOTAMIENTO

Insertar (x)

Estructura de datos montculo

Reordenando para garantizar las


propiedades

Insertar (x)

Estructura de datos montculo

Resultado final

4
10
13

3
8

15

18

16

2 4 3 10
2 8 7 18 13 15 16

Estructura de datos montculo

Eliminar()
Al eliminar un elemento X en un montculo de
n elementos, se elimina el elemento de clave
mnima o mxima, es decir el elemento de la
raz.

Se debe
garantizar la propiedad de
ordenamiento
2

2 8 3 10
2 16 7 18 13 15

8
10
13

3
16

15

18

Eliminando un
elemento del
montculo

15

Eliminar()

Estructura de datos montculo

Ubicando la nueva raiz

8
10
13

3
16

18

Se
ubica
el
ultimo elemento
como
raz
(posicin 1)

15

15 8 3 10
2 16 7 18 13

n = n -1

8
10

3
16

18

13

15 8 3 10
2 16 7 18 13

HUNDIMIENTO

15

Eliminar()

Estructura de datos montculo

Reordenando para garantizar las


propiedades

3
8
10

15
16

18

13

3 8 15 10
2 16 7 18 13

HUNDIMIENTO

Eliminar()

Estructura de datos montculo

Reordenando para garantizar las


propiedades

Eliminar()

Estructura de datos montculo

Resultado final

8
10

7
16

15

18

13

3 8 7 10
2 16 15 18 13

Estructura de datos montculo

Entonces:
En la operacin de insercin es necesario
realizar un subir (filtrado ascendente) del nodo a
insertar para asegurar la propiedad de
forma.

En la operacin de eliminacin es
necesario realizar un hundir (filtrado
descendente) del nodo pivote para asegurar
la propiedad de forma.

Estructura de datos montculo

Ejercicio
Creacin de un montculo a partir de una
coleccin existente de datos.
Solucin 1:
Hacer n inserciones en un montculo
inicialmente vaco O(n log n). Enfoque
de arriba hacia abajo.
Solucin 2:
Utilizar un enfoque de abajo hacia
arriba, O(n).

Estructura de datos montculo

Detalle de la Solucin 2: Utilizar un enfoque de abajo


hacia arriba, O(n).
Pasos:
Almacenar arbitrariamente los n elementos en el
rbol.

19
2
18
16

13
15

19 2 13 18
2 15 3 7 16 8

Estructura de datos montculo

Pasos:

Con el nodo [n/2],


procesar en orden
decreciente hasta el nodo 1, montificar el
subrbol con raz en cada nodo por medio de un
hundir.
1

19

18
16

13
15

[n/2] =[9/2]=4

19 2 13 18
2 15 3 7 16 8

Estructura de datos montculo

Pasos:

Procesando en orden decreciente el nodo n-1,


montificar el subrbol con raz en cada nodo por
medio de un hundir.

19

2
8
16

13
15

18
19 2 13 28 15 3 7 16 18

Estructura de datos montculo

Pasos:
Procesando en orden decreciente el nodo n-2,
montificar el subrbol con raz en cada nodo por
medio de un hundir.
1

19

2
8
16

3
15

13

18
19 2 3 28 15 13 7 16 18

Estructura de datos montculo

Pasos:
Procesando en orden decreciente el nodo n-3,
montificar el subrbol con raz en cada nodo por
medio de un hundir.
1

19
2
8
16

3
15

13

18
19 2 3 28 15 13 7 16 18

Estructura de datos montculo

Pasos:
Procesando en orden decreciente por el medio
de hundir para garantizar la propiedad del
montculo.

2
19
8
16

3
15

13

18
2 19 3 28 15 13 7 16 18

Estructura de datos montculo

Pasos:
Procesando en orden decreciente por el medio
de hundir para garantizar la propiedad del
montculo.

2
8

19
16

3
15

13

18
2 8 3 19
2 15 13 7 16 18

Estructura de datos montculo

Resultado final
2
8

16
19

3
15

13

18

2 8 3 16
2 15 13 7 19 18

Estructura de datos montculo

Ejercicio
Muestre el resultado de insertar los
elementos 10, 15, 1 , 5, 30 , 8 , 25 , 6 , 17 uno
a uno en un montculo de mnimos
inicialmente vaco.

Ordenacin por montculos

Ordenamiento de mximo
19
2
18
16

13
15

[n/2] =[9/2]=4 Ultimo Padre


Hijo Izq =2(n) = 8
Hijo Der =2(n)+1 = 9

19 2 13 18
2 15 3 7 16 8

19 2 13 18
2 15 3 7 16 8

19 2 13 18
2 15 3 7 16 8

19 18 13 2 15 3 7 16 8

19 2 13 18
2 15 3 7 16 8

19 18 13 2 15 3 7 16 8

19 2 13 18
2 15 3 7 16 8

8 18 13 2 15 3 7 16 19

Ordenacin por montculos

Ordenamiento de mximo
8
18
2
16

13
15

19

[n/2] =[8/2]=4 Ultimo Padre


Hijo Izq =2(n) = 8
Hijo Der =2(n)+1 = 9

8 18 13 2 15 3 7 16 19

8 18 13 16
2 15 3 7 2 19

8 18 13 2 15 3 7 16 19

8 18 13 16
2 15 3 7 2 19

8 18 13 16
2 15 3 7 2 19

18 8 13 16
2 15 3 7 2 19

8 18 13 16
2 15 3 7 2 19

2 8 13 16
2 15 3 7 18 19

Ordenacin por montculos

Ordenamiento de mximo
2
8
16
18

13
15

19

[n/2] =[7/2]=3 Ultimo Padre


Hijo Izq =2(n) = 6
Hijo Der =2(n)+1 = 7

2 8 13 16
2 15 3 7 18 19

16 2 13 28 15 3 7 18 19

2 8 13 16
2 15 3 7 18 19

7 2 13 28 15 3 16 18 19

2 8 13 16
2 15 3 7 18 19
2 16 13 28 15 3 7 18 19

Ordenacin por montculos

Ordenamiento de mximo
7
2
8
18

13
15

19

16

[n/2] =[6/2]=3 Ultimo Padre


Hijo Izq =2(n) = 6
Hijo Der =2(n)+1 = 7

7 2 13 28 15 3 16 18 19

15 7 13 28 2 3 16 18 19

7 2 13 28 15 3 16 18 19

3 7 13 28 2 15 16 18 19

7 2 13 28 15 3 16 18 19

7 15 13 28 2 3 16 18 19

Ordenacin por montculos

Ordenamiento de mximo
3
7
8
18

13
2

15

19

3 7 13 28 2 15 16 18 19
3 7 13 28 2 15 16 18 19
3 8 13 27 2 15 16 18 19
13 8 3 27 2 15 16 18 19

16

[n/2] =[5/2]=2 Ultimo Padre


Hijo Izq =2(n) = 4
Hijo Der =2(n)+1 = 5

2 8 3 27 13 15 16 18 19

Ordenacin por montculos

Ordenamiento de mximo
2
8
7
18

3
13

15

19

2 8 3 27 13 15 16 18 19

2 8 3 27 13 15 16 18 19
2 8 3 27 13 15 16 18 19
8 2 3 27 13 15 16 18 19

16

[n/2] =[4/2]=2 Ultimo Padre


Hijo Izq =2(n) = 4
Hijo Der =2(n)+1 = 5

7 2 3 28 13 15 16 18 19

Ordenacin por montculos

Ordenamiento de mximo
7
2
8
18

3
13

15

16

19

7 2 3 28 13 15 16 18 19
7 2 3 28 13 15 16 18 19

3 2 7 28 13 15 16 18 19

[n/2] =[3/2]=1 Ultimo Padre


Hijo Izq =2(n) = 2
Hijo Der =2(n)+1 = 3

Ordenacin por montculos

Ordenamiento de mximo
3
2
8
18

7
13

15

16

19

3 2 7 28 13 15 16 18 19
3 2 7 28 13 15 16 18 19
2 3 7 28 13 15 16 18 19

[n/2] =[2/2]=1 Ultimo Padre


Hijo Izq =2(n) = 2
Hijo Der =2(n)+1 = 3

Ordenacin por montculos

Ordenamiento de mximo
2
3
8
18

7
13

15

16

19

2 3 7 28 13 15 16 18 19

2 3 7 28 13 15 16 18 19

[n/2] =[2/2]=1 Ultimo Padre


Hijo Izq =2(n) = 2
Hijo Der =2(n)+1 = 3

Ordenacin por montculos

Ordenamiento de mximo
2
3
8
18

7
13

15

16

19

2 3 7 28 13 15 16 18 19

Ordenacin por montculos

Ejercicio
Muestre el resultado de insertar los
elementos 10, 15, 1 , 5, 30 , 8 , 25 , 6 , 17 uno
a uno en un montculo de mximos
inicialmente vaco y luego aplique el
algoritmo de ordenamiento por montculos.

Cola de prioridades

Introduccin
En muchas aplicaciones los
registros con clave se deben
procesar en orden, pero no
necesariamente en orden
completo, ni todos a la vez. A
veces se forma un conjunto
de registros y se procesa el
mayor;
a
continuacin
posiblemente se incluyan
otros elementos y luego se
procesa el nuevo registro
mximo y as sucesivamente.

Cola de prioridades

Las aplicaciones de las colas de


prioridades incluyen:
la gestin de un planificador de tareas
en un Sistema MultiUsuario.
los trabajos que consumen menos
recursos
los trabajos del administrador del sistema

la gestin de los trabajos enviados a


impresin
los trabajos ms importantes primero
los trabajos ms cortos primero

Cola de prioridades

Por razones de utilidad se debe precisar algo mas


sobre la forma de tratar las colas de prioridad,
puesto que existen varias operaciones que pueden
ser necesario llevar a cabo sobre ellas, para
preservarlas y poderlas utilizar con eficacia en las
aplicaciones.
Lo que se desea es construir y mantener una
estructura de datos que contenga registros con
claves numricas (prioridades) y que cuente con
algunas de las operaciones siguientes:
Construir una cola de prioridad a partir de N elementos

Insertar un nuevo elemento


Suprimir el elemento mas grande
Cambiar la prioridad de un elemento

Unir dos colas de prioridad en una mas grande

Cola de prioridades

Las operaciones ms importantes en una cola de


prioridades se refieren aquellas que permiten
repetidamente seleccionar el elemento de la cola
de prioridad que tiene como clave el valor mnimo
(mximo).
Esto conlleva a que una cola de prioridad P debe
soportar las siguiente operaciones:

ColaPrioridad(T)
Insertar(P,x): aade el elemento x a la cola de
prioridad
EncontrarMin(P): Devuelve el elemento de P con la
prioridad con menor valor.
EliminarMin(P): Quita y devuelve el elemento con la
prioridad con menor valor.

Cola de prioridades

Implementaciones de una Cola de


Prioridades
Arboles equilibrados (AVL, Rojo y Negro)
Permite las operaciones en O(log n).
Se mantiene la propiedad de ABB.
Se aade costo adicional por las operaciones
de equilibrio.

Montculos Binarios
Montculos a la izquierda

Cola de prioridades

Trabajo Prctico
Desarrollar una aplicacin para determinar el
orden de atencin a los clientes en una
entidad bancaria que cuenta con 4
ventanillas y las clientes pueden tener tres
tipos de tarjetas: Clsica, Dorada, Platinium, y
la prioridad esta dada por: Platinium tiene
mayor prioridad que la Dorada y la Dorada
mayor que la Clsica; considerar que la
llegada de los clientes puede ser en
cualquier orden.
Fecha de presentacin: Prxima clase.

Tpicos I
Unidad I

Arboles, Montculos y Grafos

Semana 3

Cola de Prioridades

También podría gustarte