Escolar Documentos
Profissional Documentos
Cultura Documentos
RESUMEN: En el presente trabajo se hizo la investigación del algoritmo Heap Binomial, que consta de
9 operaciones las cuales son: Make-binomial-heap(), binomial-heap-minimum(H), binomial-link(y, z), binomial-
heap-merge(H1, H2), binomial-heap-union(H1, H2), binomial-heap-insert(H, x), binomial-heap-extract-min(H),
binomial-heap-decrease-key(H, x, k), binomial-heap-delete(H, x); desarrolladas e implementadas logrando la
ejecución y experimentación de lo que el algoritmo puede hacer.
Tiempo de ejecución, la cual en cada operación salió un valor, lo cual hace notar que heap binomial es
mejor que el heap binario ya que en algunos casos el tipo de operación que ejecuta es mejor que el del heap
binario.
1. INTRODUCCIÓN
El presente trabajo es el resultado de un estudio minucioso acerca del funcionamiento del heap binomial
el cual se componen de un bosque de arboles binomiales.
Estos se definen recursivamente y aparecen a lo sumo una vez en el bosque.
Un árbol binomial Bk es un árbol ordenado donde B0 consiste en un único nodo, B1 se compone de dos árboles
Bk-1, donde uno de los dos esta dosado a la raíz del otro como su hijo extremo derecho.
Pero primero debemos conocer el concepto de heap, el cual nos dice que es un árbol binario semicompleto en el
que el valor de la clave almacenado en cualquier nodo es menor o igual que los valores de clave de sus hijos.
Esta estructura de datos es más compleja a comparación del heap binario pero ofrece una mayor eficiencia en la
fusión de dos heaps, haciendo que el tiempo de ejecución se reduzca a O (log n).
Este consta de algunas operaciones como son: insertar, eliminar, crear heap, extraer mínimo, enlace y unión.
2. CONTENIDO
HEAP BINOMIAL
- Un montículo binomial es una colección de árboles Binomiales
- Árbol binomial, Bk, se define recursivamente:
o B0 es un solo nodo
o Bk consiste en dos árboles binomiales Bk-1 enlazados de la siguiente forma: la
raíz de uno es el hijo más a la izquierda de la raíz del otro.
1
UNIVERSIDAD NACIONAL DE TRUJILLO BINOMIAL HEAP
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS Profesor: Jorge Luis Guevara Díaz
ESCUELA DE INFORMATICA
o El único nodo con grado mayor en Bk que en Bk-1 es la raíz, que tiene un hijo
más que en Bk-1. Como la raíz de Bk-1 tiene grado k –1, la de Bk tiene grado k.
o Por último, por hipótesis de inducción los hijos de la raíz de B k-1 son, de
izquierda a derecha, las raíces de Bk-2, Bk-3,…, B0.
Por tanto, cuando se enlaza Bk-1 a Bk-1, los hijos de la raíz resultante son las
raíces de Bk-1, Bk-2,…, B0.
- Montículo binomial:
o Es un conjunto de árboles binomiales tales que:
Cada árbol binomial es un árbol parcialmente ordenado, es decir, la
clave de todo nodo es mayor o igual que la de su padre.
Contiene no más de un árbol binomial Bi para cada grado i.
- Propiedad (consecuencia de la definición):
o Todo montículo binomial M de n nodos consta de, como mucho, ⎣log n⎦ + 1
árboles binomiales.
o Demostración: la representación binaria de n tiene ⎣log n⎦ + 1 bits, 〈b ⎣log n⎦, b
⎣log n⎦ -1,…, b0〉, de forma que
2
UNIVERSIDAD NACIONAL DE TRUJILLO BINOMIAL HEAP
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS Profesor: Jorge Luis Guevara Díaz
ESCUELA DE INFORMATICA
ALGORITMO
- Tiempo de ejecución:
o Make-Binomial-Heap() return
head[H] = NIL if head[H1] = b
return H then b = a
a = head[H1]
o Binomial-Heap-Minimum(H) while b <> NIL
y := NIL do if sibling[a] = NIL
x := head[H] then sibling[a] = b
min := infinity return
while x <> NIL else if degree[sibling[a]] < degree[b]
do if key[x] < min then a = sibling[a]
then min := key[x] else c = sibling[b]
y := x sibling[b] = sibling[a]
x := sibling[x] sibling[a] = b
return y a = sibling[a]
b=c
o Binomial-Link(y,z)
p[y] := z o Binomial-Heap-Union(H1,H2)
sibling[y] := child[z] H := Make-Binomial-Heap()
child[z] := y head[H] := Binomial-Heap-Merge(H1,H2)
degree[z] := degree[z] + 1 free the objects H1 and H2 but not the lists
they point to
o Binomial-HeapMerge(H1,H2) if head[H] = NIL
a = head[H1] then return H
b = head[H2] prev-x := NIL
head[H1] = Min-Degree(a, b) x := head[H]
if head[H1] = NIL next-x := sibling[x]
3
UNIVERSIDAD NACIONAL DE TRUJILLO BINOMIAL HEAP
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS Profesor: Jorge Luis Guevara Díaz
ESCUELA DE INFORMATICA
4
UNIVERSIDAD NACIONAL DE TRUJILLO BINOMIAL HEAP
FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS Profesor: Jorge Luis Guevara Díaz
ESCUELA DE INFORMATICA
3. REFERENCIAS
Linkografia
http://www.cse.yorku.ca/~aaw/Sotirios/BinomialHeapAlgorithm.html
http://jc-info.blogspot.com/search/label/C%2FC%2B%2B
http://es.wikibooks.org/wiki/Estructuras_de_datos_din%C3%A1micas/Colas_de_prioridad_y_montones
http://www.cse.yorku.ca/~aaw/Sotirios/BinomialHeap.html
Thomas H. Cormen, “Introduction to Algorithms”, Segunda edición, pp. 388 – 405, 2001