Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad I
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
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)
Propiedad de orden
montculo o
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
Propiedad de orden
1. El mnimo
raz
(mximo)
esta en la
15
12
13
8
7 5 3 4 5
13
10
12
15
12
11
15
13
12
10
11
12
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
Ventajas
No hay necesidad de almacenar
punteros como en los ABB.
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.
Insertar (x)
Al insertar un elemento x en un montculo de n
elementos debe resultar un rbol binario de n+1
elementos, esto es:
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)
2
4
10
13
3
8
15
18
16
2 4 3 10
2 8 7 18 13 15 16
REFLOTAMIENTO
Insertar (x)
Insertar (x)
Resultado final
4
10
13
3
8
15
18
16
2 4 3 10
2 8 7 18 13 15 16
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()
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()
3
8
10
15
16
18
13
3 8 15 10
2 16 7 18 13
HUNDIMIENTO
Eliminar()
Eliminar()
Resultado final
8
10
7
16
15
18
13
3 8 7 10
2 16 15 18 13
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.
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).
19
2
18
16
13
15
19 2 13 18
2 15 3 7 16 8
Pasos:
19
18
16
13
15
[n/2] =[9/2]=4
19 2 13 18
2 15 3 7 16 8
Pasos:
19
2
8
16
13
15
18
19 2 13 28 15 3 7 16 18
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
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
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
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
Resultado final
2
8
16
19
3
15
13
18
2 8 3 16
2 15 13 7 19 18
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.
Ordenamiento de mximo
19
2
18
16
13
15
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
Ordenamiento de mximo
8
18
2
16
13
15
19
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
Ordenamiento de mximo
2
8
16
18
13
15
19
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
Ordenamiento de mximo
7
2
8
18
13
15
19
16
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
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
2 8 3 27 13 15 16 18 19
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
7 2 3 28 13 15 16 18 19
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
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
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
Ordenamiento de mximo
2
3
8
18
7
13
15
16
19
2 3 7 28 13 15 16 18 19
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
Cola de prioridades
Cola de prioridades
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
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
Semana 3
Cola de Prioridades