O documento apresenta exemplos e exercícios sobre análise de algoritmos. Inclui questões sobre notação Big-O, cálculo de complexidade de algoritmos recursivos e não recursivos, e comparação da complexidade de três algoritmos de ordenação no melhor, pior e caso médio.
O documento apresenta exemplos e exercícios sobre análise de algoritmos. Inclui questões sobre notação Big-O, cálculo de complexidade de algoritmos recursivos e não recursivos, e comparação da complexidade de três algoritmos de ordenação no melhor, pior e caso médio.
Descrição original:
Exercícios - Lista 2 - Projeto e Análise de Algoritmos
O documento apresenta exemplos e exercícios sobre análise de algoritmos. Inclui questões sobre notação Big-O, cálculo de complexidade de algoritmos recursivos e não recursivos, e comparação da complexidade de três algoritmos de ordenação no melhor, pior e caso médio.
O documento apresenta exemplos e exercícios sobre análise de algoritmos. Inclui questões sobre notação Big-O, cálculo de complexidade de algoritmos recursivos e não recursivos, e comparação da complexidade de três algoritmos de ordenação no melhor, pior e caso médio.
Baixe no formato DOCX, PDF, TXT ou leia online no Scribd
Fazer download em docx, pdf ou txt
Você está na página 1de 2
Pontifcia Universidade Catlica de Gois
Escola de Cincias Exatas e de Computao
Projeto e Anlise de Algoritmos CMP1065 Exerccios 1. Dois algoritmos A e B possuem complexidade n 5 e 2n, respectivamente. Voc utilizaria o algoritmo B ao invs do A. Em qual caso? Exemplifique. Resposta: Sim. Apesar do algoritmo ser exponencial, quando o valor de n pequeno, esta funo produz um tempo de complexidade menor do que a funo do algoritmo A. Por exemplo para valores de n iguais 2 ... 10 20 2. Para duas funes g (n) e f(n) temos que f(n)=teta(n) se somente se f(n)= (g(n)) e f(n)=O(g(n)). Explique o teorema acima. Resposta: A notao teta indica que a funo f (n) est entre um limite superior e um limite inferior. Se f (n) teta de g(n) que dizer que f(n) tem limite superior em g(n) se somente se f(n)<= g(n)* c1, onde c1 uma constante qualquer para n>m, ou seja f(n)= O(g(n)). O mesmo vlido para notao . 3. Podemos definir o seguinte algoritmo para calcular a ordem de complexidade de algoritmos no recursivos: I. Escolher o parmetro que indica o tamanho da entrada II. Identificar a operao bsica (comparao, atribuio) III. Estabelea uma soma que indique quantas vezes sua operao bsica foi executada (pio caso) IV. Utilize regras para manipulao de soma e frmulas definindo uma funo de complexidade V. Encontre a ordem de complexidade (a) baseando-se no algoritmo acima determine a ordem de complexidade do algoritmo abaixo: MaxMin(vetor v) max=v[1]; 1 min=v[1]; 1 para i=2 at n faa 2n-2 se v[1]> max ento max=v[1]; fimse 1 XOR 0 se v[1]< min ento min=v[1]; fimse 0 XOR 1 fimpara; fim. Resposta: A escolha do parmetro n, que indica a quantidade de elementos do vetor. A operao bsica a comparao, pois esta domina a o loop interno e a complexidade dada por 3(n-1). O algoritmo da ordem de complexidade O (n).
(b) podemos dizer que o algoritmo acima O (n 2)? Justifique.
No, pois a complexidade dada por 3(n-1), portanto o algoritmo da ordem de complexidade O (n). 4. Prove que: n
j=( n3) i=1 j=1
5. Considere o seguinte algoritmo recursivo, cujo argumento n um nmero
inteiro positivo. Asterisco(n) 1 se n>0 2 ento Asterisco(n-1) 3 Para i<-1 at n faa 4 Imprima * 5 Asterisco(n-1) Para um dado valor de n, quantos asteriscos sero impressos em uma chamada de Asterisco(n)? Justifique a sua resposta mostrando os clculos que fez para chegar a ela. 6. O Algoritmo abaixo (Multiplicao de matrizes) tem como entrada Duas matrizes A = (aij ) Rmn, B = (bjk) Rno . Sada: O produto C = (cik) = AB Rmo . 1 for i := 1, . . . , m do 2 for k := 1, . . . , o do 3 cik := 0 4 for j := 1, . . . , n do 5 cik := cik + aij bjk 6 end for 7 end for 8 end for 7. Escreva as funes e faa anlise da complexidade dos 3 algoritmos de ordenao listados abaixo, informando a complexidade no pior caso, caso mdio e melhor caso. a. Insertion Sort b. Selection Sort c. Bubble Sort