Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword
Like this
21Activity
0 of .
Results for:
No results containing your search query
P. 1
Fibonacci Heap

Fibonacci Heap

Ratings:

4.5

(2)
|Views: 1,816|Likes:
Published by Abel ORian
Completo informe de la estructura Fibonacci Heap, que se usa para implementar una cola de prioridad con bajo costo.
Todas las operaciones son O(1), menos quitarmin que es O(log n).
Completo informe de la estructura Fibonacci Heap, que se usa para implementar una cola de prioridad con bajo costo.
Todas las operaciones son O(1), menos quitarmin que es O(log n).

More info:

Published by: Abel ORian on Jun 25, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

01/03/2015

pdf

text

original

 
Fibonacci Heap (Monticulo de Fibonacci)
Objetivo
: El principal uso que se le puede asociar a esta nueva estructura esbuscar el elemento menor de una coleccion de elementos, que por ejemplo,seran usados en una cola de prioridad , en el menor tiempo posible, que esreducido en comparación a estructuras similares como lo es el Binomial Heap.
Introducción
:La colas de prioridad son un tema importante dentro de las ciencias de lacomputación. La busqueda de una implementacion que trabaje losuficientemente rapido de una de estas estructuras es motivada principalmentepor dos algoritmos de optimizacion en grafos, que son: algoritmo de Dijsktra:Camino más corto (SP, Shorter Path) y el algoritmo de Prim: árbol expandidominimal (MTS, Minimal Spanning Tree). Como se verá, Un Heap Fibonacciprovee una rapida y elegante solucion a esto.Otras situaciones de interes en los que se usa esta estructura, son aquellas queel borrado del elemento minimo y de borrado de cualquier otro elemento sonpoco frecuentesen comparacion con el resto.Un Heap Fibonacci es una estructura de datos inventada por Fredman y Tarjanen 1984 que da una implementacion muy eficiente de las colas de prioridad. Unheap de Fibonacci es una estructura de datos similar a un heap binomial perocon mejor coste amortizado.La meta es encontrar un camino rapido a minimizar el numero de operacionespara calcular el MST o SP, debido a que se mejora el tiempo de ejecucionasintotico de ambos algoritmos.Las operaciones que más interesan para este caso son
Insertar, Decrementar clave, Union y Encontrar Min,
que trabajan con un tiempo constante amortizado.La meta para alcanzar este bajo coste de operaciones es crear operaciones'peresozas' . Con esto, el programador es forzado a hacer varias operacionesmenos costosas en orden O(), haciendo que la estructura sea compliacada.Las operaciones
Borrar 
y
Borrar el mínimo
tienen un coste O(
logn
) como costeamortizado. Esto significa que, empezando con una estructura de datos vacía,cualquier secuencia de ‘a’ operaciones del primer grupo y ‘b’ operaciones delsegundo grupo tardarían O(
a + b.logn
). En un heap ‘binomial’ esta secuencia deoperaciones tardarían O(
(a+b)log(n)
). Un heap de Fibonacci es mejor que unheap 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 uncoste lineal en el peor caso). Por esta razón los Heaps de Fibonacci y otrasestructuras de datos con coste amortizado no son apropiadas para sistemas detiempo real.
 ____________________________________________________________________ 
 Ingeniería en Computación, Universidad de La Serena
1
 
Definición:
Un Heap de Fibonacci es una colección de árboles que satisfacen la propiedadde Min-Heap, es decir, la clave de un hijo es siempre mayor o igual que la de supadre. Esto implica que la clave mínima está siempre en la raíz. Comparado conlos Heaps binomiales, la estructura de un heap de Fibonacci es más flexible. Losárboles no tienen una forma predefinida y en un caso extremo el heap puedetener cada elemento en un árbol separado o en un único árbol de profundidad n.Esta flexibilidad permite que algunas operaciones puedan ser ejecutadas de unamanera ‘perezosa’, posponiendo el trabajo para operaciones posteriores. Por ejemplo, la unión de dos Heaps se hace simplemente concatenando las doslistas de árboles, y la operación Decrementar clave a veces corta un nodo de supadre y forma un nuevo árbol.Sin embargo, se debe introducir aln orden para conseguir el tiempo deejecución deseado. En concreto, el grado de los nodos(el número de hijos) setiene que mantener bajo: cada nodo tiene un grado máximo de O(logn) y la tallade un subárbol cuya raíz tiene grado k es por lo menos Fk+2 , donde Fk es unnúmero de Fibonacci (por eso el nombre que se les da a este tipo de heap. Estose consigue con la regla de que podemos cortar como mucho un hijo de cadanodo no raíz. Cuando es cortado un segundo hijo, el nodo también necesita ser cortado de su padre y se convierte en la raíz de un nuevo árbol. El número deárboles se decrementa en la operación Borrar mínimo, donde los árboles estánunidos entre sí.Como resultado de esta estructura, algunas operaciones pueden llevar muchotiempo mientras que otras se hacen muy deprisa. En el análisis del coste deejecución amortizado pretendemos que las operaciones muy rápidas tarden unpoco más de lo que tardan. Este tiempo extra se resta después al tiempo deejecución de operaciones más lentas. La cantidad de tiempo ahorrada para unuso posterior es medida por una función potencial. Esta función es:
 Potencial 
=

2
m
Donde t es el número de árboles en el Heap de Fibonacci, y m es el número denodos 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ándesmarcadas).Además, la raíz de cada árbol en un Heap tiene una unidad de tiempoalmacenada. Esta unidad de tiempo puede ser usada más tarde para unir esteárbol a otro con coste amortizado 0. Cada nodo marcado también tiene dosunidades de tiempo almacenadas. Una puede ser usada para cortar el nodo desu padre. Si esto sucede, el nodo se convierte en una raíz y la segunda unidadde tiempo se mantendrá almacenada como en cualquier otra raíz.
 ____________________________________________________________________ 
 Ingeniería en Computación, Universidad de La Serena
2
 
Operaciones
:
Crear un Heap de Fibonacci vacío:
Consta de dos operaciones:
M.min = nil //El puntero a la raiz mínima
M.n = 0 //El número de Nodos
El costo de esta operación es
O
(1)
 ____________________________________________________________________ 
 Ingeniería en Computación, Universidad de La Serena
3

Activity (21)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
Lisandro Pab liked this
Darlin Palo Soto liked this
Sarah Jain liked this
Oscar Chesscon liked this
Octavio Solis liked this
Altin Bogdani liked this
Altin Bogdani liked this

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->