A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Alberto Rodrigues Costa Junior - (arcj)

Apresentações semelhantes


Apresentação em tema: "Alberto Rodrigues Costa Junior - (arcj)"— Transcrição da apresentação:

1 Alberto Rodrigues Costa Junior - (arcj)
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 Ler

3 Introdução Fredman e Tarjan em (Desenvolvido) 1984 / (Publicado)1987.
Aplicações em problemas de Menor caminho, AGPM ... Heap de Fibonacci foi desenvolvido por Michael L. Fredman e Robert E. Tarjan em 1984 e publicado pela primeira vez em uma revista científica em 1987. Neste mesma publicação foi mostrado aplicações do HF em problemas de grafos como ...

4 Introdução Heaps binomiais suportam operações Minimum, Extract Minimum, Union, Delete e Decrease Key em tempo O(lgn) no pior caso. Heaps de Fibonacci suportam as mesmas operações acima que não envolvem exclusão em tempo amortizado O(1). - Heaps binomiais suportam operações Minimum, Extract Minimum, Union, Delete e Decrease Key em tempo O(lgn) no pior caso. - Heaps Fibonacci suportam as mesmas operações acima que não envolvem exclusão em tempo amortizado O(1).

5 Introdução Mostrar quadro operações que envolvem exclusão
Logo é fácil ver que HF são mais aplicáveis quando o numero destas operações e pequeno em relação ao das outras operações. Do ponto de vista prático, os fatores constantes e a complexidade a tornam pouco desejável em para a maioria dos problemas

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. - Como os outros heaps, este não foi desenvolvido pra ser uma estrutura de busca.

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. Lista de raizes não ordenada

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. Os nós criados estão desmarcados. E dado que um nó ta marcado ele será desmarcado se passar a ser filho de outro nó. Mostrar degree e mark dos principais nós.

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 heaps intercaláveis Make Heap Insert Minimum
Union Extract Min

13 Operações Árvores Binomiais Não Ordenadas
Uma árvore binomial não ordenada é como uma arvore binomial: U0 consiste de apenas um nó Uk consiste 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 emqualquer ordem

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 binomiais não ordenadas, então D(n) = lgn.

16 Make-Heap t(H) = 0 m(H) = 0 Então φ(H) = 0+ 2*0 = 0
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

28 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))

29 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).

30 Decrease-key

31 Decrease-key

32 Decrease-key

33 Decrease-key

34 Delete

35 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)

36 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, , yk os 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

37 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.

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

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

40 Limitando o grau Máximo
Hipótese indutiva que Fk +1 = 1+ 𝑖=0 𝑘−1 𝐹𝑖 F2 + k = Fk +1 + Fk +1 = Fk +(1 + 𝑖=0 𝑘−1 𝐹𝑖 ) = 1 + 𝑖=0 𝑘 𝐹𝑖

41 Limitando o grau Máximo
Lema:

42 Limitando o grau Máximo

43 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

44 Limitando o grau Máximo

45 Limitando o grau Máximo

46 Limitando o grau Máximo
Corolário:


Carregar ppt "Alberto Rodrigues Costa Junior - (arcj)"

Apresentações semelhantes


Anúncios Google