MO417- Complexidade de Algoritmos I

Ata de Exercícios

Redator: Gilberto Gambugge Neto


Exercício 2.1-3


Considere o problema de pesquisa:

Entrada: Uma seqüência de n números A = <a1, a2, ..., an> e um valor v.

Saída: Um índice i tal que v = A[i] ou o valor especial NIL, se v não aparecer em A.

Escreva um pseudocódigo para pesquisa linear, que faça a varredura da seqüência, procurando por v. Usando um loop invariante, prove que seu algoritmo é correto. Certifique-se de que seu loop invariante satisfaz às três propriedades necessárias.

Solução:


A seguir, encontra-se o pseudocódigo para a pesquisa linear:

PesquisaLinear(A, n, v)

1   for i ← 1 to n
2         do if A [i] = v
3               do return i
4   return NIL


Seu loop invariante é:

Loop Invariante:

( ( v = A [i] ) e ( i < n ) ) ou ( v ∉ A [1 .. i - 1] )