| Algoritmo :: Rabinkarp. rabin-karp streaming hash |
Baixe Agora |
Algoritmo :: Rabinkarp. Classificação e resumo
- Licença:
- Perl Artistic License
- Nome do editor:
- Norman Nunley, Jr
- Site do editor:
- http://search.cpan.org/~nnunley/
Algoritmo :: Rabinkarp. Tag
Algoritmo :: Rabinkarp. Descrição
Rabin-Karp Streaming Hash Algoritmo :: Rabinkarp é uma implementação do hash de streaming de Rabin e Karp, conforme descrito em "WinNowing: Algoritmos locais para impressão digital de documentos" por Schleimer, Wilkerson e Aiken. Após a sugestão do Schleimer, estou usando sua segunda equação: $ H ] = ($ H ] - $ c ** $ K) + $ c ) * $ khes resultados desse hash codifica informações sobre os próximos k valores no fluxo (Hensário K-Gram.) Isso significa para qualquer determinado fluxo de valores inteiros n (ou caracteres), você receberá valores de N - K + 1 Hash.Para melhores resultados, você desejará criar um gerador de código que filtra seus dados para remover todas as informações desnecessárias. Por exemplo, em um grande documento em inglês, você provavelmente deve remover todo o espaço branco, além de remover todos os maiúscula.synopsis My $ text = "A executar correr"; Meu $ Kgram = Algoritmo :: Rabinkarp-> Novo ($ Janela, $ Texto); ou meu $ Kgram2 = Algoritmo :: Rabinkarp-> Novo ($ Janela, $ FH); ou meu $ Kgram3 = Algoritmo :: Rabinkarp-> novo ($ janela, sub {... retorne $ num, $ posição;}); meu ($ hash, $ start_position, $ end_position) = $ kgram-> próximo; minhas @Values = $ kgram-> valores; Minhas ocorrências de%; # Um dicionário de todos os kgrams. Enquanto (meu ($ hash, @Pos) = @ {shift @Values}) {push @ {$ ocorrências {$ hash}}, \ @pos; } Meu $ Needle = Algoritmo :: Rabinkarp-> Novo (6, "Agulha"); Abra meu $ FH, 'novo (6, $ FH); meu $ Needle_hash = $ agulha-> em seguida; while (meu ($ hay_ashash, @Pos) = $ haystack-> next) {avisar "correspondência possível para 'agulha' em @pos" se $ Needle_Hash EQ $ Hay_Hash; } Requisitos: · Perl.
Algoritmo :: Rabinkarp. Software Relacionado