Heaps Katia S. Guimarães

Slides:



Advertisements
Apresentações semelhantes
Algoritmos em Grafos (Parte 2)
Advertisements

Katia S. Guimarães QUICKSORT Katia S. Guimarães
Algoritmos BUSCA E INSERÇÃO
Série de Exercícios.
MC 202 – Estruturas de dados
Árvore Binária - altura máxima A: Inserção de 1, 2, 3, 4, 5, 6 e 7 Pior caso: O(n)
Árvores.

David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
HeapSort Filas de Prioridade – Heap
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
SEMINÁRIO DE ALGORITMOS
André Lopes Pereira Luiz Carlos Barboza Júnior
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Classificação e Pesquisa de Dados
Árvores Binárias de Pesquisa (ABP)
Métodos de Classificação por Seleção: HeapSort
Prof. Ernesto Lindstaedt
Algorítmos e estrutura de dados III
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso B: Remover o elemento que está no meio da lista, sendo que a lista possui vários.
PROVA Desenhe a árvore original e a árvore obtida após cada execução do procedimento Heapify no processo de transformação de um array desordenado.
Heaps de Fibonacci Lino Alves.
Algoritmos e Estruturas de Dados II
Árvores binárias de pesquisa com balanceamento
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso D: Remover elemento que é único na lista. Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso C: Tentar remover elemento que não está na lista. Roberto Ferrari Mauricio Falvo.
Construção de Algoritmos AULA 03
Árvores Binárias de Pesquisa
Heap Sort TPA – Prof. Mateus Costa
Algorítmos e estrutura de dados III
Árvores Balanceadas Liliane Rose Benning Salgado.
Algoritmos Gulosos em Grafos
Katia S. Guimarães Busca em Grafos Katia S. Guimarães
Árvores Binárias e Encaminhamentos
Rotação Simples e Dupla Katia Guimarães
Katia S. Guimarães Heaps Katia S. Guimarães
Remoção e Inserção em Heaps
Katia S. Guimarães Heapsort Katia S. Guimarães
Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um dado pode ser qualquer.
Ordenação de Dados (III)
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso A: Remover o elemento que está no primeiro nó da lista, sendo que a lista possui.
Árvore Binária de Busca
Árvores Prof. Dr. rer. nat. Daniel Duarte Abdala DAS 5102 – Fundamentos da Estrutura da Informação 1.
Algoritmo de PRIM para MST
Análise de Complexidade do Algoritmo de Dijkstra

Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Prof. Hilton Cardoso Marins Junior
Katia S. Guimarães Busca em Grafos Katia S. Guimarães

Heaps Binomiais Rômulo de Almeida Bruno Mestrando em Ciência da Computação Professora Liliane Salgado Disciplina - Algoritmos.
Alinhamento de Cadeias de DNA COMPARAÇÃO DE SEQÜÊNCIAS
Introdução à NP-completude
Estruturas de Dados e Algoritmos para Inferência de Motifs Katia Guimarães.
Algoritmo de Huffman.
Árvores de Busca Binária
1 de outubro de Árvores de Busca e Árvores AVL Parte 1 Katia Guimarães.
Alinhamento Global de Seqüências Katia Guimarães.
14 de outubro de Árvores B Katia Guimarães.
Árvores (introdução) Anjolina Grisi de Oliveira Obs: vários slides foram cedidos por Adolfo Almeida Duran (UFBA)
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva.
28 de outubro de Árvores Binárias e Árvores AVL Parte 2 Katia Guimarães.
Árvores Binárias e Árvores AVL Katia Guimarães. Árvores Binárias e Árvores AVL Katia S. Guimarães
Adriana Libório Fernandes Lins Arthur Cavalcanti Alem Átila Valgueiro Malta Moreira Flavio Juvenal da Silva Júnior Gustavo Cauê Silva Botelho Matheus Bispo.
26 de fevereiro de Árvores (2,3) e Árvores B Katia Guimarães.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -
Abordagens para Problemas Intratáveis Katia S. Guimarães
1 Heap Sort Algoritmos e Estuturas de Dados Cátia Vaz.
Ordenação por Comparação
Transcrição da apresentação:

Heaps Katia S. Guimarães

Estrutura Heap Heap é uma estrutura de prioridades na forma de árvore binária completa, que representa uma ordem parcial entre os elementos do conjunto. Ex:

Estrutura Heap Ex: Implementação usual: array unidimensional, onde a raiz ocupa a posição 1, e os elementos obedecem à relação: esq. i = 2 i, dir. i = 2 i

Construção de um Heap A construção é feita a partir do array com os elementos desordenados, e pode ser feita “bottom-up” ou “top-down”. Na construção bottom-up, o controle segue das folhas à raiz (ou seja, da direita para a esquerda no array), construindo um heap único a partir de dois heaps menores + um novo elemento.

Construindo um Heap Bottom-up Base: Se n = 1, então a árvore é uma folha, não há o que fazer (a árvore já é um heap) Ex: 9 34

Construindo um Heap Bottom-up Passo: Se n > 1, então usando a Hipótese de Indução, só é necessário ajustar a ordem parcial com relação ao novo elemento Ex: 

Heapify Toma dois (sub)heaps mais um novo elemento e constrói um novo heap contendo todos. Ex 

Heapify Toma dois (sub)heaps mais um novo elemento e constrói um novo heap contendo todos. A situação é similar ao rearranjo de um heap após a remoção de um elemento, quando tomamos o último elemento e o “promovemos para a raiz”. Só precisamos encontrar um local apropriado para o elemento nesta nova raiz.

Heapify   22

Algoritmo Heapify Algoritmo Heapify( i ) Enquanto i  int (n/2) /* i tem filhos */ faça { Se i < int(n/2) /* i tem dois filhos */ então Se A[ 2 i ] > A[ 2 i + 1 ] então maior  2 i senão maior  2 i + 1 senão /* O único é o maior */ maior  2 i ; Se A[ i ] < A[maior] então { A[ i ]  A[maior]; i  maior } senão i  n + 1 /* deixe o laço */ }

Construindo um Heap Bottom-up Algoritmo Constrói-Heap: Para i  n/2 até 1 faça Heapify 

Construindo um Heap Bottom-up Algoritmo Constrói-Heap: Para i  n/2 até 1 faça Heapify( i ) 

Construindo um Heap Bottom-up 

Construindo um Heap Bottom-up 

Construindo um Heap Bottom-up Algoritmo Constrói-Heap: Para i  n/2 até 1 faça Heapify (A, n, i) Custo para construir um heap: T(n) = n / 2 · log (n) = O (n · log (n)) Será que este custo é exato?