A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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 ?

2 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 ( … + n) = (n-1)/2

3 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

4 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 Devolva sum Análise Número de operações elementares é igual a … + n-1 = n(n-1)/2 = O(n2)

5 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

6 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

7 O loop Para requer tempo linear
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

8 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

9 Enquanto a lista L não esta vazia faça
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

10 Enquanto a lista L não esta vazia faça
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


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google