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

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

Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB

Apresentações semelhantes


Apresentação em tema: "Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB"— Transcrição da apresentação:

1 Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Multidimensionais quaternárias k-d Pesquisa Lexicográfica tries multivia tries binárias PATRICIA Versão AED2 Falta completar as árvores vermelho-preto- ver notas sobre algoritmos top-down para VP

2 Árvores Vermelho-Pretas
correspondem a uma transformação de árvores-B, em particular a de ordem 4 para uma representação em árvore binária de pesquisa os filhos de um nó da árvore-B podem ser representados por uma lista ligada ou por outra estrutura, como as árvores binárias de pesquisa os ramos desta, internos a um nó da árvore-B, são os ramos vermelhos e os ramos que ligam diferentes nós da árvore-B são os ramos pretos (a cor de um nó é a cor do ramo que lhe fica imediatamente acima; a raiz é preta) a pesquisa e a travessia é a de uma árvore binária; inserção e apagamento leva em conta a cor; processamentos O(log n) Uma árvore vermelho-preta é uma árvore binária de pesquisa em que cada nó tem a cor vermelho ou preto e que satisfaz 1. Cada caminho simples da raiz até uma subárvore vazia passa pelo mesmo número de nós pretos (equilíbrio). 2. Se um nó é vermelho, então tem um pai e este é preto. - a condição 2 garante a identificação das subestruturas internas a cada nó

3 Árvore-B como Vermelho-Preta
j f m s d u h e g i b k o w c p r t v x a l n

4 Transformação de nós a b c a b b a c T1 T2 T3 T4 T1 T2 T3 T4 a b T1 b

5 Inserção genericamente, o algoritmo de inserção começa na raiz, compara as chaves para escolher a subárvore e é recursivo até encontrar uma subárvore vazia, onde cria um nó o novo nó é vermelho, para garantir a condição preta (nas árvores-B a inserção também começava por ser num nó pre-existente) se o pai do novo nó for preto, termina; se for vermelho, viola-se a condição 2; adia-se a correcção do problema; retorna-se indicação de estado de que se processou um nó vermelho está-se agora no pai: se for preto, tudo bem; se for vermelho, anota-se no estado o problema, em conjunto com a indicação de o filho ser esquerdo ou direito estamos no avô, que tem que existir e é preto; neste nível recursivo corrige-se o problema do neto: se o tio for preto (ou não existir), basta fazer uma rotação simples ou dupla, para o lado do tio; se o tio for vermelho, troca-se o pai e o tio para preto e o avô para vermelho o problema recomeça, agora entre o avô e o bisavô, com a indicação de estado de nó vermelho; pode-se chegar a mudar a cor da raiz para vermelho, o que obriga a chamada exterior a repor a cor em preto

6 Repor condições de vermelho e preto
avô pai pai tio T4 avô filho T3 filho tio T1 T2 T3 T4 Rotação à direita T1 T2 avô filho pai tio T4 avô pai filho Dupla rotação à direita T1 tio T1 T2 T3 T4 T2 T3

7 Repor condições de vermelho e preto
avô avô pai pai tio tio filho T1 T2 T3 Mudança de cor filho T1 T2 T3 avô avô pai pai tio tio Mudança de cor T1 T2 T3 T1 T2 T3 filho filho

8 Árvores BB e AA Árvore BB: B e Binária Árvores AA como BB mas
vermelho-preto cada nó tem no máximo 1 filho vermelho Árvores AA como BB mas só filhos direitos podem ser vermelhos reduz casos de reequilíbrio remoção: filho único de nó interno é vermelho (da condição VP); chave do nó a apagar é substituída pela menor da subárvore direita em vez de cor, nível do nó nível = 1 nas folhas nível = nível do pai em nó “vermelho” nível = nível do pai -1 em nó “preto”

9 Árvores AA Propriedades 30 70 15 50 60 85 5 10 20 35 40 55 65 80 90
filho esquerdo tem nível 1 unidade abaixo do do pai filho direito tem nível 0 ou 1 unidade abaixo do do pai ligação ao filho direito: horizontal 30 70 15 50 60 85 5 10 20 35 40 55 65 80 90

10 Árvores AA - Equilíbrio
Desequilíbrio por ligação horizontal à esquerda resolve com rotação à direita (skew) 2 5 10 X P X P A B C A B C Desequilíbrio por ligação horizontal à esquerda resolve com rotação à esquerda (split) 35 40 45 R X R G X G C C A B A B

11 Inserção em Árvores AA skew: rotação com filho esquerdo se split:
insere(Elemento x, Arvore t) if ( x < t.elemento) t.left = insere( x, t.left); else if (x > t.elemento) t.right = insere( x, t.right); else return t; t = skew(t); t = split(t); skew: rotação com filho esquerdo se t.left.level == t.level split: rotação com filho direito se t.right.right.level == t.level

12 Árvores AA - Inserir 3 30 70 2 15 50 60 85 1 5 10 20 35 40 45 55 65 80 90 depois de split em 35 depois de skew em 50 3 3 ... ... 70 70 2 2 ... ... 40 50 60 40 50 60 1 1 35 45 55 65 35 45 55 65

13 Árvores AA - Inserir depois de split em 40 3 30 50 70 2 ... 40 60 85 1 35 45 55 65 80 90 depois de skew em 70 3 30 50 70 2 ... 40 60 85 1 35 45 55 65 80 90

14 Árvores AA - Inserir depois de split em 30 4 50 3 30 70 2 15 40 60 85 1 5 10 20 35 45 55 65 80 90 Árvore aumentou 1 nível Crescimento é na raiz, à maneira das árvores B

15 Árvores AA - Remover Nó que não é folha 2 5 1 3 4 6 7
tem filho direito (se tem filho esquerdo, pela condição de Vermelho-Preto) pode substituir-se pelo menor da subárvore direita - este tem de estar ao nível 1 porque não pode ter filho esquerdo (é o menor) e se tiver filho direito é do mesmo nível para remover, descer na árvore mantendo registo do nó a apagar e do mínimo ao chegar ao fundo da árvore: substituir nó a apagar pelo mínimo e remover o mínimo ajustar nós e seus níveis, e reequilibrar se necessário Ao apagar 1: . 2 passa a ser nível 1 . 5 passa a ser nível 1 Se 5 é nível 1, . 6 e 7 são nível 1 . Ligação a 3 é horizontal . 3 e 4 são de nível 1 2 5 1 3 4 6 7

16 Árvores AA - Remover 2 5 2 5 6 7 3 4 1 3 4 6 7 depois de skew em 5 (com 3) depois de skew em 5 (com 4) 2 3 5 6 7 2 3 4 5 6 7 4 depois de split em 2 depois de split em 4 3 3 2 4 5 6 7 2 5 4 6 7

17 Treaps Características Propriedades Operações
Nó da árvore: 1 elemento, 2 nós filhos e a prioridade Prioridade de um nó não inferior à do seu pai Propriedades nó de menor prioridade é raiz colecção de elementos distintos com prioridades distintas: árvore é única código simples eficiência esperada O(log N) Operações Inserção: inserir folha e rodar para cima até satisfazer prioridades Apagamento: pesquisar elemento, passar prioridade a , rodar para baixo até ser folha, apagar


Carregar ppt "Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB"

Apresentações semelhantes


Anúncios Google