Você está na página 1de 2

Aluna: Ali Mohamad Termos

Período: Quarto

1) Na prática, quais grandezas físicas influenciam a eficiência de tempo de um


algoritmo?
R: Espaço da memória e número de operações

2) Quando calculamos a complexidade de algoritmos não recursivos podemos nos guiar


por um conjunto de regras simples de serem seguidas. Cite e descreva essas regras.
R: Contar as instruções de um algoritmo, as instruções simples tem o custo de um,
já os laços de repetição tem o custo de n ou mais dependendo de quantas iterações
ou quantos laços ele tem aninhados. Custo dominante ou pior caso, você sempre tem
que considerar o código como se fosse o pior caso, por exemplo, um laço for para
ordenar números em ordem crescente recebe os valores em ordem decrescente.
Comportamento assintótico, analise as constantes e as descarte.

3) O que significa dizer que uma função g(n) é O(f(n))?


R: Significa que a função g(n) tem um crescimento proporcional a f(n)

4) O que significa dizer que uma função g(n) é Ω(f(n))?


R: Significa que g(n) cresce proporcionalmente a f(n) mas em alguns pontos tem
capacidade de crescer mais rapidamente.

5) Liste os tipos de problemas que apresentam complexidade da ordem de n log n.


Como é possível identificá-los?
R: Algoritmos de busca, de ordenação e qualquer um que use a tática de dividir e
conquistar. É possível identificar por qualquer algoritmo que resolva um problema
transformando-o em problemas menores, que são resolvidos de forma independente e
depois unidos.

6) Considere dois algoritmos A e B com funções de complexidade de tempo a(n) = n2 –


n + 500 e b(n) = 47n + 47, respectivamente. Para quais valores de n o algoritmo A
leva menos tempo para executar do que B?
R: Entre os valores 12 e 35; n2 - n + 500 < 47n + 47 → n2 - 48 + 453 < 0 → 48 +-
482-4.1.453/2 → 48 += 492/2 → (48 + 22.18)/2 = 33.09 e (48 - 22.18)/2 = 12.91

7) Calcule a ordem de complexidade, no pior caso, das seguintes funções de custo:


•2n + 10 = O(n)
•1/2 n(n + 1) = n^2
•n + √n = O(n + √n)
•n / 1.000 = O(n)
•1/2 n2 = O(n^2)
•1/2 n2 – 3n = O(n^2)

8) Calcule a complexidade, no pior caso, do seguinte fragmento de código:


int i,j,k;
for(i=0; i < N; i++){
for(j=0; j < N; j++){
R[i][j] = 0;
for(k=0; k < N; k++)
R[i][j] += A[i][k] * B[k][j];
}
}
R: O(N^3)

9) Calcule a complexidade, no pior caso, do seguinte fragmento de código:


int i,j,k,s;
for(i=0; i < N-1; i++)
for(j=i+1; j < N; j++)
for(k=1; k < j; k++)
s = 1;
R: O(N^3)

10) Calcule a complexidade, no pior caso, do seguinte fragmento de código:


int i,j,s;
s = 0;
for(i=1; i < N-1; i++)
for(j=1; j < 2*N; j++)
s = s + 1;
R: O(N^2)

Você também pode gostar