You are on page 1of 28

Universidade Estadual de Mato Grosso do Sul Bacharelado em Cincia da Computao Algoritmos e Estruturas de Dados II Prof.

Fabrcio Srgio de Paula

Tpicos
Introduo Implementao de listas de prioridades Alterao de prioridades Insero e remoo

Construo
Ordenao Exerccios

Introduo
Para algumas aplicaes (ex. SO), prioridade associada

aos dados essencial


Operao realizada com frequncia: encontrar dado com

maior prioridade

Ex.: processo que ir executar na CPU

Lista de prioridade: estrutura de dados onde dados esto

relacionados a prioridades (valores numricos)

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

Implementao de listas de prioridades


Implementao por lista no ordenada: Seleo: O(n) Insero: O(1) Remoo (inclui busca): O(n) Alterao (inclui busca): O(n) Construo da lista: O(n)

O(1) para cada elemento

Implementao de listas de prioridades


Implementao por lista ordenada: elemento de maior

prioridade o primeiro
Seleo: O(1) Insero: O(n) Remoo: O(1) Alterao: O(n) Construo: O(n log n), devido a ordenao

Implementao de listas de prioridades


Implementao por heap: diminui complexidade da

insero, alterao e construo


Remoo superior a O(1), mas rpida

Um heap uma lista linear composta por elementos com

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

Implementao no utiliza estrutura de dados do tipo rvore!

Implementao de listas de prioridades


Exemplo de heap com 8 elementos e respectiva rvore

binria completa:

Implementao de listas de prioridades


Implementao de lista de prioridade por heap: Seleo: O(1)

Raiz da rvore

Insero: O(log n) Remoo: O(log n) Alterao: O(log n) Construo: O(n)

Alterao de prioridades
Alterao de prioridade de elemento: exige ajuste no

heap
Algoritmo para realizar ajuste envolve subir ou descer

na visualizao por rvore

Subida ou descida ocorre at elemento alterado encontrar posio adequada Trocas sucessivas com pai Trocas sucessivas com filho de maior prioridade

Subida: quando h aumento na prioridade

Descida: quando h diminuio

Alterao de prioridades
Exemplo de alterao da prioridade do n da posio 6:

valor 66 para 98 (subida)

Alterao de prioridades
Exemplo de alterao da prioridade do n da posio 1:

valor 95 para 37 (descida)

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

Individualmente, folhas so heaps com um nico n (altura 1)

Heaps de altura 2 so formados juntando duas folhas ao n

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