Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Lista de Exercícios de Análise de Algoritmos
Antonio Ramos de Carvalho Júnior
1 Exercícios
1. Descreva um problema real que pode ser solucionado por meio de algoritmos de de ordenação e
apresente uma solução para o mesmo, justificando a sua escolha.
2. Quais parâmetros podem ser utilizados como medidas de eficiência para a solução de um deter-
minado problema. Discorra sobre as vantagens e em quais cenários existem uma limitação para
tais parâmetros.
3. Mostre um problema real no qual apenas a melhor solução servirá. Em seguida, apresente um
problema em que baste uma solução que seja ”aproximadamente” a melhor. (Cormen, Thomas
H., 1.1-5 pg 7)
4. Qual é o menor valor de n tal que um algoritmo cujo tempo de execução é 100n2 funciona mais
rápido que um algoritmo cujo tempo de execução é 2n na mesma máquina? (Cormen, Thomas
H., 1.2-3 pg 9)
5. Para cada uma função f(n) e cada tempo t na tabela a seguir, determine o maior tamanho n
de um problema que pode ser resolvido no tempo t, supondo-se que o algoritmo para resolver o
problema demore f(n) microsegundos. Dica: Utilize suas habilidades em desenvolvimento para
uma solução mais rápida e precisa =D. (Cormen, Thomas H., 1-1 pg 9)
1 segundo 1 minuto 1 hora 1 dia 1 mês 1 ano 1 século
lgn√
n
n
nlgn
n2
n3
2n
n!
6. Usando a figura abaixo como modelo, ilustre a operação de INSERTION-SORT no arranjo A =<
31, 41, 59, 26, 41, 58 >. (Cormen, Thomas H., 2.1-1 pg 15)
7. Considere um arranjo A com n elementos, faça um pseudocódigo para buscar um elemento x
neste arranjo considerando que:
(a) o arranjo A não possui nenhuma ordem;
(b) o arranjo A está em ordem crescente;
1
(c) o arranjo A está em ordem decrescente.
8. Qual a ordem aplicada a um determinado arranjo pelo algoritmo ORDENA (crescente ou de-
crescente)? Qual a mudança necessária no mesmo para que ele faça a odenação em sentido
contrário?
1: procedure ORDENA
2: for j ← 2 to n do
3: chave← A[j]
4: j ← j − 1
5: while i > 0 e A[i] > chave do
6: A[i+ j]← A[i]
7: i← i− 1
8: A[i+ j]← chaves
9. Discorra sobre a análise de algoritmos, qual sua importância, que fatores devem ser observados
e qual a maneira de definir que um algoritmo é X melhor que outro algoritmo Y .
10. Expresse as funções f(n) abaixo em termos da notação Θ:
(a) 10n2 + 5n− n3
(b) n+ 10k2
(c) n3/100 + 100n2 − 100n+ 3
(d) n10 + 2n
11. Considere a ordenação de n números armazenados no arranjo A, localizando primeiro o menor
elemento de A e permutando esse elemento com o elemento contido em A[1]. Em seguida, encontre
o segundo menor elemento de A e o troque pelo elemento A[2]. Continue dessa maneira para os
primeiros n − 1 elementos de A. Escreva o pseudocódigo para esse algoritmo, conhecido como
ordenação por seleção. Que loop invariante esse algoritmo mantém? por que ele só precisa ser
executado para os primeiros n−1 elementos e não para todos os n elementos? Forneça os tempos
de execução do melhor caso e do pior caso da ordenação por seleção em notação Θ. (Cormen,
Thomas H., 2.2-2 pg 20)
12. Reescreva o procedimento abaixo de modo que ele não utilize sentinelas e, em vez disso, se
interrompa depois que o arranjo L ou R tiver todos os seus elementos copiados de volta para A,
e então copie o restante do outro arranjo de volta em A.
2
13. Ilustre a operação de ordenação por intercalação para o arranjo A =< 3, 41, 52, 26, 38, 57, 9, 49 >.
14. Uma abordagem empregada em projetos de algoritmos é a de dividir e conquistar, explique quais
são os requistos para que um algoritmo seja divisível. Escolha um exemplo de algoritmo divisível
apresente um pseudocódigo que solucione-o utilizando uma abordagem sem divisão e conquista
e outra com divisão e conquista.
15. Indique se as afirmativas a seguir são verdadeiras ou falsas e justifique a sua resposta: (Ziviani,
Nivio. Questão 7, pg 30) e (Cormen, Thomas H., 3-4 pg 47)
(a) (2n+1) = Ω(2n)
(b) (22n) = Ω(2n)
(c) max(f(n), g(n)) = Θ(f(n) + g(n)) sendo f(n) e g(n) duas funções assintoticamente não
negativas.
(d) (n+ a)b = Θ(nb) para quaisquer constantes a e b, onde b > 0
(e) f(n) + g(n) = Θ(min(f(n), g(n))
16. Suponha um algoritmo A e um algoritmo B, com funções de complexidade de tempo a(n) =
n2 − n + 549 e b(n) = 49n + 49, respectivamente. Determine quais valores de n pertencentes
ao conjunto dos números naturais para os quais A leva menos tempo para executar do que B.
(Ziviani, Nivio. Questão 9, pg 30)
17. Forneça limites assintóticos superiores e inferiores para T (n) em cada uma das recorrências a
seguir. Suponha que T (n) seja constante para n ≤ 2. Torne seus limites tão restritos quanto
possível e justifique sua resposta.
DICA 1: Você pode utilizar as definições assintóticas para justificar sua resposta.
DICA 2: Sempre que for difícil encontrar o comportamento da recorrência, você pode utilizar
mecanismos matemáticos para obter uma recorrência mais simples, assim como já foi demonstrado
em sala de aula.
(a) T (n) = 2T (n/2) + n3
(b) T (n) = T (9n/10) + n
(c) T (n) = 2T (n/2) + n3
(d) T (n) = T (
√
n) + 1
18. Use o método mestre para fornecer limites assintóticos restritos para as recorrências a seguir:
(Cormen, Thomas H., .43-1 pg 60)
(a) T (n) = 4T (n/2) + n
(b) T (n) = 4T (n/2) + n2
(c) T (n) = 4T (n/2) + n3
19. O tempo de execução de um algoritmo A é descrito pela recorrência T (n) = 7T (n/2) + n2. Um
algoritmo concorrente A′ tem um tempo de execução T ′(n) = aT ′(n/4) + n2. Qual é o maior
valor inteiro para a tal que A′ seja assintoticamente mais rápido que A? (Cormen, Thomas H.,
4.3-2 pg 61)
20. Resolva os somatórios abaixo:
3
(a)
∑50
i=0(3 + i)
(b)
∑10
k=0(5 + 4k)
(c)
∑n
i=0 ai
(d)
∑n
i=0 a
i
(e)
∑n
i=0
∑i
j=0 a
21. Forneça os limites assintóticos para os algoritmos abaixo:
(a) 1: procedure ORDENA
2: for j ← 2 to n do
3: chave← A[j]
4: j ← j − 1
5: while i > 0 e A[i] > chave do
6: A[i+ j]← A[i]
7: i← i− 1
8: A[i+ j]← chaves
(b) 1: procedure FAT(n)
2: if n > 1 then
3: return n ∗ FAT (n− 1);
4: else
5: return 1;
(c) 1: procedure MULTIPLICA(A, B)
2: for i← 0 to M do
3: for i← 0 to M do
4: for k ← 0 to M do
5: C[i][j] = C[i][j] + (A[i][k] ∗B[k][i]);
2 Referências
Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford. Algoritmos Teoria e
Prática, Tradução da 2a edição americana, Editora Campus, 2002.
Ziviani, Nivio. Projeto de Algoritmos. 2a edição revisada e ampliada Editora Thomson, 2004.
4
3 Propriedades Somatórios
1.
∑n
i=m αf(i) = α
∑n
i=m f(i)
2.
∑n
i=m[f(i)± g(i)] =
∑n
i=m f(i)±
∑n
i=m g(i)
3.
∑m
i=m f(i) = f(m)
4.
∑n
i=a f(i) =
∑p
i=a f(i) +
∑n
i=p+1 f(i)
5.
∑n
i=m f(i) =
∑n+p
i=m+p f(i− p)
6.
∑n
i=m f(i) =
∑−m
i=−n f(−i)
7.
∑n
i=m[f(i+ 1)− f(i)] = f(n+ 1)− f(m)
8.
∑n
i=m
∑l
j=k f(i)g(j) =
∑n
i=m f(i)
∑l
j=k g(j)
9. |∑ni=m f(i)| ≤∑ni=m |f(i)|
4 Links para auxiliar
1. Propriedades de Logarítmos: <http://www.infoescola.com/matematica/logaritmo/>
2. Propriedades de Equações Exponenciais: <http://www.infoescola.com/matematica/equacao-exponencial/>
5

Mais conteúdos dessa disciplina