Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouCláudia Eger Rocha Alterado mais de 8 anos atrás
1
UNIVERSIDADE FEDERAL DE MINAS GERAIS Exercícios de Revisão 1 Crisitano Arbex Valle arbex@dcc.ufmg.br Vinicius Fernandes dos Santos viniciussantos@dcc.ufmg.br
2
COMPUTER SCIENCE Exercício 1 São dados 2n números distintos distribuídos em dois vetores com n elementos A e B ordenados de maneira tal que: – A[1] > A[2] > A[3] >... > A[n] – B[1] > B[2] > B[3] >... > B[n] Apresente um algoritmo linear para encontrar o k-ésimo maior número dentre esses 2n elementos
3
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 1, max = 9 1 comparação 0 0 ia 0 0 ib
4
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 2, max = 8 2 comparações 1 1 ia 0 0 ib
5
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 3, max = 7 3 comparações 2 2 ia 0 0 ib
6
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 4, max = 6 4 comparações 3 3 ia 0 0 ib
7
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 5, max = 5 5 comparações 3 3 ia 1 1 ib
8
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 6, max = 4 6 comparações 3 3 ia 2 2 ib
9
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 7, max = 3 7 comparações 3 3 ia 3 3 ib
10
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 8, max = 2 8 comparações 4 4 ia 3 3 ib
11
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 9, max = 1 9 comparações 4 4 ia 4 4 ib
12
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 k = 10, max = 0 10 comparações 5 5 ia 4 4 ib
13
COMPUTER SCIENCE Exercício 1 9 9 8 8 7 7 3 3 1 1 A 10234 6 6 5 5 4 4 2 2 0 0 B 10234 5 5 ia 5 5 ib
14
COMPUTER SCIENCE Exercício 1 int kmax2n(int *a, int *b, int n, int k) { if (k 2*n) { return -1; } int km = -1, ia = 0, ib = 0; for (int j = 1; j <= k; j++) { if (a[ia] >= b[ib] && ia < n) km = a[ia++]; else if (ib < n) km = b[ib++]; } return km; }
15
COMPUTER SCIENCE Exercício 2 Considere a função: int x(int n) { if (n <= 0) { return 0; } else { return (n + x(n-1)); } a)O que essa função faz? A função x calcula o somatório de n até 0.
16
COMPUTER SCIENCE Exercício 2 Considere a função: int x(int n) { if (n <= 0) { return 0; } else { return (n + x(n-1)); } b)Qual sua ordem de complexidade?
17
COMPUTER SCIENCE Exercício 2 Considere a função: int x(int n) { if (n <= 0) { return 0; } else { return (n + x(n-1)); } b)Qual sua ordem de complexidade?
18
COMPUTER SCIENCE Exercício 2 Considere a função: int x(int n) { if (n <= 0) { return 0; } else { return (n + x(n-1)); } c)Escreva uma função iterativa equivalente. int x(int n) { int s = 0; int i; for (i = 0; i <= n; i++) s += i; return s; }
19
COMPUTER SCIENCE Exercício 2 Considere a função: int x(int n) { if (n <= 0) { return 0; } else { return (n + x(n-1)); } d)Qual implementação é mais eficiente? int x(int n) { int s = 0; int i; for (i = 0; i <= n; i++) s += i; return s; } Tempo: O(n) Espaço: O(n)Espaço: O(1)
20
COMPUTER SCIENCE Exercício 3 Considere que a multiplicação de matrizes é O(n 3 ). Se você tivesse a opção de utilizar um algoritmo com custo O(2 n ) para multiplicar duas matrizes, qual algoritmo você iria preferir? Justifique. n123456789 n3n3 182764125216343512729 2n2n 248163264128256512 10100 10001E+06 10241E+30
21
COMPUTER SCIENCE Exercício 4 Vários algoritmos em computação usam a técnica de “Dividir para Conquistar”: basicamente eles fazem alguma operação sobre todos os dados, e depois dividem o problema em sub-problemas menores, repetindo a operação. Uma equação de recorrência típica para esse tipo de algoritmo é mostrada abaixo. Resolva essa equação. –
22
COMPUTER SCIENCE
24
Exercício 5 Indique se as afirmativas a seguir são verdadeiras ou falsas e justifique. a)2 n+1 = O(2 n ) Verdadeira: – Existem constantes não-negativas c e m tais que 2 n+1 ≤ c 2 n, para n ≥ m (e.g., c = 3, m = 0) ou – 2 n+1 = 2 × 2 n = O(2 n )
25
COMPUTER SCIENCE Exercício 5 Indique se as afirmativas a seguir são verdadeiras ou falsas e justifique. b)2 2n = O(2 n ) Falsa: – Não existem constantes não-negativas c e m tais que 2 2n ≤ c 2 n, para n ≥ m ou – 2 2n = 4 n ≠ O(2 n )
26
COMPUTER SCIENCE Exercício 5 Indique se as afirmativas a seguir são verdadeiras ou falsas e justifique. c)f(n) = O(u(n)) e g(n) = O(v(n)) ⇒ f(n) + g(n) = O(u(n) + v(n)) Verdadeira: – f(n) = O(u(n)) ⇒ f(n) ≤ c 1 u(n), para n ≥ m 1 – g(n) = O(v(n)) ⇒ g(n) ≤ c 2 v(n), para n ≥ m 2 – f(n) + g(n) ≤ c 1 u(n) + c 2 v(n) – f(n) + g(n) ≤ c (u(n) + v(n)), para n ≥ m – ∴ f(n) + g(n) = O(u(n) + v(n)) (seja c = max(c 1, c 2 ), m ≥ max(m 1, m 2 ))
27
COMPUTER SCIENCE Exercício 5 Indique se as afirmativas a seguir são verdadeiras ou falsas e justifique. d)f(n) = O(u(n)) e g(n) = O(v(n)) ⇒ f(n) – g(n) = O(u(n) – v(n)) Falsa: – f(n) – g(n) = O(u(n)) – O(v(n)) – f(n) – g(n) = O(u(n)) + (–1) O(v(n)) – f(n) – g(n) = O(u(n)) + O(v(n)) – f(n) – g(n) = O(max(u(n), v(n))
28
COMPUTER SCIENCE Exercício 6 Considerando que a operação relevante é o número de vezes que a operação soma é executada, apresente a função de complexidade de tempo para: a)for i ← 1 to n do for j ← 1 to n do for k ← 1 to n do temp ← temp + i + j + k
29
COMPUTER SCIENCE Exercício 6 Considerando que a operação relevante é o número de vezes que a operação soma é executada, apresente a função de complexidade de tempo para: b)for i ← 1 to n do for j ← 1 to i do for k ← 1 to j do temp ← temp + i + j + k
30
COMPUTER SCIENCE Exercício 6 Considerando que a operação relevante é o número de vezes que a operação soma é executada, apresente a função de complexidade de tempo para: c)for i ← 1 to n do for j ← 1 to n do for k ← i to n do temp ← temp + i + j + k
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.