Your SlideShare is downloading. ×
Algoritmo de Rabin-Karp
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Algoritmo de Rabin-Karp

712
views

Published on

Apresentação sobre Algoritmo de Rabin-Karp para busca de string, Apresentação realizada para a matéria de Projeto de Analise de Algorítimos da Universidade de Vila Velha. Alunos: Lorran Pegoretti e …

Apresentação sobre Algoritmo de Rabin-Karp para busca de string, Apresentação realizada para a matéria de Projeto de Analise de Algorítimos da Universidade de Vila Velha. Alunos: Lorran Pegoretti e Matheus Lani Regattieri Arrais.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
712
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Algoritmo de Rabin-KarpLORRAN PEGORETTIMATHEUS LANI REGATTIERI ARRAISTRABALHO REALIZADO PARA AVALIAÇÃO NA DISCIPLINA DE PROJETO E ANÁLISE DEALGORITMOS, DO CURSO DE CIÊNCIA DA COMPUTAÇÃO, TURNO MATUTINO, DAUNIVERSIDADE DE VILA VELHA (UVV), MINISTRADA PELO PROFESSOR  ALESSANDRO BERTOLANI.2013
  • 2. Tópicos Abordados Descrição do Problema Original Descrição do Algoritmo Rabin-Karp Descrição de Estratégia Pseudocódigo Funcionamento do Algoritmo Identificação dos conceitos estratégicos Complexidade Exemplos Conclusões Trabalho Similares/Futuros Referências
  • 3. Descrição do Problema OriginalBusca por padrão de Strings O problema consiste em dado o texto T e o padrão P encontrartodas as ocorrências de P dentro de T. Todo s tal que T[s + 1…s + m] = P [1...m], onde s é o índice de cadaocorrência e m é o tamanho do padrão P. Busca em um texto dinâmico através de um algoritmo aquele quenão se tem informações prévias sobre ele. Existem cinco algoritmos: Força Bruta, Rabin-Karp, busca porAutômato, Knuth-Morris-Pratt e Boyer-Moore.
  • 4. Descrição do Algoritmo Rabin-Karp Trata cada substring de tamanho M do texto como uma tabela dedispersão (hash). Padrão é encontrado quando a chave da substring coincide com a dopadrão. Com tabela virtual: tamanho elevado reduz probabilidade de falsasescolhas. Evolução do Força Bruta, ao invés de comparar a janela com o padrãocaracter a caracter, é proposto usar uma comparação numérica entreos restos da divisão por um mesmo inteiro da janela e do padrão.
  • 5. Descrição do Algoritmo No Força-Bruta a cada deslocamento pode acabar fazendo muitascomparações antes de descobrir que uma janela não é umaocorrência, no Rabin-Karp ele tenta evitar a comparação caractera caracter das janelas que não são ocorrências. Quando o valor numérico da janela e do padrão forem diferentes,necessariamente o conteúdo da janela e do padrão tambémdevem ser diferentes. Notação utilizada: n: numero de caracteres do texto m: numero de caracteres da palavra d: cardinalidade do alfabeto ∑ q: numero primo, como: 16.647.133 T: string do texto P: string da palavra
  • 6. Descrição da Estratégia Ideia de Programação Dinâmica e Força-Bruta O algoritmo de Rabin-Karp usa a ideia de “Impressão digital” Em aplicações envolvendo objetos longos, como por exemplo,longas cadeias de caracteres, pode-se representar tais objetos por“impressões digitais” curtas. Uma impressão digital pode ser umvalor numérico atribuído a cada objeto por uma função deespalhamento, por exemplo. O importante é que dois objetosdistintos tenham pouca chance de ter a mesma impressão digital,de maneira que, para decidir se dois tais objetos são iguais,possamos comparar não os objetos, mas suas impressões digitais
  • 7. Objetivo Através de técnicas hashing processar uma função de assinaturade cada substring de m-caracteres do texto e checar se é igual àassinatura da palavra procurada. Função: h(k) = k mod q, onde q é um numero primo grande Método: baseado no processamento da função para a posição i dandoo valor para a posição i – 1. Usa-se um valor elevado de q para evitarcolisões aleatórias. Busca-se diretamente fazer uma comparação entrea palavra e a substring
  • 8. PseudocódigoRABIN-KARP-MATCHER (T, P, d, q)(1) n  tamanho [T];(2) m  tamanho [P];(3) h  dm-1mod q;(4) p  0;(5) t0  0(6) for i  1 to m(7) do p  (dp + P[i]) mod q;(8) t0  (dt0 + T[i]) mod q;(9) for s  0 to n - m(10) do if p = ts(11) then if P[1..m] = T[s + 1..s + m](12) then “Encontrou a palavra”;(13) if s < n – m(14) then ts+1  (d(ts – T[s + 1]h) + T[s + m + 1]) mod q;
  • 9. Funcionamento do Algoritmo Linhas[1-5]: inicialização das variáveis. É importante ressaltar que aimplementação da função hash é arbitraria; Linhas [6-8]: iteração com índice relacionado à cardinalidade da palavra.O bloco inicializa o hash(p) da palavra e do texto, hash(t); Linhas [9-14]: iteração de comparação; na linha 10 em caso dacomparação ser valida tem a possibilidade da substring encontrada ser aprocurada. Observa-se que esta linha apresenta o caráter probabilísticodo algoritmo. Uma comparação extra é realizada para confirmar oresultado; não comparando a hash como na anterior, mas os caracteresda substring com a palavra. Em caso negativo da comparação, temos um novo valor de hash(t) paraa substring, realizando a iteração ate encontrar a palavra(s) ou se esgotaro texto.
  • 10. Identificação dos conceitosestratégicos
  • 11. Complexidade Pior Caso: é O((n – m + 1)m), podendo ser reduzida a O(nm), estecaso ocorreria quando o numero de colisões fosse elevado, o queobrigaria o algoritmo a realizar um maior numero de comparações eoperações para se obter um novo valor de hash(t). Nos casos médio e melhor: este algoritmo trabalha em O(m + n). Aprova para estes casos é complicada, devido principalmente aocaráter probabilístico deste algoritmo, pode-se obter demonstraçãoem [Cor97]. Apesar de ser probabilístico este algoritmo não se apresenta eficientena busca de textos que estejam em constante mudança, já paratextos que não são modificados constantemente ele poderáapresentar um desempenho melhor devido ao aproveitamento databela hash, para encontrar estas palavras.
  • 12. Exemplo
  • 13. Exemplo
  • 14. Exemplo Ao padrão P = 31415 corresponde o valor decimal p = 31.415 Seja T = 123141567, então: T[1..5] = 12314 e t0 = 12314 T[2..6] = 23141 e t1 = 23141 T[3..7] = 31415 e t2 = 31415 T[4..8] = 14156 e t3 = 14156 T[5..9] = 41567 e t4 = 41567
  • 15. Conclusões Tenta diminuir o numero de comparações através do calculo de um hash da palavraprocurada e da substring, porem através deste procedimento ele se torna probabilístico Os cálculos de p e t0 gastam tempo O(m) Os cálculos de t1, ..., tn-m mais a eventual comparação por “força-bruta”, gastam tempoO((n - m)m) Numero máximo de deslocamentos s válidos é n – m +1 Tempo total do algoritmo de Rabin-Karp é O(nm) Na prática, o algoritmo tem bom desempenho Ele é válido para qualquer alfabeto, bastando apenas interpretar cada caracterecomo um dígito
  • 16. Trabalhos Similares/Futuros Knuth-Morris-Pratt: considerado o algoritmo de “força bruta”, quandoocorre uma diferença entre T[i] e P[j], evitar comparaçõesredundantes. Função de falha onde o pré-processamento em Pdetermina se seus prefixos aparecem como subsequência dele mesmo,será definido também como o tamanho o maior prefixo de P[0..k] queé sufixo de P[1..k]. É pré-calculado apenas o que pode ser reaproveitado dacomparação anterior, independente do próximo caracter . Boyer-Moore: baseia-se na alta probabilidade de encontrar diferençasem alfabetos grandes, por isso, P é comparado com T de trás parafrente, quando se encontra uma diferença em T[i], o padrão P dará umsalto à frente, considerando-se as comparações já realizadas
  • 17. ComparaçõesFoi usado linguagem Java, S.O Ubuntu 12.04, notebook Core2Duocom 4Gb de memória.Os resultados apresentados abaixo são correspondentes à pesquisada palavra ’Capitu’ pelo livro ’Dom Casmurro’ de Machado de Assis.A cópia utilizada possuí 371.457caracteres enquanto o padrão possui6 caracteres, há 335 ocorrências no texto.Forca Bruta Tempo médio total: 6,4 ms Número de comparações na busca: 745,399 Número de comparações total: 745,399Rabin-Karp Tempo médio total: 6,8 ms Número de comparações na busca: 374,405 Número de comparações total: 374,405
  • 18. Comparações KMP Tempo médio total: 5,86 ms Número de comparações na busca: 745,409 Número de comparações total: 745,414 Boyer Moore Tempo médio total: 3,2 ms Número de comparações na busca: 142,929 Número de comparações total: 142,939
  • 19. Referências CORMEN, T., Leiserson, C., e Rivest, R. 1997. “Introduction toAlgortihms”, em The Rabin-Karp algorithm, pp. 857-883. BAEZA-YATES, R., Frakes, W. 1992. “Information Retrieval DataStrucures & Algorithms” em String Searching Algorithms,pp. 219-237. KNUTH, D. E. The Art of Computer Programming. Massachusetts:Addison-Wesley Longman, 1997. v. 1 e 2. ZIVIANI, N. Projeto de Algoritmos - Com Implementações emPASCAL e C. São Paulo: Editora Pioneira, 1999.