100 likes | 258 Views
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 ?
E N D
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ça aux ai Para j:=1 até i aux x . aux Fim Para sum <- sum + aux Fim Para Devolva sum • Análise Nú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ça pot x.pot sum sum + ai.pot Fim Para Devolva sum • Análise A 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 listade n números reais • Sáida:SIMseexistem 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 Para Devolva 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:SIMseexistem dois elementos em S com soma x e NÃO caso contrário
Exercício - Solução • L <- conjunto S em ordem crescente • Enquanto a lista L não esta vazia faça Some o menor e o maior elemento de L Se a soma é x Devolva SIM Se a soma é maior que x Retire o maior elemento de L Se a soma é menor que x Retire o menor elemento de L Fim Enquanto Devolva NÃO
Exercício - Solução • L <- conjunto S em ordem crescente • Enquanto a lista L não esta vazia faça Some o menor e o maior elemento de L Se a soma é x Devolva SIM Se a soma é maior que x Retire o maior elemento de L Se a soma é menor que x Retire o menor elemento de L Fim Enquanto Devolva 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