Busca em texto com o método de Boyer Moore
Publicado por Danilo Azevedo em 23/07/2014
[ Hits: 6.213 ]
1 2 3 4 5 ... 35
String: W H I C H - F I N A L L Y - H A L T S . - - A T - T H A T - P O I N T
1 2 3 4 5 6 7
Padrão: A T - T H A T
Fórmulas (usando o padrão):
-3 -2 -1 0 1 2 3 4 5 6 7
$ $ $ $ A T - T H A T
1
Calcular o delta2(6): procurar o sufixo de A, que não tenha A como prefixo.
-3 -2 -1 0 1 2 3 4 5 6 7
$ $ $ $ A T - T H A T
4 1
Calcular o delta2(5): procurar o sufixo de H, que não tenha tenha H como prefixo.
-3 -2 -1 0 1 2 3 4 5 6 7
$ $ $ $ A T - T H A T
7 4 1
Calcular o delta2(4): procurar sufixo de T, que não tenha T como prefixo.
-3 -2 -1 0 1 2 3 4 5 6 7
$ $ $ $ A T - T H A T
8 7 4 1
Calcular o delta2(3): ...
-3 -2 -1 0 1 2 3 4 5 6 7
$ $ $ $ A T - T H A T
T H A T
E portanto, o T H A T no índice -1
-3 -2 -1 0 1 2 3 4 5 6 7
$ $ $ $ A T - T H A T
9 8 7 4 1
Calcular o delta2(2) e delta2(1): dá trabalho.
-3 -2 -1 0 1 2 3 4 5 6 7
$ $ $ $ A T - T H A T
11 10 9 8 7 4 1
Utilizando delta1 e delta2 para achar o padrão:
1 2 3 4 5 ... 35 W H I C H - F I N A L L Y - H A L T S . - - A T - T H A T - P O I N T A T - T H A TF não ocorre no padrão, logo, delta1(F) = 7
1 2 3 4 5 ... 35
W H I C H - F I N A L L Y - H A L T S . - - A T - T H A T - P O I N T
A T - T H A T
A T - T H A T
Os caracteres não batem (não utiliza delta2), utilizamos o delta1 do caractere encontrado, delta1(-) = 4:
1 2 3 4 5 ... 35
W H I C H - F I N A L L Y - H A L T S . - - A T - T H A T - P O I N T
A T - T H A T
A T - T H A T
A T - T H A T
|
Os caracteres batem (T e T), utilizamos o máximo entre delta1 e delta2. o sufixo é o T (paramos no A)
1 2 3 4 5 ... 35
W H I C H - F I N A L L Y - H A L T S . - - A T - T H A T - P O I N T
A T - T H A T
A T - T H A T
A T - T H A T
A T - T H A T
|
Os caracteres batem até o caractere A, logo, utilizamos o delta2 que tem sufixo A T (o delta2(5)= 7).
1 2 3 4 5 ... 35
W H I C H - F I N A L L Y - H A L T S . - - A T - T H A T - P O I N T
A T - T H A T
A T - T H A T
A T - T H A T
A T - T H A T
A T - T H A T
Listar o modelo e o serial number da máquina no Linux
Endian 2.4 - Adicionando usuário para visualizar relatórios do Sarg
Para iniciantes que ainda precisam de um por quê migrar para o Linux
Apostilas gratuitas de OpenOffice.org, Gantt Project, Thunderbird, Firefox e Gimp
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Pergunta: Meu teclado não está respondendo direito como e consertar? (0)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)
Secure boot, artigo interessante, nada técnico. (5)









