Escolar Documentos
Profissional Documentos
Cultura Documentos
Tpicos
Introduo Implementao de listas de prioridades Alterao de prioridades Insero e remoo
Construo
Ordenao Exerccios
Introduo
Para algumas aplicaes (ex. SO), prioridade associada
maior prioridade
Introduo
Operaes bsicas em listas de prioridades: Seleo do elemento de maior prioridade Insero de novo elemento Remoo do elemento de maior prioridade Alterao de prioridade
prioridade o primeiro
Seleo: O(1) Insero: O(n) Remoo: O(1) Alterao: O(n) Construo: O(n log n), devido a ordenao
chaves s1, ..., sn onde vlida a seguinte propriedade: si si/2 para 1 < i n
Cada chave si corresponde prioridade de um elemento rvore binria completa: facilita visualizao da
propriedade
binria completa:
Raiz da rvore
Alterao de prioridades
Alterao de prioridade de elemento: exige ajuste no
heap
Algoritmo para realizar ajuste envolve subir ou descer
Subida ou descida ocorre at elemento alterado encontrar posio adequada Trocas sucessivas com pai Trocas sucessivas com filho de maior prioridade
Alterao de prioridades
Exemplo de alterao da prioridade do n da posio 6:
Alterao de prioridades
Exemplo de alterao da prioridade do n da posio 1:
Alterao de prioridades
Algoritmo subir: T contm a lista de prioridade
Alterao de prioridades
Algoritmo descer:
Alterao de prioridades
Complexidade de subir e descer: iguais No pior caso: caminho da raiz at folha ou da folha at raiz Altura da rvore binria completa: O(log n) Complexidade: O(log n)
Insero e remoo
Insero: novo elemento inserido como folha Lista T aumentada Pode ser necessrio subir elemento
Complexidade: O(lg n)
Insero e remoo
Exemplo de insero do 73:
Insero e remoo
Remoo: retira o maior ltimo elemento substitui o primeiro Nova raiz possivelmente precisa descer
Complexidade: O(lg n)
Insero e remoo
Exemplo de remoo:
Construo
Construo pode ser feita atravs de ordenao Lista ordenada (do maior para o menor) heap Custo: O(n log n) Construo por insero: Inicia heap com primeiro elemento Insere prximos elementos um a um Custo: O(n log n)
Construo
Algoritmo de construo por insero:
Construo
Algoritmo O(n): processo bottom-up Todos elementos a partir da posio n/2 +1 so folhas
pai dessas folhas + descida do pai Heaps de altura 3 so formados juntando dois heaps de altura menor ao pai + descida do pai ... Obtm-se um heap de altura h juntando dois heaps de altura menor existentes ao pai (elemento da posio 1) + descida do pai
Construo
Algoritmo de construo bottom-up:
Construo
Construo
Complexidade de tempo da construo bottom-up: H no mximo n/2j ns de altura j Tempo total aproximadamente
=2
j = 2
=2
=2
= 2
1 2 1 1 2
= 2
o que O(n)
Ordenao
Algoritmo de ordenao HeapSort: Constri heap Iterativamente remove maior elemento e insere no final da lista ordenada Complexidade: Construo: O(n) Remoes: O(n lg n)
Ordenao
Algoritmo HeapSort:
Exerccios
6.1, 6.6, 6.7, 6.8, 6.9 e 6.10