1 / 46

Heap de Fibonacci

Heap de Fibonacci. Alberto Rodrigues Costa Junior - ( arcj ). Roteiro. Introdução Estrutura Operações MAKE-HEAP INSERT MINIMUM UNION EXTRACT-MIN DECREASE-KEY DELETE Limite do grau máximo. Introdução. Fredman e Tarjan em (Desenvolvido) 1984 / (Publicado)1987.

arty
Télécharger la présentation

Heap de 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 de Fibonacci Alberto Rodrigues Costa Junior - (arcj)

  2. Roteiro • Introdução • Estrutura • Operações • MAKE-HEAP • INSERT • MINIMUM • UNION • EXTRACT-MIN • DECREASE-KEY • DELETE • Limite do grau máximo

  3. Introdução • Fredman e Tarjan em (Desenvolvido) 1984 / (Publicado)1987. • Aplicações em problemas de Menor caminho, AGPM ...

  4. Introdução • Heapsbinomiais suportam operações Minimum, ExtractMinimum, Union, Delete e Decrease Key em tempo O(lgn) no pior caso. • Heapsde Fibonacci suportam as mesmas operações acima que não envolvem exclusãoem tempo amortizado O(1).

  5. Introdução

  6. Introdução • Não foi desenvolvido para dar suporte eficiente a operação de Search. • Do ponto de vista prático, os fatores constantes e a complexidade a tornam pouco desejável para a maioria dos problemas.

  7. Estrutura • Semelhante ao HB, mas tem uma estrutura bem menos rígida. • HB: Consolida árvores depois de cada Insert. • HF: Adia a consolidação até a próxima exclusão

  8. Estrutura • Como HB, o HF é uma coleção de árvores. • Também é coleção de heaps mínimos.

  9. Estrutura • Lista de raízes (circular e duplamente ligada). • Ponteiro Min[H] apontado pra raiz que tiver menor valor. • Cada nó x tem um ponteiro p[x] pro seu pai.E um ponteiro child[x] pra um de seus filhos. • Cada filho y esta em lista duplamente ligada e circular(left[y] e right[y]).

  10. Estrutura • degree[x] - número de filhos de x. • mark[x] - indica se o nó x perdeu um filho desde a ultima vez que se tornou filho de outro nó. • n[H] - número de nós em H.

  11. Função Potencial • Usada para analisar o desempenho de operações de HF. • t(H) o número de árvores. • m(H) o número de nós marcados. φ(H) = t(H)+ 2m(H)

  12. Operações • Operações de heapsintercaláveis • MakeHeap • Insert • Minimum • Union • Extract Min

  13. Operações • Árvores Binomiais Não Ordenadas • Uma árvore binomial não ordenada écomo uma arvore binomial: • U0consiste de apenas um nó • Ukconsiste de duas árvores binomiais não ordenadas Uk-1, onde a raiz de uma delas se torna filho da outra

  14. Operações • Propriedades de árvores binomiais não ordenadas • Para uma árvore binomial não ordenada U vale: • Há 2^k nós em Uk. • A altura é k. • Há exatamente nós de profundidade i para i = 0 ,1,...,k • A raiz tem grau k, que é o maior grau de qualquer outro nó. Os filhos da raiz são raízes de árvores U0,U1, . . . Uk−1 emqualquerordem

  15. Operações • Grau Máximo • D(n) é o grau máximo de qualquer nó em um HF com n nós • Logo, se o HF é uma coleção de árvores binomiaisnão ordenadas, então D(n) = lgn.

  16. Make-Heap Make-Heap() 1) n[H] = 0 2) min[H] = NIL 3) Retorna H • t(H) = 0 • m(H) = 0 • Então φ(H) = 0+ 2*0 = 0 • Custo amortizado é igual ao custo real O(1)

  17. Insert

  18. Insert

  19. Insert • Seja H o heap de entrada e H’ heap resultante t(H’) = t(H) + 1 e m(H’) = m(H) então o aumento do potencial é : ((t(H) + 1) + 2m(H)) – (t(H) + 2m(H)) = 1 Como o custo real é O (1), o custo amortizado é (1) + 1 = Θ(1)

  20. Minimum • O nó mínimo é dado pelo ponteiro min[H]. Tempo real O(1) e tendo em vista que o potencial não muda o custo amortizado desta operação é igual ao seu custo real.

  21. Union

  22. Union • Mudança de potencial: φ(H) = φ(H1) + φ(H2) = (t(H) + 2m(H)) - ((t(H1) + 2m(H1)) + (t(H2) + 2m(H2)) ) = 0 Desse modo o custo amortizado de Union é igual ao custo real Θ(1).

  23. Extract-min • O processo de extrair o nó minimo é mais complicado. • Onde a consolidação das árvores finalmente ocorre.

  24. Extract-min

  25. Extract-min

  26. Extract-min

  27. Extract-min • O(D(n)+ t(H)) + ((D(n)+1) + 2m(H)) – (t(H) +2m(H)) = O(D(n)) + O(t(h)) – t(h) = O(D(n))

  28. Decrease-key • Aqui mostramos como a redução de uma chave de um nó em um HF pode ser realizada com custo amortizado O(1). • Mais adiante, mostraremos que a deleção de um nópode ser executada em tempo amortizado O(D(n)). • Essas operações não preservam a propriedade de que todas as árvores no HF são árvores binomiais não ordenadas. • Estas árvores são “próximas” o suficiente para se limitar o grau máximo D(n) por o(lgn).

  29. Decrease-key

  30. Decrease-key

  31. Decrease-key

  32. Decrease-key

  33. Delete

  34. Limitando o grau Máximo • Para mostrar que a análise amortizada de Extract-Min e Delete executam em tempo amortizado O(lgn), temos que mostrar que D(n) (grau máximo de um nó em heap com n chaves) é da ordem O(lgn). • Se todas as árvores são árvores binomiais não ordenadas, então D(n) = floor(lg(n)). • Os cortes que ocorrem em Decrease Key, entretanto, podem fazer com que as árvores do HF deixem de ser binomiais • Mostrar que, em virtude de cortarmos um nóx do seu pai y sempre que ele perde dois filhos, teremos D(n) é O(lgn)

  35. Limitando o grau Máximo • Para cada nó x de um HF, defina size(x) como o número de nós, incluindo x, que pertencem à árvore com raiz em x. • Vamos mostrar que size(x) éexponencial em degree[x]. • Lema • Seja x um nó de um HF e suponha que degree[x] = k. • Sejam y1, y2, . . . , ykos filhos de x na ordem que eles foram ligados a x, a partir do primeiro ao último (mais recente). • Então, degree[y1] >= 0 e degree[yi]>= i −2, para i = 2, 3, . . . , k

  36. Limitando o grau Máximo • Prova • Obviamente, degree[y1] >= 0. • Para i >= 2, quando yi se tornou filho de x os elementos y1, . . . , yi−1 eram filhos de x, logo devemos ter degree[x] = i − 1. • Note que yi éligado a x apenas se degree[x] = degree[yi], portanto devemos ter degree[yi] = i − 1 no momento da ligação. • Dai concluímos que degree[yi ] >= i − 2.

  37. Limitando o grau Máximo • Finalmente atingimos a parte da análise que explica o nome “Heapde Fibonacci”. • Lembramos que a série Fibonacci é definida por: • Lema:

  38. Limitando o grau Máximo • Prova por indução caso base k = 0 = 1 + F0 = 1 + 0 = 1 = F2

  39. Limitando o grau Máximo • Hipótese indutiva que Fk +1 = 1+ • F2 + k =Fk +1 +Fk +1 = Fk+(1 +) = 1 +

  40. Limitando o grau Máximo • Lema:

  41. Limitando o grau Máximo

  42. Limitando o grau Máximo • Lema: • Seja x um nó de um HF • Seja k = degree[x] o grau de x. • Então • Prova • Sk é o menor valor possível size(x) de todos os nós z tais que degree[z] = k • Sk é no máximo size(x), e o valor de sk aumenta monotonicamente com k

  43. Limitando o grau Máximo

  44. Limitando o grau Máximo

  45. Limitando o grau Máximo • Corolário:

More Related