Exercício

10
Exercício Exercício. Considere um algoritmo sequencial que busca um elemento em uma lista não ordenada a) Qual é a complexidade de tempo deste algoritmo ? b) Assuma que o elemento buscado esta na lista e que todos os elementos tem a mesma probabilidade de serem buscados. Qual a complexidade de caso médio do algoritmo ?

description

Exercício. Exercício. Considere um algoritmo sequencial que busca um elemento em uma lista não ordenada a) Qual é a complexidade de tempo deste algoritmo ? - PowerPoint PPT Presentation

Transcript of Exercício

Page 1: Exercício

Exercício

Exercício. Considere um algoritmo sequencial que busca um elemento em uma lista não ordenada

a) Qual é a complexidade de tempo deste algoritmo ?

b) Assuma que o elemento buscado esta na lista e que todos os elementos tem a mesma probabilidade de serem buscados. Qual a complexidade de caso médio do algoritmo ?

Page 2: Exercício

Exercício - Solução

a) No pior caso todos os elementos são testados. Portanto, a complexidade é linear.

b) A probabilidade de testar o i-ésimo elemento é 1/n e i comparaçoes sao necessárias neste caso. Logo, a complexidade de caso médio é

1/ n ( 1 + 2 + … + n) = (n-1)/2

Page 3: Exercício

Exercício

Exercício. Considere um algoritmo que recebe um número real x como entrada e devolve

a0 + a1x + … + an-1xn-1

a) Desenvolva um algoritmo para resolver este problema que execute em tempo quadrático. Faça a análise do algoritmo

b) Desenvolva um algoritmo para resolver este problema que execute em tempo linear. Faça a análise do algoritmo

Page 4: Exercício

Exercício - Solução

a) sum = a0

Para i= 0 até n-1 façaaux ai

Para j:=1 até iaux x . aux

Fim Parasum <- sum + aux

Fim ParaDevolva sum

AnáliseNúmero de operações elementares é igual a

1+2+3+ … + n-1 = n(n-1)/2 = O(n2)

Page 5: Exercício

Exercício - Solução

b) sum = a0

pot = 1

Para i= 1 até n-1 façapot x.potsum sum + ai.pot

Fim ParaDevolva sum

AnáliseA cada loop são realizadas O(1) operações elementares.

Logo, o tempo é linear

Page 6: Exercício

Exercício

Descreva um algoritmo com complexidade O(n log n) com a seguinte especificação

Entrada: Uma lista de n números reais

Sáida: SIM se existem números repetidos na lista e NÃO caso contrário

Page 7: Exercício

Exercício - Solução

Ordene a lista lista L Para i=1 até |L|-1

Se L[i]=L[i+1]Devolva SIM

Fim ParaDevolva NÃO

ANÁLISE– A ordenação da lista L requer O (n log n) utilizando o

Mergesort ou o Heapsort– O loop Para requer tempo linear

Page 8: Exercício

Exercício

Descreva um algoritmo com complexidade O(n log n) com a seguinte especificação

Entrada: conjunto S de n números reais e um número real x

Sáida: SIM se existem dois elementos em S com soma x e NÃO caso contrário

Page 9: Exercício

Exercício - Solução

L <- conjunto S em ordem crescenteEnquanto a lista L não esta vazia faça

Some o menor e o maior elemento de LSe a soma é x

Devolva SIMSe a soma é maior que x

Retire o maior elemento de LSe a soma é menor que x

Retire o menor elemento de LFim EnquantoDevolva NÃO

Page 10: Exercício

Exercício - Solução

L <- conjunto S em ordem crescenteEnquanto a lista L não esta vazia faça

Some o menor e o maior elemento de LSe a soma é x

Devolva SIMSe a soma é maior que x

Retire o maior elemento de LSe a soma é menor que x

Retire o menor elemento de LFim EnquantoDevolva NÃO

ANÁLISE– A ordenação do conjunto S requer O (n log n)

utilizando o Mergesort ou o heapsort– O loop enquanto requer tempo linear