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

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

Distância Mínima de Edição Profa. Sandra de Amo Bacharelado em Ciência da Computação - UFU.

Apresentações semelhantes


Apresentação em tema: "Distância Mínima de Edição Profa. Sandra de Amo Bacharelado em Ciência da Computação - UFU."— Transcrição da apresentação:

1 Distância Mínima de Edição Profa. Sandra de Amo Bacharelado em Ciência da Computação - UFU

2 Problema de otimização a resolver Dadas duas palavras w1 e w2 determinar o quão próximas elas são. Que medida utilizar para determinar a distância entre duas palavras ? Medida natural e intuitiva: o custo de alinhar as palavras, isto é, o custo de colocar uma sobre a outra, combinando letra a letra. Exemplo: w1 = SNOWY w2 = SUNNY Qual o custo de transformar w1 em w2 ? Existem diversas maneiras de fazer isto, cada uma tendo um custo. Precisamos encontrar a maneira com custo mínimo

3 Exemplos de transformações e seus respectivos custos S _ N O W Y S U N N _ Y = match !! = inserção (I) = deleção (D) = substituição (S) = 1 Custo = 3 = match !! = inserção (I) = deleção (D) = substituição (S) = 2 = 1 _ S N O W _ Y S U N _ _ N Y _ S N O W _ Y S U N _ _ N Y Exemplos de transformações e seus respectivos custos _ S N O W _ Y S U N _ _ N Y Custo = 5

4 Distância de Edição Dist_edit (w1,w2) = menor custo de se transformar w1 em w2 Método “força bruta” para determinar Dist_edit –Todo problema de otimização tem solução do tipo “força bruta” Considera-se todas as possiveis maneiras de se transformar w1 em w2 Calcula-se o custo de cada maneira Considera-se o menor custo Solução eficiente: usando Programação Dinâmica !

5 Aplicações Como corrigir automaticamente uma palavra w mal escrita ? –Verifica-se em um dicionário se a palavra w existe. –Caso não exista, constrói-se uma lista de palavras do dicionário que estão próximas (no dicionário) = [ w1, w2,..., wn] –Calcula-se para cada wi, dist_edit(w, wi) –Sugere-se o wi com menor dist_edit(w,wi) Exemplo: w = graf Palavras próximas: grafo, girafa, garra, grafite Qual a mais próxima ? Como determinar se um determinado texto w1 é plágio de um outro texto w2 ? –Se dist_edit(w1,w2) < K, onde K é dado

6 Aplicações Biologia Computacional: –Como alinhar duas sequências de nucleotídeos ? Resultado do alinhamento

7 Problema de otimização a resolver Problema P: Input: dois strings x = (x1,...,xn), y = (y1,...,ym) Output: x’ = (x’1,...,x’k), y’ = (y’1,...,y’k), k ≥ m, tal que custo(x’,y’) é minimo (= dist_edit(x,y) ) x’1x’2x’3x’k y’1y’2y’3y’k Custo(x’,y’) = Σ i=1 k custo(x’i,y’i) Custo(xi,yi) = 1 se x’i =‘-’ e y’i = yp (inserção de caracter yp) ou x’i = xp e y’i = ‘-’ (remoção de carater xp) ou x’i  y’i e ambos  ‘-’ Custo(xi,yi) = 0 se x’i = y’i

8 Como projetar o algoritmo de PD para resolver o problema P ? Problema P E(n,m) = custo mínimo do alinhamento Subproblemas E(i,j), com i ≤ n, j ≤ m Como ordenar os subproblemas ? Como resolver completamente cada subproblema, em ordem crescente, executando uma função que envolve os resultados dos subproblemas já resolvidos anteriormente ?

9 EXPONENTIAL 01234567891011 POLYNOMIAL 012345678910 E(11,10) = custo minimo de um alinhamento

10 EXPONENTIAL 01234567891011 POLYNOMIAL 012345678910 3 possibilidades de alinhamento 1)

11 EXPONENTIAL 01234567891011 POLYNOMIA L 012345678910 3 possibilidades de alinhamento 1) Custo = diff(x[11], y[10] ) + + CUSTO de alinhar prefixos (EXPONENTIA, POLYNOMIA) = = 0 + E(10, 9)

12 EXPONENTIAL 01234567891011 POLYNOMIAL 012345678910 3 possibilidades de alinhamento 2) -

13 EXPONENTIAL 01234567891011 POLYNOMIAL 012345678910 3 possibilidades de alinhamento 2) - Custo = 1 + CUSTO de alinhar prefixos (EXPONENTIA, POLYNOMIAL) = = 1 + E(10, 10)

14 EXPONENTIAL 01234567891011 POLYNOMIAL 012345678910 3 possibilidades de alinhamento 3) -

15 EXPONENTIAL 01234567891011 POLYNOMIA 012345678910 3 possibilidades de alinhamento 3) - Custo = 1 + CUSTO de alinhar prefixos (EXPONENTIAL, POLYNOMIA) = = 1 + E(11, 9) L

16 Fórmula E(m,n) = min {diff(x[m],y[n]) + E(m-1,n-1), 1 + E(m,n-1), 1+ E(m-1,n) } primeiro alinh. seg. alinh. terc. alinh. Em geral: E(i,j) = min { diff(x[i],y[j]) + E(i-1,i-1), 1 + E(i,j-1), 1+ E(i-1,j) }

17 Em que ordem resolver os subproblemas ?

18 Soluções dos subproblemas

19 Algoritmo e sua complexidade Complexidade = O(m) + O(n) + O(m.n) = O(m.n)

20 Um alinhamento com custo mínimo = 6 EXPONENTIAL POLYNOMIAL - -- Como obter todos os alinhamentos com custo minimo só olhando para o quadro dos custos ?


Carregar ppt "Distância Mínima de Edição Profa. Sandra de Amo Bacharelado em Ciência da Computação - UFU."

Apresentações semelhantes


Anúncios Google