S03 - 1 Cola de Prioridades
-
Upload
pablo-chavez -
Category
Documents
-
view
223 -
download
0
Transcript of S03 - 1 Cola de Prioridades
-
8/17/2019 S03 - 1 Cola de Prioridades
1/51
Tópicos I
Unidad I
Cola de Prioridades
Semana 3
Arboles, Montículos y Grafos
-
8/17/2019 S03 - 1 Cola de Prioridades
2/51
Objetivos Generales
Entender el manejo, uso de algoritmos yestructuras de datos avanzados, haciendoénfasis en los algoritmos de internet,seguridad y redes.
-
8/17/2019 S03 - 1 Cola de Prioridades
3/51
Objetivo Específico
Implementar algoritmos utilizandoestructura de datos avanzadas.
-
8/17/2019 S03 - 1 Cola de Prioridades
4/51
Objetivo Instruccional
Implementar algoritmos para casos en loscuales el orden de procesamiento estabasado en prioridades.
-
8/17/2019 S03 - 1 Cola de Prioridades
5/51
-
8/17/2019 S03 - 1 Cola de Prioridades
6/51
•
El montículo binario permite obtener el mínimoelemento de un conjunto en un tiempo constante, esdecir; independiente del tamaño del conjunto dedatos.
•
Su utilidad se aprecia en la implementación de unaCola de Prioridad en la que se van obteniendo losdatos en base a su prioridad. Por ejm:
– Atención de clientes en una agencia bancaria (tarjetasclásicas, doradas, etc.).
– Atención de pacientes en un hospital (estado de saludmas critico).
– Priorización de trabajos de impresión (primero se imprimenlas de menor cantidad de paginas)
I n t r o d u c
c i ó n
Consideraciones
-
8/17/2019 S03 - 1 Cola de Prioridades
7/51
Un montículo binario (o simplemente montículo oheap) cumple dos propiedades:
• Propiedad estructural – Es un árbol binario completo
• Propiedad de orden
E s t r u c t u r a d e d a t o s m o n t í c u l o
Propiedades de los montículos
-
8/17/2019 S03 - 1 Cola de Prioridades
8/51
• Un montículo binario es un árbol binariocompleto en el cual todos los niveles estánllenos, con la posible excepción del nivelmas bajo, que se llena de izquierda aderecha.
• Un árbol binario completo de altura h,tiene entre 2h y 2h+1-1 nodos. Esta
regularidad facilita su representaciónmediante un vector.
• Para cualquier elemento en laposición i del vector, el hijoizquierdo esta en la posición 2i, elhijo derecho en 2i+1 y el padre en
i/2
E s t r u c t u r a d e d a t o s m o n t í c u l o
Propiedad estructural
15
1312
8 9 5 8
7 5 3 45
-
8/17/2019 S03 - 1 Cola de Prioridades
9/51
1. El mínimo (máximo) esta en laraíz
2. Como todo subárbol tambiénes un montículo, todo nododebe ser menor (mayor) o igual
que todos sus descendientes
Propiedad de orden
15
13 12
8 9 5 8
7 5 3 45
E s t r u c t u r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
10/51
Ejemplo de montículos de máximos
15
13 12
8 9 5 8
7 5 3 45
15 13 12 8 9 5 8 7 5 3 4 5
1 2 3 4 5 6 7 8 9 10 11 12
1
23
45 6
7
8 9 10 11 12
E s t r u c t u r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
11/51
Ubicación del elemento en el vector
15 13 12 8 9 5 8 7 5 3 4 5
1 2 3 4 5 6 7 8 9 10 11 12
15
13 12
8 9 5 8
7 5 3 45
1
2 3
4 5 6 7
8 9 10 11 12
i=3i/2=1 2*i=2*3=6 2*i+1=2*3+1=7
E s t r u c t u
r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
12/51
Ventajas
• No hay necesidad de almacenarpunteros como en los ABB.
• Los cálculos de índices tardan menostiempo que los de referencia depunteros asociados a unarepresentación enlazada.
E s t r u c t u
r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
13/51
• La operación EncontrarMin() oEncontrarMax(), se realiza en ordenconstante ya que solo será necesarioacceder al valor de la raíz.
• Las operaciones Insertar(x), EliminarMin()o EliminarMax() no tienen implantacionestriviales en un montículo binario. Es
necesario asegurar que ambasoperaciones no destruyan laspropiedades del montículo.
E s t r u c t u
r a d e d a t o s m o n t í c u l o
Mantenimiento de montículos
-
8/17/2019 S03 - 1 Cola de Prioridades
14/51
Insertar (x)
Al insertar un elemento x en un montículo de n
elementos debe resultar un árbol binario de n+1 elementos, esto es:
• El nodo se añade como una hoja extremacreciendo de izquierda a derecha (n+1). (garantiza
la propiedad de forma)
• Se garantiza la propiedad de ordenamiento
2
8 3
10 16 7 18
13 15
2 8 3 210 16 7 18 13 15
4
4
Ejemplo de
montículos de
mínimos E s t r u c t u
r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
15/51
2
8 3
10 4 7 18
13 15
2 8 3 210 4 7 18 13 15
16
16
Reordenando para garantizar laspropiedades
E s t r u c t u
r a d e d a t o s m o n t í c u l o
I n s e r t a r
( x )
R E F L O T A M I E N T
O
-
8/17/2019 S03 - 1 Cola de Prioridades
16/51
4 3
10 8 7 18
13 15
2 4 3 210 8 7 18 13 15
16
16
2
E s t r u c t u
r a d e d a t o s m o n t í c u l o
I n s e r t a r
( x )
Reordenando para garantizar laspropiedades
R E F L O T A M I E N T
O
-
8/17/2019 S03 - 1 Cola de Prioridades
17/51
4 3
10 8 7 18
13 15
2 4 3 210 8 7 18 13 15
16
16
2
Resultado final
E s t r u c t u
r a d e d a t o s m o n t í c u l o
I n s e r t a r
( x )
-
8/17/2019 S03 - 1 Cola de Prioridades
18/51
Eliminar()
Al eliminar un elemento X
en un montículo de
n elementos, se elimina el elemento de clavemínima o máxima, es decir el elemento de laraíz.
•Se debe garantizar la propiedad deordenamiento
2
8 3
10 16 7 18
13 15
2 8 3 210 16 7 18 13 15
Eliminando un
elemento del
montículo
E s t r u c t u
r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
19/51
15
8 3
10 16 7 18
13 15
15 8 3 210 16 7 18 13 n = n -1 E s t r u c t u
r a d e d a t o s m o n t í c u l o
E l i m i n a
r ( )
Ubicando la nueva raiz
Se ubica el
ultimo elementocomo raíz
(posición 1)
-
8/17/2019 S03 - 1 Cola de Prioridades
20/51
15
8 3
10 16 7 18
13
15 8 3 210 16 7 18 13 E s t r u c t u
r a d e d a t o s m o n t í c u l o
E l i m i n a
r ( )
Reordenando para garantizar laspropiedades
H U N D I M I E N T O
-
8/17/2019 S03 - 1 Cola de Prioridades
21/51
3
8 15
10 16 7 18
13
3 8 15 210 16 7 18 13 E s t r u c t u
r a d e d a t o s m o n t í c u l o
E l i m i n a
r ( )
Reordenando para garantizar laspropiedades
H U N D I M I E N T O
-
8/17/2019 S03 - 1 Cola de Prioridades
22/51
3
8 7
10 16 15 18
13
3 8 7 210 16 15 18 13
E s t r u c t u
r a d e d a t o s m o n t í c u l o
E l i m i n a
r ( )
Resultado final
-
8/17/2019 S03 - 1 Cola de Prioridades
23/51
Entonces:
•En la operación de inserción es necesariorealizar un subir (filtrado ascendente) del nodo ainsertar para asegurar la propiedad deforma.
• En la operación de eliminación esnecesario realizar un hundir (filtradodescendente) del nodo pivote para asegurarla propiedad de forma.
E s t r u c t u
r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
24/51
Ejercicio
Creación de un montículo a partir de unacolección existente de datos.
•Solución 1:
Hacer n inserciones en un montículoinicialmente vacío O(n log n). Enfoquede arriba hacia abajo.
•Solución 2:
Utilizar un enfoque de abajo haciaarriba, O(n). E
s t r u c t u
r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
25/51
Detalle de la Solución 2: Utilizar un enfoque de abajohacia arriba, O(n).
Pasos:
• Almacenar arbitrariamente los n elementos en elárbol.
192 13
18 15 3 7
16
19 2 13 218 15 3 7 16
8
8 E s t r u c t u
r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
26/51
Pasos:
•Con el nodo [n/2], procesar en ordendecreciente hasta el nodo 1, montificar elsubárbol con raíz en cada nodo por medio de unhundir.
16
19
2 13
18 15 3 7
19 2 13 218 15 3 7 16
8
8
4
32
1
[n/2] =[9/2]=4
E s t r u c t u
r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
27/51
16
19
2 13
8 15 3 7
19 2 13 28 15 3 7 16
18
18
32
1
Pasos:
• Procesando en orden decreciente el nodo n-1,montificar el subárbol con raíz en cada nodo pormedio de un hundir.
E s t r u c t u
r a d e d a t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
28/51
16
19
2 3
8 15 13 7
19 2 3 28 15 13 7 16
18
18
2
1
Pasos:
• Procesando en orden decreciente el nodo n-2,
montificar el subárbol con raíz en cada nodo pormedio de un hundir.
E s t r u c t u
r a d e d a
t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
29/51
16
19
2 3
8 15 13 7
19 2 3 28 15 13 7 16
18
18
1
Pasos:
• Procesando en orden decreciente el nodo n-3,
montificar el subárbol con raíz en cada nodo pormedio de un hundir.
E s t r u c t u
r a d e d a
t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
30/51
16
219 3
8 15 13 7
2 19 3 28 15 13 7 16
18
18
Pasos:
• Procesando en orden decreciente por el medio
de hundir para garantizar la propiedad delmontículo.
E s t r u c t u
r a d e d a
t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
31/51
16
2
19
38
15 13 7
2 8 3 219 15 13 7 16
18
18
Pasos:
• Procesando en orden decreciente por el medio
de hundir para garantizar la propiedad delmontículo.
E s t r u c t u
r a d e d a
t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
32/51
16
2
19
38
15 13 7
2 8 3 216 15 13 7 19
18
18
Resultado final
E s t r u c t u
r a d e d a
t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
33/51
Ejercicio
Muestre el resultado de insertar loselementos 10, 15, 1 , 5, 30 , 8 , 25 , 6 , 17 unoa uno en un montículo de mínimosinicialmente vacío.
E s t r u c t u
r a d e d a
t o s m o n t í c u l o
-
8/17/2019 S03 - 1 Cola de Prioridades
34/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u
l o s
19
2 13
18 15 3 7
16
19 2 13 218 15 3 7 16
8
8
[n/2] =[9/2]=4 Ultimo Padre
Hijo Izq =2(n) = 8
Hijo Der =2(n)+1 = 9
19 2 13 218 15 3 7 16 8
19 2 13 218 15 3 7 16 8
19 2 13 218 15 3 7 16 8
19 2 13 218 15 3 7 16 8
19 18 13 22 15 3 7 16 8
19 18 13 22 15 3 7 16 8
8 18 13 22 15 3 7 16 19
-
8/17/2019 S03 - 1 Cola de Prioridades
35/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u
l o s
8
18 13
2 15 3 7
16 19
[n/2] =[8/2]=4 Ultimo Padre
Hijo Izq =2(n) = 8
Hijo Der =2(n)+1 = 9
8 18 13 22 15 3 7 16 19
8 18 13 216 15 3 7 2 19
8 18 13 216 15 3 7 2 19
8 18 13 216 15 3 7 2 19
8 18 13 216 15 3 7 2 19
18 8 13 216 15 3 7 2 19
2 8 13 216 15 3 7 18 19
8 18 13 22 15 3 7 16 19
-
8/17/2019 S03 - 1 Cola de Prioridades
36/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u
l o s
2
8 13
16 15 3 7
18 19
[n/2] =[7/2]=3 Ultimo Padre
Hijo Izq =2(n) = 6
Hijo Der =2(n)+1 = 7
2 8 13 216 15 3 7 18 19
2 16 13 28 15 3 7 18 19
16 2 13 28 15 3 7 18 19
7 2 13 28 15 3 16 18 19
2 8 13 216 15 3 7 18 19
2 8 13 216 15 3 7 18 19
-
8/17/2019 S03 - 1 Cola de Prioridades
37/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u
l o s
7
2 13
8 15 3 16
18 19
[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
7 2 13 28 15 3 16 18 19
7 15 13 28 2 3 16 18 19
15 7 13 28 2 3 16 18 197 2 13 28 15 3 16 18 19
3 7 13 28 2 15 16 18 19
-
8/17/2019 S03 - 1 Cola de Prioridades
38/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u
l o s
3
7 13
8 2 15 16
18 19
[n/2] =[5/2]=2 Ultimo Padre
Hijo Izq =2(n) = 4
Hijo Der =2(n)+1 = 5
3 7 13 28 2 15 16 18 19
3 8 13 27 2 15 16 18 19
2 8 3 27 13 15 16 18 193 7 13 28 2 15 16 18 19
13 8 3 27 2 15 16 18 19
-
8/17/2019 S03 - 1 Cola de Prioridades
39/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u
l o s
2
8 3
7 13 15 16
18 19
[n/2] =[4/2]=2 Ultimo Padre
Hijo Izq =2(n) = 4
Hijo Der =2(n)+1 = 5
2 8 3 27 13 15 16 18 19
2 8 3 27 13 15 16 18 19
7 2 3 28 13 15 16 18 192 8 3 27 13 15 16 18 19
8 2 3 27 13 15 16 18 19
-
8/17/2019 S03 - 1 Cola de Prioridades
40/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u
l o s
7
2 3
8 13 15 16
18 19
[n/2] =[3/2]=1 Ultimo Padre
Hijo Izq =2(n) = 2
Hijo Der =2(n)+1 = 3
7 2 3 28 13 15 16 18 19
3 2 7 28 13 15 16 18 19
7 2 3 28 13 15 16 18 19
-
8/17/2019 S03 - 1 Cola de Prioridades
41/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u
l o s
3
2 7
8 13 15 16
18 19
[n/2] =[2/2]=1 Ultimo Padre
Hijo Izq =2(n) = 2
Hijo Der =2(n)+1 = 3
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
-
8/17/2019 S03 - 1 Cola de Prioridades
42/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u l o s
2
3 7
8 13 15 16
18 19
[n/2] =[2/2]=1 Ultimo Padre
Hijo Izq =2(n) = 2
Hijo Der =2(n)+1 = 3
2 3 7 28 13 15 16 18 19
2 3 7 28 13 15 16 18 19
-
8/17/2019 S03 - 1 Cola de Prioridades
43/51
Ordenamiento de máximo
O r d e n
a c i ó n p o
r m o n t í c u l o s
2
3 7
8 13 15 16
18 19
2 3 7 28 13 15 16 18 19
-
8/17/2019 S03 - 1 Cola de Prioridades
44/51
Ejercicio
Muestre el resultado de insertar loselementos 10, 15, 1 , 5, 30 , 8 , 25 , 6 , 17 unoa uno en un montículo de máximosinicialmente vacío y luego aplique el
algoritmo de ordenamiento por montículos.
O r d e n
a c i ó n p o
r m o n t í c u l o s
-
8/17/2019 S03 - 1 Cola de Prioridades
45/51
En muchas aplicaciones losregistros con clave se debenprocesar en orden, pero nonecesariamente en ordencompleto, ni todos a la vez. A
veces se forma un conjuntode registros y se procesa elmayor; a continuaciónposiblemente se incluyan
otros elementos y luego seprocesa el nuevo registromáximo y así sucesivamente.
Introducción
C o
l a d e p r i o r i d a d e s
-
8/17/2019 S03 - 1 Cola de Prioridades
46/51
Las aplicaciones de las colas deprioridades incluyen:
• la gestión de un planificador de tareasen un Sistema MultiUsuario.
– los trabajos que consumen menos
recursos – los trabajos del administrador del sistema
• la gestión de los trabajos enviados a
impresión – los trabajos más importantes primero
– los trabajos más cortos primero
C o
l a d e p r i o r i d a d e s
-
8/17/2019 S03 - 1 Cola de Prioridades
47/51
Por razones de utilidad se debe precisar algo massobre la forma de tratar las colas de prioridad,puesto que existen varias operaciones que pueden
ser necesario llevar a cabo sobre ellas, parapreservarlas y poderlas utilizar con eficacia en lasaplicaciones.
Lo que se desea es construir y mantener unaestructura de datos que contenga registros conclaves numéricas (prioridades) y que cuente conalgunas 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
C o
l a d e p r i o r i d a d e s
-
8/17/2019 S03 - 1 Cola de Prioridades
48/51
Las operaciones más importantes en una cola deprioridades se refieren aquellas que permitenrepetidamente seleccionar el elemento de la cola
de prioridad que tiene como clave el valor mínimo(máximo).
Esto conlleva a que una cola de prioridad P debesoportar las siguiente operaciones:
ColaPrioridad(T)
Insertar(P,x): añade el elemento x a la cola deprioridad
EncontrarMin(P): Devuelve el elemento de P con laprioridad con menor valor.
EliminarMin(P): Quita y devuelve el elemento con laprioridad con menor valor.
C o
l a d e p r i o r i d a d e s
-
8/17/2019 S03 - 1 Cola de Prioridades
49/51
Implementaciones de una Cola dePrioridades
• Arboles equilibrados (AVL, Rojo y Negro)
Permite las operaciones en O(log n).
Se mantiene la propiedad de ABB.
Se añade costo adicional por las operacionesde equilibrio.
• Montículos Binarios
• Montículos a la izquierda C o
l a d e p r i o r i d a d e s
-
8/17/2019 S03 - 1 Cola de Prioridades
50/51
Trabajo Práctico
Desarrollar una aplicación para determinar el
orden de atención a los clientes en unaentidad bancaria que cuenta con 4ventanillas y las clientes pueden tener trestipos de tarjetas: Clásica, Dorada, Platinium, yla prioridad esta dada por: Platinium tienemayor prioridad que la Dorada y la Doradamayor que la Clásica; considerar que la
llegada de los clientes puede ser encualquier orden.
Fecha de presentación: Próxima clase.
C o
l a d e p r i o r i d a d e s
-
8/17/2019 S03 - 1 Cola de Prioridades
51/51
Tópicos I
Unidad I
Cola de Prioridades
Semana 3
Arboles, Montículos y Grafos