1 / 17

Heap Fibonacci

Heap Fibonacci. heap de Fibonacci es una estructura de datos similar a un heap binomial pero con mejor coste amortizado .

benoit
Download Presentation

Heap Fibonacci

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Heap Fibonacci heap de Fibonacci es una estructura de datos similar a un heap binomial pero con mejor coste amortizado. se utiliza para mejorar el tiempo de ejecución asintótico del algoritmo de Dijkstra para calcular el camino más corto en un grafo y el algoritmo de Prim para calcular el árbol mínimo de un grafo. En particular, las operaciones Insertar, encontrar el mínimo, decrementar la clave, y la unión trabajan con tiempo constante amortizado.

  2. Heap Fibonacci Análisis amortizado En general, el coste de cada operación sobre el TAD (estructura de datos) no es independiente de las operaciones realizadas previamente. En lugar de caracterizar el coste (mejor, peor, medio) de cada operación individual resulta más adecuado considerar secuencias de operaciones arbitrarias sobre el TAD. Es posible que una operación tenga un coste peor elevado, pero que éste sea muy improbable cuando la operación se aplica dentro de secuencias de operaciones válidas.

  3. Heap Fibonacci Análisis amortizado Coste amortizado: coste que evalúa la eficiencia de un conjunto de operaciones que se aplican en un mismo contexto. El coste amortizado determina una cota superior (peor caso) para el coste de una secuencia de operaciones. Se dice que una operación tiene un coste amortizado tsi en cualquier secuencia de operaciones en la que aparezca, el coste total de las operaciones dividido por el número de éstas es menor o igual a t.

  4. Heap Fibonacci Análisis amortizado El análisis amortizado difiere del análisis en el caso medio en que no se consideran probabilidades. El análisis amortizado garantiza la eficiencia media de cada operación en el peor caso. Referencia para el tema: Capítulo 17 (pag. 405) “Introduction to Algorithms” T.H. Cormen, C.E. Leiserson, R.L. Rivest. MIT Press, 1990.

  5. Heap Fibonacci

  6. Heap Fibonacci • Heap Fibonacci y Heap Binomial son una colección de heap ordenados. • Propiedades: • Nodos en FH no están ordenados (por grado) en la lista de raíz o como hermanos. • Raíz y hermanos están dispuestos en una lista enlazada circular. • Cada nodo almacena su grado (nº de hijos). • Min(H) es un puntero al mínimo raíz en la lista de raíz. • N(H) es el nº de nodos actualmente en H.

  7. Heap Fibonacci

  8. Heap Fibonacci Sea A un árbol con raíz min(H), extrae A desde H. Elimina la raíz de A; reinserta el resto de los árboles “abandonados”en la lista raíz del heap, actualiza min(H) durante este proceso. Une raíz de igual grado hasta que al menos una raíz restante de cada grado.

  9. Heap Fibonacci Crea un nuevo árbol que contiene x y lo agrega a la lista de raíz. Y actualiza punteros adecuadamente.

  10. Heap Fibonacci

  11. Heap Fibonacci Las operaciones Borrar y Borrar el mínimo tienen un coste O(logn) como coste amortizado. Esto significa que, empezando con una estructura de datos vacía, cualquier secuencia de ‘a’ operaciones del primer grupo y ‘b’ operaciones del segundo grupo tardarían O(a + b.logn). En un heap ‘binomial’ esta secuencia de operaciones tardarían O((a+b)log(n)). Un heap de Fibonacci es mejor que un heap binomial cuando b es asintóticamente más pequeño que a. Aunque los costes son los arriba indicados, algunas operaciones pueden llevar mucho tiempo (en concreto Decrementar clave, Borrar y Borrar mínimo tienen un coste lineal en el peor caso). Por esta razón los Heaps de Fibonacci y otras estructuras de datos con coste amortizado no son apropiadas para sistemas de tiempo real.

  12. Heap Fibonacci Como resultado, algunas operaciones pueden llevar mucho tiempo mientras que otras se hacen muy deprisa. En el análisis del coste de ejecución amortizado se pretende que las operaciones muy rápidas tarden un poco más de lo que tardan. Este tiempo extra se resta después al tiempo de ejecución de operaciones más lentas. La cantidad de tiempo ahorrada para un uso posterior es medida por una función potencial. Esta función es: Potencial (H)= t (H)+ 2m(H) Donde t es el número de árboles en el Heap de Fibonacci, y m es el número de nodos marcados. Un nodo está marcado si al menos uno de sus hijos se cortó desde que el nodo se fue hecho hijo de otro nodo (todas las raíces están desmarcadas).

  13. Heap Fibonacci Sea A un árbol con raíz min(H), extrae A desde H. Elimina la raíz de A; reinserta el resto de los árboles “abandonados”en la lista raíz del heap, actualiza min(H) durante este proceso. Une raíz de igual grado hasta que al menos una raíz restante de cada grado.

  14. Heap Fibonacci

  15. Heap Fibonacci

  16. Heap Fibonacci

  17. Heap Fibonacci

More Related