slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
COLAS DE PRIORIDAD PowerPoint Presentation
Download Presentation
COLAS DE PRIORIDAD

play fullscreen
1 / 105

COLAS DE PRIORIDAD

176 Views Download Presentation
Download Presentation

COLAS DE PRIORIDAD

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. COLAS DE PRIORIDAD Las colas de prioridad son estructuras de datos que resultan ser útiles en muchas aplicaciones informáticas. Dulce M. Rivero A. Estructura de datos

  2. COLAS DE PRIORIDAD Las colas de prioridad son estructuras de datos que resultan ser útiles en muchas aplicaciones informáticas. Es utila pensar en los valores de las claves asociados con los elementos como prioridades. Así, las claves obedecen a un relación de orden total. Dulce M. Rivero A. Estructura de datos

  3. COLAS DE PRIORIDAD • Las colas de prioridad son estructuras de datos que resultan ser útiles en muchas aplicaciones informáticas. • Es útil pensar en los valores de las claves asociados con los elementos como prioridades. • Así, las claves obedecen a un relación de orden total. • Ejemplos: • Planificación de trabajos en un sistema multiusuario. • Simulación de sucesos discretos • Desarrollo de códigos de prefijos óptimos Dulce M. Rivero A. Estructura de datos

  4. COLAS DE PRIORIDAD Las operaciones más importantes en un TDA de colas de prioridad se refieren aquellas que permiten repetidamente seleccionar el elemento de la cola de prioridad que tiene como clave el valor máximo (mínimo). Esto conlleva a que una cola de prioridad debe soportar las siguientes operaciones: Dulce M. Rivero A. Estructura de datos

  5. ColaPrioridad(T) Insertar(P,x): añade el elemento x a la cola de prioridad COLAS DE PRIORIDAD Las operaciones más importantes en un TDA de colas de prioridad se refieren aquellas que permiten repetidamente seleccionar el elemento de la cola de prioridad que tiene como clave el valor máximo (mínimo). Esto conlleva a que una cola de prioridad P debe soportar las siguiente operaciones: Dulce M. Rivero A. Estructura de datos

  6. ColaPrioridad(T) Insertar(P,x): añade el elemento x a la cola de prioridad EncontrarMin(P): Devuelve el elemento de P con la priridad con menor valor. COLAS DE PRIORIDAD Las operaciones más importantes en un TDA de colas de prioridad se refieren aquellas que permiten repetidamente 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 debe soportar las siguiente operaciones: Dulce M. Rivero A. Estructura de datos

  7. ColaPrioridad(T) Insertar(P,x): añade el elemento x a la cola de prioridad EncontrarMin(P): Devuelve el elemento de P con la priridad con menor valor. EliminarMin(P): Quite y devuelve el elemento con la priridad con menor valor. COLAS DE PRIORIDAD Las operaciones más importantes en un TDA de colas de prioridad se refieren aquellas que permiten repetidamente 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 debe soportar las siguiente operaciones: Dulce M. Rivero A. Estructura de datos

  8. COLAS DE PRIORIDAD • Implementaciones de un TDA de Cola de Prioridad • Arboles equilibrados (AVL, ROJO y NEGRO) • Permite las operaciones en O(log n). • Se mantiene la propiedad de ABB sin nesecidad. • Se añade costo adicional por las operaciones de equilibrio sin necesidad. Dulce M. Rivero A. Estructura de datos

  9. COLAS DE PRIORIDAD • Implementaciones de un TDA de Cola de Prioridad • Arboles equilibrados (AVL, ROJO y NEGRO) • Permite las operaciones en O(log n). • Se mantiene la propiedad de ABB sin nesecidad. • Se añade costo adicional por las operaciones de equilibrio sin necesidad. • Montículos Binarios Montículos-d Dulce M. Rivero A. Estructura de datos

  10. COLAS DE PRIORIDAD • Implementaciones de un TDA de Colad de Prioridad • Arboles equilibrados (AVL, ROJO y NEGRO) • Permite las operaciones en O(log n). • Se mantiene la propiedad de ABB sin nesecidad. • Se añade costo adicional por las operaciones de equilibrio sin necesidad. • Montículos Binarios, Montículos-d • Montículos a la izquierda Dulce M. Rivero A. Estructura de datos

  11. COLAS DE PRIORIDAD • Implementaciones de un TDA de Colad de Prioridad • Arboles equilibrados (AVL, ROJO y NEGRO) • Permite las operaciones en O(log n). • Se mantiene la propiedad de ABB sin nesecidad. • Se añade costo adicional por las operaciones de equilibrio sin necesidad. • Montículos Binarios, Montículos-d • Montículos a la izquierda • Montículos oblicuos. ( Estructura amortizada) Dulce M. Rivero A. Estructura de datos

  12. COLAS DE PRIORIDAD • Implementaciones de un TDA de Colad de Prioridad • Arboles equilibrados (AVL, ROJO y NEGRO) • Permite las operaciones en O(log n). • Se mantiene la propiedad de ABB sin nesecidad. • Se añade costo adicional por las operaciones de equilibrio sin necesidad. • Montículos Binarios • Montículos a la izquierda • Montículos oblicuos. ( Estructura amortizada) • Colas binomiales, colas binomiales perezosas, colas Fibonacci Dulce M. Rivero A. Estructura de datos

  13. MONTÍCULOS BINARIOS Un montículo binario (o simplemente montículo o heap) es un árbol binario semicompleto en el que el valor de la clave almacenada en cualquier nodo es menor o igual que los valores claves de sus hijos Es una estructura de datos simple que da soporte eficiente al TDA de colas de prioridad. Dulce M. Rivero A. Estructura de datos

  14. MONTÍCULOS BINARIOS Un Monticúlo binario entonces debe satisfacer dos propiedades • Propiedad de ordenamiento parcial: la clave almacenada en cualquier nodo es menor o igualque los valores claves de sus hijos. 2 8 3 10 16 7 18 13 15 Dulce M. Rivero A. Estructura de datos

  15. MONTÍCULOS BINARIOS • Propiedad de ordenamiento parcial: la clave almacenada en cualquier nodo es menor o igual que los valores claves de sus hijos. • Propiedad de la forma: árbol binario semicompleto • Nodos hojas, sin huecos 2 8 3 10 16 7 18 13 15 Dulce M. Rivero A. Estructura de datos

  16. MONTÍCULOS BINARIOS • Propiedad de ordenamiento parcial: la clave almacenada en cualquier nodo es menor o igual que los valores claves de sus hijos. • Propiedad de la forma: árbol binario semicompleto • Nodos hojas, sin huecos 2 8 3 10 16 7 18 13 15 Dulce M. Rivero A. Estructura de datos

  17. MONTÍCULOS BINARIOS Ventajas: el hecho de ser semicompleto hace que sea posible una representación secuencial. 2 8 3 10 16 7 18 13 15 2 8 3 2 10 16 7 18 13 15 Dulce M. Rivero A. Estructura de datos

  18. MONTÍCULOS BINARIOS • La propiedad de la forma implica entonces: • Si un nodo está almacenado en la posición i. • Su hijo izquierdo, si existe, se encuentra en la posición 2i. • Su hijo derecho, si existe, se encuentra en la posición 2i+1. • El padre se encuentra en la posición i/2. 2 8 3 2*3=6 2*3+1=7 i/2=1 10 16 7 18 i=3 2 8 3 2 10 16 7 18 13 15 13 15 Dulce M. Rivero A. Estructura de datos

  19. MONTÍCULOS BINARIOS Se cálcula fácil y rápidamente, realizando un dezplazamiento de un bit a la izquierda o a la derecha. No hay necesidad de almacenar punteros como en los ABB. Los cálculos de índices tardan menos tiempo que los de desreferencia de punteros asociados a una representación enlazada. Dulce M. Rivero A. Estructura de datos

  20. MONTÍCULOS BINARIOS MANTENIMIENTO DE MONTICULOS La operación EncontrarMin() se realiza en orden constante ya que solo será necesario acceder al valor de la raíz. Las operaciones Insertar(x) y EliminarMin() no tienen implantaciones triviales en un montículo binario. Es necesario asegurar que ambas operaciones no destruyan las propiedades de un montículo. Dulce M. Rivero A. Estructura de datos

  21. MONTÍCULOS BINARIOS • 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 extrema creciendo de izquierda a derecha (n+1). Dulce M. Rivero A. Estructura de datos

  22. MONTÍCULOS BINARIOS • Insertar (x): • Al insertar un elemento x en un montículo de n elementos debe resultar un árbol binario de n+1 elemntos, esto es: • El nodo se añade como una hoja extrema creciendo de izquierda a derecha (n+1). (garantiza la propiedad de forma) • Se garantiza la propiedad de ordenamiento parcial 2 2 8 3 10 2 16 7 18 13 15 4 8 3 10 16 7 18 13 15 4 Dulce M. Rivero A. Estructura de datos

  23. MONTÍCULOS BINARIOS 2 8 3 10 4 7 18 13 15 16 2 8 3 2 10 4 7 18 13 15 16 Dulce M. Rivero A. Estructura de datos

  24. MONTÍCULOS BINARIOS 2 4 3 10 8 7 18 13 15 16 2 4 3 2 10 8 7 18 13 15 16 Dulce M. Rivero A. Estructura de datos

  25. MONTÍCULOS BINARIOS 2 4 3 10 8 7 18 13 15 16 2 4 3 2 10 8 7 18 13 15 16 Dulce M. Rivero A. Estructura de datos

  26. MONTÍCULOS BINARIOS 2 8 3 10 2 16 7 18 13 15 4 I=10 2 8 3 10 2 4 7 18 13 15 16 I=5 2 4 3 10 2 8 7 18 13 15 16 I=2 2 4 3 10 2 8 7 18 13 15 16 I=1 Dulce M. Rivero A. Estructura de datos

  27. MONTÍCULOS BINARIOS • Eliminar(): • Al eliminar un elemento x en un montículo de n elementos, se elimina el elemento de clave mínima, es decir el elemento de la raíz. • Se debe garantizar la propiedad de ordenamiento parcial?? 2 2 8 3 10 2 16 7 18 13 15 8 3 10 16 7 18 13 15 Dulce M. Rivero A. Estructura de datos

  28. MONTÍCULOS BINARIOS 15 8 3 10 16 7 18 13 15 15 8 3 2 10 16 7 18 13 n=n-1 Dulce M. Rivero A. Estructura de datos

  29. MONTÍCULOS BINARIOS 15 8 3 10 16 7 18 13 15 8 3 2 10 16 7 18 13 Dulce M. Rivero A. Estructura de datos

  30. MONTÍCULOS BINARIOS 3 8 15 10 16 7 18 13 3 8 15 2 10 16 7 18 13 Dulce M. Rivero A. Estructura de datos

  31. MONTÍCULOS BINARIOS 3 8 7 10 16 15 18 13 3 8 7 2 10 16 15 18 13 Dulce M. Rivero A. Estructura de datos

  32. MONTÍCULOS BINARIOS En la operación de inserción es necesario realizar un subir (filtrado ascendente) del nodo pivote o insertador para asegurar la propiedad de forma. En la operación de eliminación es necesario realizar un hundir (filtrado descendente) del nodo pivote o insertador para asegurar la propiedad de forma. Dulce M. Rivero A. Estructura de datos

  33. MONTÍCULOS BINARIOS • Creación de un montículo a partir de una colección existente de datos. • Sol 1: Hacer n inserciones en un montículo inicialmente vacío O(nlog n). Enfoque de arriba hacia abajo. Dulce M. Rivero A. Estructura de datos

  34. MONTÍCULOS BINARIOS • Creación de un montículo a partir de una colección existente de datos. • Sol 1: Hacer n inserciones en un montículo inicialmente vacío O(nlog n). Enfoque de arriba hacia abajo. • Sol 2: Utilizar un enfoque de abajo hacia arriba, O(n). Dulce M. Rivero A. Estructura de datos

  35. MONTÍCULOS BINARIOS • Sol 2: Utilizar un enfoque de abajo hacia arriba, O(n). • Pasos: • Almacenar arbitariamente los n elementos en el árbol. 19 2 13 18 15 3 7 16 8 19 2 13 2 18 15 3 7 16 8 Dulce M. Rivero A. Estructura de datos

  36. MONTÍCULOS BINARIOS • Pasos: • Almacenar arbitariamente los n elementos en el árbol. • Con el nodo [n/2] procesando en orden decreciente hasta el nodo 1, montificar el subárbol con raíz en cada nodo por medio de un hundir. 1 19 3 2 2 13 4 18 15 3 7 16 8 19 2 13 18 2 15 3 7 16 8 Dulce M. Rivero A. Estructura de datos

  37. MONTÍCULOS BINARIOS 1 19 2 3 2 13 8 15 3 7 16 18 19 2 13 2 8 15 3 7 16 18 Dulce M. Rivero A. Estructura de datos

  38. MONTÍCULOS BINARIOS 1 19 2 2 3 8 15 13 7 16 18 19 2 3 8 2 15 13 7 16 18 Dulce M. Rivero A. Estructura de datos

  39. MONTÍCULOS BINARIOS 19 2 3 8 15 13 7 16 18 19 2 3 2 8 15 13 7 16 18 Dulce M. Rivero A. Estructura de datos

  40. MONTÍCULOS BINARIOS 2 19 3 8 15 13 7 16 18 2 19 3 2 8 15 13 7 16 18 Dulce M. Rivero A. Estructura de datos

  41. MONTÍCULOS BINARIOS 2 8 3 19 15 13 7 16 18 2 8 3 2 19 15 13 7 16 18 Dulce M. Rivero A. Estructura de datos

  42. MONTÍCULOS BINARIOS 2 8 3 16 15 13 7 19 18 2 8 3 2 16 15 13 7 19 18 Dulce M. Rivero A. Estructura de datos

  43. MONTÍCULOS BINARIOS Template<class T> class Monticulo{ T elemento[max]; int n=0; protected: Flotar(int i); Hundir(int i); public: Montículo(const T& elem); Montículo(T* elem); Montículo(); Dulce M. Rivero A. Estructura de datos

  44. MONTÍCULOS BINARIOS void Inserta(const T& elem); T& EncontrarMin(); T& EliminarMin(); Booleano Vacio() const; inline void HacerVacio(); // operadores .>> << Dulce M. Rivero A. Estructura de datos

  45. MONTÍCULOS BINARIOS Template<class T> void Monticulo::Flotar(int i){ T elem=elemento[i]; int p=i/2; while (elem< elemento[p] && i>=1) { elemento[i]=elemento[p]; i=p; p=i>>1;} elemento[i]=elem;} Dulce M. Rivero A. Estructura de datos

  46. MONTÍCULOS BINARIOS Template<class T> void Monticulo::Hundir(int i){ Assert(i>=0) return; T elem=elemento[i]; int n; int c; j=i; c=2*i; while (c<=n) { if ( c+1<= n){ if (elemento[c+1]<elemento[c]) c=c+1;} if (elem>elemento[c]) elemento[j]=elemento[c]; j=c; c=j<<1; //2*j } elemento[j]=elem;} Dulce M. Rivero A. Estructura de datos

  47. MONTÍCULOS BINARIOS Template<class T> void Monticulo<T>::Insertar(constT& e){ n=n+1; if (n<=max){ elemento[n]=e; flotar(n);}} Template<class T> T& Monticulo<T>::EliminarMin(){ T* elem= new T(elemento[1]); elemento[1]=elemento[n]; n--; if (Vacio()==falso) Hundir(1); return *elem;} Dulce M. Rivero A. Estructura de datos

  48. MONTÍCULOS BINARIOS Template<class T> T& Monticulo<T>::EncontrarMin(){ T* elem= new T(elemento[1]); return *elem;} Template<class T> booleano Monticulo<T>::Vacio(){ if (n>0) return true; return falso; Dulce M. Rivero A. Estructura de datos

  49. MONTÍCULOS -d Montículos parecidos a los binarios, excepto que todos los nodos tienen d hijos. 5 1 6 7 10 2 3 4 21 61 31 14 13 12 19 18 16 4 7 10 13 15 16 8 17 9 Dulce M. Rivero A. Estructura de datos

  50. MONTÍCULOS -d • Características • Más bajos que los montículos binarios altura logd n. • Mejora la operación de insertar • EliminarMin es más costosa O(d logd n) ¿por qué? • Se pueden implantar en arreglos • Operaciones de multiplicación y división son más costosas • Bueno cuando hay muchas inserciones y pocas eliminaciones • Bueno cuando el tamaño del montículo es muy grande. Dulce M. Rivero A. Estructura de datos