A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UNIVERSIDADE FEDERAL DE MINAS GERAIS Exercícios de Revisão 1 Crisitano Arbex Valle Vinicius Fernandes dos Santos

Apresentações semelhantes


Apresentação em tema: "UNIVERSIDADE FEDERAL DE MINAS GERAIS Exercícios de Revisão 1 Crisitano Arbex Valle Vinicius Fernandes dos Santos"— Transcrição da apresentação:

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

23

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


Carregar ppt "UNIVERSIDADE FEDERAL DE MINAS GERAIS Exercícios de Revisão 1 Crisitano Arbex Valle Vinicius Fernandes dos Santos"

Apresentações semelhantes


Anúncios Google