Exposicion Binomial Heap

Embed Size (px)

Citation preview

  • 8/18/2019 Exposicion Binomial Heap

    1/17

    bm he

    Santiago Lovón García

    April 3, 2016

    Universidad La Salle

  • 8/18/2019 Exposicion Binomial Heap

    2/17

    Def

    En Ciencia de la Computación se denomina Heap Binomial a una

    estructura de datos parecida al Heap Binario pero que brinda unaoperación eficiente de mezcla entre dos Heaps. Esta propiedad haceque se utilice como un mergeable heap, al igual que el Heap deFibonacci, en la implementación de una cola con prioridad quesoporte la operación de mezcla.

    1

  • 8/18/2019 Exposicion Binomial Heap

    3/17

    Bm he

    ∙  Un montículo binomial es una colección de árboles binomiales

    ∙  Árbol binomial, Bk , se define recursivamente:

    1.   B0 es un solo nodo

    2.   Bk consiste en dos árboles binomiales Bk-1 enlazados de lasiguiente forma: la raíz de uno es el hijo más a la izquierda de laraíz del otro.

    3.   Lo que es lo mismo que decir que un árbol binomial de orden k (Bk ) tiene un nodo raíz cuyos hijos son raíces de árbolesbinomiales de orden k-1, k-2… 2, 1, 0 en ese orden.

    2

  • 8/18/2019 Exposicion Binomial Heap

    4/173

  • 8/18/2019 Exposicion Binomial Heap

    5/17

    Bm ee - eddes

    1.  Tiene 2k nodos;

    2.  Su altura es k;3.   Tiene nodos en el nivel i, para i = 0, 1, …, k;

    4.  La raíz tiene grado k (número de hijos) y es el nodo de máximogrado; más aún, si se numeran los hijos de la raíz de izquierda a

    derecha como k – 1, k – 2, …, 0, el hijo i es la raíz de un subárbol B i .

    4

  • 8/18/2019 Exposicion Binomial Heap

    6/17

    Bm ee

    5

  • 8/18/2019 Exposicion Binomial Heap

    7/17

    Bm He

    Un heap binomial es una secuencia de arboles binomiales tal que:

    ∙  Cada árbol esta heap-ordered.∙   Hay 0 ó 1 árbol binomial de orden k.∙  Las raíces de los arboles se conectan con una lista simplemente

    enlazada con los grados en orden decreciente.

    6

  • 8/18/2019 Exposicion Binomial Heap

    8/17

    Mee

    Es la operación mas sencilla e importante de esta estructura es launión de dos arboles binomiales (de un mismo grado) en un heapbinomial.

    1.  Se compara el nodo raíz de los arboles.2.  La raíz mas pequeña se convierte en subarbol del mas grande.

    function mergeTree(p, q)

    if p.root.key

  • 8/18/2019 Exposicion Binomial Heap

    9/17

    Mee

    Unir dos heaps es la operación mas importante y puede ser usadacomo subrutina en la mayoria de aplicaciones.

    1.  Se recorren los heaps simultaneamente.

    2.  Si solo uno de los heaps contiene un árbol de orden k, este semueve al nuevo heap

    3.  Si ambos heaps tienen un árbol de orden k estos arboles se unen.

    4.  Si es necesario se une este nuevo árbol con otro de igual orden

    8

  • 8/18/2019 Exposicion Binomial Heap

    10/17

    Mee

    function merge(p, q)while not (p.end() and q.end())

    tree = mergeTree(p.currentTree(), q.currentTree())if not heap.currentTree().empty()

    tree = mergeTree(tree, heap.currentTree())heap.addTree(tree)

    heap.next(); p.next(); q.next()

    9

  • 8/18/2019 Exposicion Binomial Heap

    11/17

    Mee

    10

  • 8/18/2019 Exposicion Binomial Heap

    12/17

    Ise

    El incertar un nuevo elemento se hace simplemente creando unnuevo heap con ese elemento y llamando a merge.

    11

  • 8/18/2019 Exposicion Binomial Heap

    13/17

    Fd mmum

    Para encontrar el mínimo solo se tiene que buscar el mínimo entrelas raíces de los arboles. También se puede usar un puntero queapunte al mínimo entre los arboles, actualizándolo cuando serealice cada operación.

    12

  • 8/18/2019 Exposicion Binomial Heap

    14/17

    Deee mmum

    1.  Se encuentra el mínimo y se elimina obteniendo una lista de subarboles.

    2.  Se crea un nuevo heap con estos subarboles

    3.  Se une este nuevo heap con el heap original.

    function deleteMin(heap)min = heap.trees().first()for each current in heap.trees()

    if current.root < min.root then min = current

    for each tree in min.subTrees()tmp.addTree(tree)

    heap.removeTree(min)merge(heap, tmp)

    13

    D

  • 8/18/2019 Exposicion Binomial Heap

    15/17

    Deese key

    Cuando se disminuye la clave de un valor esta puede ser mayor quela de su padre, entonces se intercambian hasta que el nodo quedeen la posición correcta.

    14

    D

  • 8/18/2019 Exposicion Binomial Heap

    16/17

    Deee

    Para borrar un elemento simplemente se disminuye su clave amenos infinito (un valor inferior a cualquier elemento del heap), yluego se llama a eliminar el menor heap.

    15

  • 8/18/2019 Exposicion Binomial Heap

    17/17

    ¿Pweus?

    16