Exercício
description
Transcript of 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 ?
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
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
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)
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
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
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
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
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
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