Buscar

Exercicios de Fixação 01 - Conceitos Fundamentais - Parte I - Gabarito

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

Prévia do material em texto

ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
Lista de Exercícios de Fixação 01
Conceitos Fundamentais – Parte I
1. Um algoritmo é executado em 10 segundos para uma entrada de tamanho 50. Se o algoritmo
é quadrático, quanto tempo em segundos ele gastaria, aproximadamente, no mesmo
computador, se a entrada tiver tamanho 100? 
Sugestão de solução: Para o algoritmo quadrático (n2) e para n = 50 e t = 10s, tem-se (50 * 50)/10 =
250 elementos/s. Portanto, podemos efetuar a seguinte consideração:
250 elementos/s = (100 * 100)/t para encontrar quanto tempo a máquina gastaria para processar n =
100. Sendo assim, temos que 25t = 1000 → t = 40s
2. Considere o algoritmo a seguir e responda as perguntas que seguem, fornecendo
justificativas:
algoritmo enigma(n, ref A)
entrada: um número natural n e uma referência para o vetor A com n valores reais
saída: não revelada
   para i de 1 a n­1 faca
      k   i←
      para j de i+1 a n faca
       se (A[j] < A[i]) entao
k   j←
fimse
 fimpara
      troca(A[k], A[i])
   fimpara
fimalgoritmo
a. Supondo que a função troca() faz a troca de valores de seus 2 argumentos, o que o
algoritmo enigma faz?
Sugestão de solução: O algoritmo enigma tenta ordenar o vetor A em ordem crescente.
b. Caracterize as instâncias de pior caso do algoritmo.
Sugestão de solução: A situação de pior caso do algoritmo enigma compreende um vetor
1
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
de elementos distintos dois a dois e ordenado em ordem decrescente. Nesse caso, o teste
A[j] < A[k] sempre resultará no valor lógico verdadeiro e a linha que atribui j a k sempre
será executada. Como as demais linhas do algoritmo são sempre executadas, o número
máximo de operações primitivas ocorre no caso descrito (pior caso).
3. Um problema algorítmico está definido quando estabelecemos os seguintes três aspectos: o
conjunto de entradas; o conjunto de saídas válidas; e, finalmente, a relação entre cada
entrada e suas correspondentes saídas válidas. Todos os demais aspectos são irrelevantes,
pois as medidas de eficiência O,  e  não dependem de constantes multiplicativas
associadas ao artefato computacional. É correta tal afirmação? Justifique.
Sugestão de solução: Sim, pois as notações O,  e  são ditas assintóticas sendo aplicadas
para determinar a complexidade computacional de um algoritmo, com base em n ‘muito
grande’ e desconsiderando constantes (por sua vez independentes do tamanho da entrada). 
4. É verdade que ½n2 é O(n)? Justifique.
Sugestão de solução: Não. A notação O é indicada para denotar o limite superior de uma
função. No caso, ½n2 é O(n2), uma vez que para se dizer que f(n) é O(g(n)), tem-se que obter
f(n) ≤ cg(n) para alguma constante real c > 0 e n ≥ n0. Se consideramos c = ½ e n0 = 1,
podemos afirmar que ½n2 é O(n2). Observe:
½ n2 ≤ cn2 → ½ n2 ≤ ½ n2 → ½ 12 ≤ ½12. Portanto, ½n2 é O(n2).
5. Ordene as funções, a seguir, por sua taxa assintótica de crescimento.
4nlgn + 2n 210 2lgn
3n + 100nlgn 4n 2n
n2 + 10n n3 nlgn
Sugestão de solução: 210 < 2lgn < 4n < nlgn < 4nlgn + 2n < 3n + 100nlgn < n2 + 10n < n3 < 2n
6. Qual das seguintes afirmações sobre crescimento assintótico de funções não é verdadeira?
a) 2n2 + 3n + 1 é O(n2)
b) Se f(n) é O(g(n)) então g(n) é O(f(n))
c) lgn2 é O(lgn)
2
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
d) Se f(n) é O(g(n)) e g(n) é O(h(n)) então f(n) é O(h(n))
e) 2n+ 1 é O(2n)
7. Critique a afirmação 'n2 – 100n está O(n2) para todo n ≥100'.
Sugestão de solução: A afirmação é verdadeira, pois basta considerar c = 1 que n2 – 100n ≤ cn2 será
satisfeita. Observe que se n2 – 100n ≤ cn2, para c = 1 e n0 = 100, tem-se que (100)2 – 100*100 ≤
1*(100)2 → (100)2 – (100)2 ≤ (100)2 → 0 ≤ (100)2. Portanto, n2 – 100n é O(n2).
8. Mostre que lgn não está em (n).
Sugestão de solução: Basta lembrar que  é a notação assintótica utilizada para denotar o limite
inferior de uma função. Sendo assim, afirma-se que f(n) é (g(n)) se f(n) ≥ c(g(n)), para c > 0 e n ≥
n0. Para f(n) = lgn, temos que o seu limite inferior é lgn, uma vez que se dado c = 1 e n0 = 2, temos
que lgn ≥ clgn → lg2 ≥ 1*lg2 → 1 ≥ 1. Portanto, lgn é (lgn).
9. Mostre que n(n + 1)/2 e n(n – 1)/2 estão em (n2).
Sugestão de solução: Para ambas as funções, precisamos considerar que f(n) é (g(n)) se f(n) é
O(g(n)) e f(n) é (g(n)), ou seja, cg(n) ≤ f(n) ≤ dg(n) para c, d > 0 e n suficientemente grande (n ≥
n0). Sendo assim, para n(n+1)/2, basta considerar c = 1/2, d = 2/2 = 1 e n0 ≥ 1, para satisfazer a
equação. 
cn2 ≤ n(n+1)/2 ≤ dn2 → 1/2*(1)2 ≤ n(n+1)/2 ≤ 1(1)2 → 0,5 ≤ 1 ≤ 1. Portanto, n(n+1)/2 é (n2).
Para n(n-1)/2 a ideia é similar (tarefa para você!).
10. Quais das seguintes igualdades são verdadeiras?
I. n2 = o(n3)
II. 2n + 1 = o(n2)
III. n3 = o(n2)
IV. 3n + 5nlgn = o(n)
V. lgn + n1/2= o(n)
a) somente I e II
b) somente II, III e IV
3
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
c) somente III, IV e V
d) somente I, II e V
e) somente I, III e IV
11. Sejam duas funções f(n) que mapeiam números inteiros positivos em números reais
positivos. Com respeito às notações assintóticas de complexidade, avalie as afirmações a
seguir.
I. Diz-se que f(n) é O(g(n)) se existe uma constante real c > 0 e existe uma constante inteira
n0 ≥ 1 tal que f(n) ≤ cg(n) para todo inteiro n ≥ n0
II. Diz-se que f(n) é o(g(n)) se para toda constante real c > 0 existe uma constante inteira n0
≥ 1 tal que f(n) < cg(n) para todo inteiro n ≥ n0 
III. Diz-se que f(n) é (g(n)) se existe uma constante real c > 0 e existe uma constante
inteira n0 ≥ 1 tal que f(n) ≥ cg(n) para todo inteiro n ≥ n0 
IV. Diz-se que f(n) é (g(n)) se para toda constante real c > 0 existe uma constante inteira n0
≥ 1 tal que f(n) > cg(n) para todo inteiro n ≥ n0 
V. Diz-se que f(n) é (g(n)) se, e somente se, f(n) é O(g(n)) e f(n) é (g(n))
A análise permite concluir que
a) todas as afirmativas são falsas
b) todas as afirmativas são verdadeiras
c) apenas as afirmativas I e III são verdadeiras
d) apenas as afirmativas II e IV são verdadeiras
e) apenas a afirmativa V é falsa
12. Alice e Bob estão discutindo sobre seus algoritmos. Alice afirma que seu método de tempo
O(nlgn) é sempre mais rápido que o método de Bob de tempo O(n2). Para decidir a questão,
eles executaram um conjunto de experimentos. Para o espanto de Alice, eles encontraram
que se n < 100, o algoritmo O(n2) executa mais rápido, e somente quando n ≥ 100 é o
4
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
algoritmo O(nlgn) é um pouco melhor. Explique como isso é possível.
Sugestão de solução: Isso é possível em virtude da definição da própria notação assintótica que,
usada para determinar a complexidade computacional de uma função, a caracteriza para n
suficientemente grande. Sendo assim, não são relevantes os valores pequenos de n (tamanho da
entrada), no caso se n < 100, O(nlgn) representa um tempo de execução pior que O(n2).
13. Suponha que dois algoritmos, A e B, resolvem o mesmo problema, para um tamanho de
instâncias dado por n. Em quais dos seguintes casos podemos afirmar que A é mais rápido
que B? Justifique. 
a) Caso 1: A consome tempo O(lgn) no pior caso e B consome tempo O(n3) no pior caso;
b) Caso 2: A consome O(nlgn) unidades de tempo no pior caso e B consome (n2) unidades
de tempo pior caso;
c) Caso 3: No pior caso, A consome O(n2) unidades de tempo e B consome (n2lgn)
unidades de tempo.
Sugestão de solução: Para n suficientemente grande, podemos considerar que o algoritmo A é mais
rápido que B em todos os casos. Observe que lgn < nlgn < n2 < n2lgn< n3, para n suficientemente
grande!
14. Observe as funções representadas no gráfico, a seguir.
5
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
Indique a alternativa falsa sobre o crescimento assintótico dessas funções:
a) f(n) = O(h(n)) e i(n) = (g(n))
b) f(n) = (h(n)) e i(n) = (h(n))
c) g(n) = O(i(n)) e h(n) = (g(n))
d) g(n) = O(i(n)), i(n) = O(f(n)) e, portanto, g(n) = O(f(n))
e) h(n) = (i(n)), logo, i(n) = O(h(n))
15. Considere dois algoritmos A1 e A2, cujas funções de custo são, respectivamente, T1(n) = n2 –
n + 1 e T2(n) = 6nlgn + 2n. Para simplificar a análise, assuma que n > 0 é sempre uma
potência de 2. Com relação ao enunciado, indique a alternativa correta. 
a) Como T1(n) = (n2) e T2(n) = (nlgn), então A2 é sempre mais eficiente que A1
b) O limite superior T1(n) = O(n3) é correto assintoticamente restrito
c) O limite inferior T2(n) = (n3) é correto e assintoticamente restrito
d) T1 e T2 são assintoticamente equivalentes
e) A1 é mais eficiente que A2, para n suficientemente pequeno
16. Sejam T1(n) = 100n + 15, T2(n) = 10n2 + 2n e T3(n) = 0,5n3 + n2 + 3 as equações que
descrevem a complexidade de tempo dos algoritmos Alg1, Alg2 e Alg3, respectivamente,
para entradas de tamanho n. A respeito da ordem de complexidade desses algoritmos, pode-
se concluir que
a) as complexidades assintóticas estão, respectivamente, em O(n), O(n2) e O(n3)
b) as complexidades assintóticas estão, respectivamente, em O(n), O(n2) e O(n2)
c) as complexidades assintóticas estão, respectivamente, em O(100), O(10) e O(0,5)
d) Alg2 e Alg3 pertencem as mesmas classes de complexidade assintótica
e) Alg1 e Alg2 pertencem as mesmas classes de complexidade assintótica
6
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
17. Em relação ao limite assintótico de notação O, atribua V (verdadeiro) ou F (falso) às
afirmativas a seguir.
( ) Em uma estrutura de laço duplamente aninhado, tem-se imediatamente um limite
superior O(n2)
( ) Em uma estrutura de laço duplamente aninhado, o custo de cada iteração do laço interno
é de limite superior O(1)
( ) Em uma estrutura de laço triplamente aninhado, o custo de cada iteração do laço interno
é de limite superior O(n3)
( ) O limite O(n2) para o tempo de execução do pior caso de execução aplica-se para
qualquer entrada
( ) f(n) = O(g(n)) é uma afirmação de que algum múltiplo constante de g(n) é de limite
assintótico inferior
Indique a alternativa que contém, de cima para baixo, a sequência correta.
a) V, V, F, V, F
b) V, F, V, F, V
c) F, V, V, F, F
d) F, F, V, V, F
e) F, F, F, V, V
18. Considere o problema de encontrar o maior e o menor elemento de um vetor de inteiros
A[1..n], n > 0. O algoritmo simples para resolver este problema pode ser derivado do
Programa, a seguir.
Programa – Implementação direta para obter o máximo e o mínimo de um conjunto
procedure MaxMin1 (var A: Vetor; var Max, Min: integer);
var i: integer;
begin
Max := A[1]
7
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
Min := A[1]
for i := 2 to n do
begin
if A[i] > Max then Max := A[i];
if A[i] < Min then Min := A[i];
end;
end.
Seja f uma função de complexidade tal que f(n) é número de comparações entre os elementos de A,
se A contiver n elementos. Portanto, f(n) = 2(n-1), para n>0.
Faça a análise de complexidade para o melhor caso, pior caso e caso médio do programa
apresentado.
Sugestão de solução: para esse programa, não há situações de pior, melhor ou médio casos, uma vez
que o laço é sempre executa e é o que mais onera em termos de quantidade de passos executados.
Sendo assim, f(n) = 2(n-1) representa o número de passos do trecho de código ‘dominante’, para
fins de complexidade computacional, do programa.
19. Bill dispõe de um algoritmo, encontre2D, para encontrar um elemento x em um arranjo Anxn.
O algoritmo encontre2D itera sobre as linhas de A e chama o algoritmo encontreArray, do
trecho de código abaixo, para cada linha, até que x seja encontrado ou todas as linhas de A
tenham sido pesquisadas.
algoritmo encontreArray(x, A): 
Entrada: Um elemento x e um arranjo A com n elementos 
Saída: O índice i tal que x = A[i], ou ­1 se nenhum elemento de A é igual a x 
i = 0; 
enquanto i < n faça 
se x = A[i] então 
retorna i
senão i = i + 1
retorna ­1 
Qual o tempo para o pior caso de encontre2D em termos de n? Qual o tempo para o pior caso de
encontre2D em termos de N, onde N é o tamanho total de A? É correto dizer que encontre2D é um
algoritmo de tempo linear? Justifique.
8
 ANÁLISE DE ALGORITMOS
Bacharelado em Ciência da Computação
Sugestão de solução: No pior caso, o algoritmo encontre2D (que invoca encontreArray para cada
linha de Anxn), em termos de n é O(n2) – no pior caso, para cada uma das n linhas, as n colunas são
visitadas). Se N é o tamanho total de A, então o pior caso é representado por O(N). Não é correto
dizer que encontre2D é linear pois N = n * n = n2 – a entrada do algoritmo é, na verdade, expressa
por n * n elementos a serem visitados.
20. Considere o código, a seguir.
void ordena (int n, int* v){
int i,j;
for (i=n­1; i>=1; i­­)
          for (j=0; j<i; j++)
            if (v[j]>v[j+1]){ /*troca*/
int temp = v[j];
v[j] = v[j+1];
v[j+1] = temp;
}
}
Apresente a análise da complexidade de tempo para o melhor, pior e médio caso. Especifique, para
tanto, o que caracteriza cada caso. 
Sugestão de solução: o pior caso se estabelece quando a entrada está em ordem descrescente de
valores, pois assim, todas as trocas serão efetuadas. No melhor caso, a entrada já está em ordem
crescente não sendo necessária qualquer troca de valores. Observem que estas afirmações dizem
respeito à quantidade de passos especificamente. De um modo geral, para todos os valores de
entrada, os laços aninhados dominam a complexidade do código. Sendo assim, podemos observar
que:
laço i → n-1 a 1 → executado (n – 1) vezes
laço j → 0 a i-1 → executado i vezes, daí temos:
∑
i=n−1
1
i=(n−1)+…+1=((n−1)+1)(n−1)
2
=
(n(n−1))
2
Aplicando as propriedades da notação assintótica, podemos considerar que independentemente dos
valores de entrada, os laços interno e externo são sempre executados. Sendo assim, o código é
O(n2), Ω(n2) e Θ(n2), para n suficientemente grande.
9
	Lista de Exercícios de Fixação 01

Outros materiais