1 / 36

Casamento de Padrões Um Estudo Empírico

Casamento de Padrões Um Estudo Empírico. Leonardo Teixeira Passos Thiago Henrique Braga. Sumário. Introdução Definição do Problema Algoritmos clássicos Resultados Experimentais Conclusões. Introdução. Casamento de padrões possui várias aplicações: Editores de texto

brody
Download Presentation

Casamento de Padrões Um Estudo Empírico

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Casamento de PadrõesUm Estudo Empírico Leonardo Teixeira Passos Thiago Henrique Braga

  2. Sumário • Introdução • Definição do Problema • Algoritmos clássicos • Resultados Experimentais • Conclusões

  3. Introdução • Casamento de padrões possui várias aplicações: • Editores de texto • Casamento de cadeias de DNA • Ampla literatura disponível • Vários algoritmos propostos • Melhorias de algoritmos anteriores

  4. c b a c b a b a b a c b T s = 3 c b a b a P Definição Formal • Texto T[1 .. n] e Padrão P[1 .. m] • Tamanhos n e m, onde m ≤ n • Encontrar todos os deslocamentos s onde T[s+1 .. s+m] = P[1 .. m], com 0 ≤ s ≤ n – m

  5. Algoritmos clássicos • Geralmente possuem duas fases: • Pré-processamento • Emparelhamento • Força Bruta • Rabin Karp • Knuth-Morris-Pratt • Boyer-Moore • Boyer-Moore-Horspool

  6. Força Bruta • Método simples de casamento. • Não é inteligente o bastante para aproveitar caracteres já casados, quando acha um caracter em P que não pode ser casado em T.

  7. Força Bruta • Desloca uma posição a cada nova iteração, independente de ter encontrado um casamento ou não. • O padrão desloca-se no texto como uma janela. • Complexidade: O(n2) .

  8. Força Bruta

  9. Rabin Karp • Algoritmo que utiliza o conceito de hash. • É uma melhora do algoritmo de Força Bruta.

  10. Rabin Karp • O algoritmo gera para o padrão P um código, digamos p, que é calculado uma única vez. • Exemplo:

  11. Rabin Karp • Para cada porção do texto T a ser casada com P, gera-se o código de T, digamos t, que é então comparado com p;

  12. Rabin Karp • No entanto, toda vez que se tenta casar uma nova porção de texto em T com P, o algoritmo utiliza o valor t’ da última iteração como parte do cálculo para o novo t.

  13. Rabin Karp • Exemplo:

  14. Rabin Karp • Retira-se a parte mais significativa do número, move o restante em um casa, e acrescenta o número referente ao novo caracter (parte menos significativa). • aba = t’ = 2562 * 97 + 256 * 98 + 97 • baa = t = t’ * 256 - 2563 + 97

  15. Rabin Karp • O cálculo de t e p poderá envolver números que consomem uma grande quantidade de bits. • Como consequência, utiliza-se o operador `mod` nos cálculos intermediários, sem afetar o resultado final (`mod` aplicado ao resultado final).

  16. Rabin Karp • O segundo operador da operação `mod` deverá ser um número primo grande, para evitar colisões.

  17. Rabin Karp • Ao utilizarmos o operador de módulo, quando obtermos p  q, então necessariamente garantimos que P[1 .. m]  T[s+1 .. s+m], mas o contrário não é verdadeiro.

  18. Rabin Karp • Assim, quando p = q é utilizada a comparação tal como o algoritmo de Força Bruta. • Conclui-se então, que o algoritmo de Rabin-Karp, no pior caso, também apresenta complexidade quadrática.

  19. c b a a b a b a b a c b T s = 3 a b a b a c P c b a a b a b a b a c b T s’ = s+2 a b a b a c P KMP: Knuth-Morris-Pratt • Idéia: usar uma função prefixo • informar como o padrão se compara com seus próprios deslocamentos

  20. KMP: Knuth-Morris-Pratt • Pré-processamento: calcular prefixo • Falha na tentativa de casamento: o algoritmo KMP consulta o vetor prefixo para evitar deslocamentos inválidos • Faz o deslocamento • Pré-processamento: O(m) • Emparelhamento: O(n)

  21. KMP: Knuth-Morris-Pratt 1 2 3 4 5 6 7 8 9 10 a a a b a a b a a c a ab a a b a a b a ab

  22. Boyer-Moore • Posiciona o padrão sobre o caracter mais a esquerda no texto • Busca da direita para a esquerda • Fase de pré-processamento: • Heurística-do-bom-sufixo • Heurística-do-mau-caracter • Falha na tentativa de casamento: escolhe-se o maior valor entre elas

  23. b b a a b b a a b b a a c c b a a b c a a c T T a b a b c a a c b b c c b a a b a a a a c c c c P P P P 1 1 ... ... i i i+1 i+2 i+1 m m Boyer-MooreHeurística-do-bom-sufixo • Possui 2 casos • Primeiro: • Segundo: s s’ = s + 3 s s’ = s + 4

  24. b a b d b a c b b a c T d d a a b b b b a a c c P P 1 ... i i+1 i+2 m Boyer-MooreHeurística-do-mau-caracter • Vetor BC[1 .. || ] • Cada posição do vetor armazena o índice da posição mais a direita de um caracter do padrão e -1 caso o caracter não ocorra no padrão s s’ = s+2

  25. Boyer-Moore 1 2 3 4 5 6 7 8 9 10 a a a b a a b a a c a a b a a b a a b a a b

  26. Boyer-Moore-Horspool • É uma simplificação sobre o algoritmo de Boyer-Moore, proposta por Horspool. • É mais eficiente, além consideravelmente mais simples de ser codificada.

  27. Boyer-Moore-Horspool • Fase de pré-processamento: calcular o vetor de deslocamento (s):P = aca S[‘a’] = 1 e S[‘c’] = 2 • Demais posições de S são inicializadas com 0.

  28. Boyer-Moore-Horspool • Deslocamento na fase de emparelhamento: a) deslocar o padrão para a posição onde se encontra o primeiro caracter (da direita para a esquerda) da porção corrente do texto T. Nessa posição i, existe um caracter c.

  29. Boyer-Moore-Horspool • Deslocamento na fase de emparelhamento: b) reiniciar a tentativa de casamento a partir da posicão i’: i’ = i - (S[T[c]] - 1)

  30. Boyer-Moore-Horspool

  31. Boyer-Moore-Horspool • Melhor caso: O(n/m). Para isto, considera-se S[T[c]] = 0 na fórmula i’ = i - (S[T[c]] - 1), o que garantirá o a reinicialização do processo de tentativa de casamento a partir posição i + 1. • Caso médio: O(n/m) • Pior caso: O(nm)

  32. Resultados Experimentais • Arquivo de teste: 1 Gb. • Padrão: bca • Texto: gerado aleatoriamente. Cada linha possui 1024 bytes.

  33. Resultados Experimentais • Força BrutaNº de comparações: 1.115.541.632Tempo: 4:07.02 • Rabin KarpNº de comparações: 1.073.487.466Tempo: 4:17.76

  34. Resultados Experimentais • KMPNº de comparações: 916.030.648Tempo: 4:04.54

  35. Resultados Experimentais • Boyer-MooreNº de comparações: 387.603.550Tempo: 3:51.40 • Boyer-Moore-HorspoolNº de comparações: 387.603.550Tempo: 3:35.41

  36. Conclusões • Escolha criteriosa do valor q no Rabin Karp  muitas colisões • Desempenho KMP superior ao Rabin Karp e Força Bruta • Deslocamentos mais eficientes:Boyer-Moore e Boyer-Moore-Horspool • Melhor tempo de execução:Boyer-Moore-Horspool

More Related