Você está na página 1de 3

IC-UNICAMP

MO417- Complexidade de Algoritmos, Lista 1, 15/10/20, entrega em 19/10/20

Questão 1 [10]
Faça a análise assintótica de pior caso do algoritmo G abaixo, apresentando um limite apertado. A
entrada são um vetor A com ı́ndices entre ` e r inclusive e um inteiro k.

F(A, `, r, k)
1 if k mod 2 == 0
2 for i = ` to r − 4
3 for j = 1 to 3
4 A[i] = A[i] + A[i + j]

G(A, `, r, k)
1 for i = ` to r step 5
2 f(A, `, r, A[i])
MO417- Complexidade de Algoritmos — Lista 1 2

Questão 2 [10]
O algoritmo abaixo faz uma busca por uma chave x em um vetor A[i . . j] de tamanho n. Analise o
tempo de execução do algoritmo. Se for relevante, considere o pior e o melhor casos.

rsearch(A, i, j, x)
1 if i > j
2 return −1
3 if i == j
4 if x == A[i]
5 return i
6 else
7 return −1
8 m = b(i + j)/2c
9 if x ≤ A[m]
10 k = rsearch(A, m + 1, j, x)
11 if k == −1
12 return rsearch(A, i, m, x)
13 else
14 return k
15 else
16 k = rsearch(A, i, m, x)
17 if k == −1
18 return rsearch(A, m + 1, j, x)
19 else
20 return k
MO417- Complexidade de Algoritmos — Lista 1 3

Questão 3 [10]
Analise as duas buscas binárias abaixo comparativamente no melhor e no pior casos. Faça a sua análise
em termos do número de comparações realizadas pelos algoritmos. A entrada são um vetor A com
ı́ndices entre ` e r inclusive e um inteiro k.

Binary-Search(A, `, r, k)
1 if r < `
2 return 0
3 m = b(` + r)/2c
4 if k < A[m]
5 return Binary-Search(A, `, m − 1, k)
6 elseif k > A[m]
7 return Binary-Search(A, m + 1, r, k)
8 else
9 return m

Binary-Search(A, `, r, k)
1 if ` == r
2 if A[`] == k
3 return `
4 else
5 return 0
6 else
7 m = d(` + r)/2e
8 if k < A[m]
9 return Binary-Search(A, `, m − 1, k)
10 else
11 return Binary-Search(A, m, r, k)

Você também pode gostar