13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

1 d i s t â n c i a ( s , t , n ,m):=<br />

2 i f (n=0) return m<br />

3 i f (m=0) return n<br />

4 i f (sn = tm ) then<br />

5 sol0 = d i s t â n c i a (s ,t ,n − 1 ,m − 1)<br />

6 else<br />

7 sol0 = d i s t â n c i a (s ,t ,n − 1 ,m − 1) + 1<br />

8 end i f<br />

9 sol1 = d i s t â n c i a (s ,t ,n ,m − 1) + 1<br />

10 sol2 = d i s t â n c i a (s ,t ,n − 1 ,m) + 1<br />

11 return min(sol0, sol1, sol2)<br />

5.2. Comparação <strong>de</strong> sequências<br />

Essa implementação tem <strong>complexida<strong>de</strong></strong> exponencial. Com programação dinâmica,<br />

armazenando os valores intermediários <strong>de</strong> d em uma matriz m, obtemos<br />

Distância <strong>de</strong> Edição<br />

Algoritmo 5.5 (PD-distância)<br />

Entrada Dois strings s e t, e n e m, seus respectivos tamanhos medidos<br />

em número <strong>de</strong> caracteres.<br />

Saída A distância mínima entre s e t.<br />

Comentário O algoritmo usa uma matriz M = (mi,j) ∈ N (n+1)×(m+1)<br />

que armazena as distâncias mínimas mi,j entre os prefixos s[1 . . . i]<br />

e t[1 . . . j].<br />

1 PD− d i s t â n c i a ( s , t , n ,m):=<br />

2 for i := 0, . . . , n do mi,0 := i<br />

3 for i := 1, . . . , m do m0,i := i<br />

4 for i := 1, . . . , n do<br />

5 for j := 1, . . . , m do<br />

6 i f (si = tj ) then<br />

7 sol0 := mi−1,j−1<br />

8 else<br />

9 sol0 := mi−1,j−1 + 1<br />

10 end i f<br />

105

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!