Projeto e Anlise de Algoritmos Prof Ruy Luiz

  • Slides: 14
Download presentation
Projeto e Análise de Algoritmos Prof. Ruy Luiz Milidiú 9/6/2021 Ruy Luiz Milidiú 1

Projeto e Análise de Algoritmos Prof. Ruy Luiz Milidiú 9/6/2021 Ruy Luiz Milidiú 1

Programação Dinâmica 9/6/2021 Ruy Luiz Milidiú 2

Programação Dinâmica 9/6/2021 Ruy Luiz Milidiú 2

Edição de padrões z. Operações v i n t n e r y. Insertion

Edição de padrões z. Operações v i n t n e r y. Insertion y. Replacement y. Deletion w r i t e r s R R RMR R R z. NOP v y. Match z. Roteiro yseqüência de op’s 9/6/2021 i n t n e r w r i t e r s R I M D MM I Ruy Luiz Milidiú 3

Distância de edição d(X, Y) número mínimo de OP’s para transformar a cadeia de

Distância de edição d(X, Y) número mínimo de OP’s para transformar a cadeia de caracteres X na cadeia de caracteres Y z. Exemplo: d(“vintner”, “writers”) = 5 9/6/2021 Ruy Luiz Milidiú 4

Alinhamento ¶Inserir brancos em X, gerando X’ ·Inserir brancos em Y, gerando Y’ ¸Associar

Alinhamento ¶Inserir brancos em X, gerando X’ ·Inserir brancos em Y, gerando Y’ ¸Associar posições correspondentes de X’ e Y’ v i n t n e r w r i 9/6/2021 t e r s w r i Ruy Luiz Milidiú t e r s 5

Alinhamento Roteiro v i n t n e r w r i t e

Alinhamento Roteiro v i n t n e r w r i t e r s R I M D MM I Retroceder a animação ! 9/6/2021 Ruy Luiz Milidiú 6

Distância de edição Entrada z. X cadeia de caracteres z. Y cadeia de caracteres

Distância de edição Entrada z. X cadeia de caracteres z. Y cadeia de caracteres y|X| = m y|Y| = n Saída zd(X, Y) 9/6/2021 número total de caracteres em X número total de caracteres em Y distância de edição entre X e Y Ruy Luiz Milidiú 7

Princípio da Otimalidade v i n t n e r w r i t

Princípio da Otimalidade v i n t n e r w r i t e r s n t n e t e Todo subalinhamento de um alinhamento ótimo também é ótimo. 9/6/2021 Ruy Luiz Milidiú 8

Tamanho z. Número total de caracteres a alinhar z. Triviais yd(“vintner”, “”) = 7

Tamanho z. Número total de caracteres a alinhar z. Triviais yd(“vintner”, “”) = 7 yd(“”, “writers”) = 7 yd(“vint”, “”) = 4 yd(“”, “write”) = 5 d(S, ) = d( , S) = |S| 9/6/2021 Ruy Luiz Milidiú 9

Progressivo d(“writ”, “vin”) = min emparelhado recuado avançado igual(‘t’, ‘n’) + d(“wri”, “vi”) d(“writ”,

Progressivo d(“writ”, “vin”) = min emparelhado recuado avançado igual(‘t’, ‘n’) + d(“wri”, “vi”) d(“writ”, “vin”) =min 1 + d(“writ”, “vi”) 1 + d(“wri”, “vin”) 9/6/2021 Ruy Luiz Milidiú 10

Programação dinâmica Vk(i) distância entre as cadeias X[1. . i] e Y[1. . k-i]

Programação dinâmica Vk(i) distância entre as cadeias X[1. . i] e Y[1. . k-i] ou V(i, j) distância entre X[1. . i] e Y[1. . j] z. V(i, 0) = i e V(0, j) = j z D(i, j) = última operação ótima para X[1. . i] e Y[1. . j] 9/6/2021 Ruy Luiz Milidiú 11

Programação dinâmica V(i, j) = min 9/6/2021 emparelhado recuado avançado igual(X[i], Y[j]) + V(i-1,

Programação dinâmica V(i, j) = min 9/6/2021 emparelhado recuado avançado igual(X[i], Y[j]) + V(i-1, j-1) 1 + V(i-1, j) Ruy Luiz Milidiú 12

Exemplo empates desconsiderados 9/6/2021 Ruy Luiz Milidiú 13

Exemplo empates desconsiderados 9/6/2021 Ruy Luiz Milidiú 13

Observações z. Sequenciamento PROGRESSIVO z. Estrutura da recursão é digrafo acíclico z 3 subproblemas

Observações z. Sequenciamento PROGRESSIVO z. Estrutura da recursão é digrafo acíclico z 3 subproblemas por alternativa de decisão z. Construção REGRESSIVA da solução 9/6/2021 Ruy Luiz Milidiú 14