1 / 10

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 ?

tavita
Download Presentation

Exercício

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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 listade n números reais • Sáida:SIMseexistem números repetidos na lista e NÃO caso contrário

  7. 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:SIMseexistem dois elementos em S com soma x e NÃO caso contrário

  9. 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. 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

More Related