Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos de
de Matching
Matching
Bibliografia
P=aba
T=bbabaxababay
Algoritmos
Algoritmos de
de Matching
Matching
Algoritmo Ingênuo :
P=aba aba
T=bbabaxababay
aba aba
P = bbccaebbcabd
sp8Sp
= 19=3
Algoritmo
Algoritmo Knuth-Morris-Pratt
Knuth-Morris-Pratt
(KMP)
(KMP)
Regra de translação de P:
P = bbccaebbcabd
spbSp =3
8 =9 2
Algoritmo
Algoritmo Knuth-Morris-Pratt
Knuth-Morris-Pratt
(KMP)
(KMP)
Cálculo dos spbi
x x
spbk k k+1
2) Se P(k+1) ≠ P(spbk +1) então:
Algoritmo
Algoritmo Knuth-Morris-Pratt
Knuth-Morris-Pratt
(KMP)
(KMP)
Cálculo dos spbi
x y x
spbk k k+1
Spbk+1
Algoritmo
Algoritmo Knuth-Morris-Pratt
Knuth-Morris-Pratt
(KMP)
(KMP)
Algoritmo para Cálculo dos spbi 1 234 5 6 789
P = abcxabcde
Spb1 = 0
for k=1 to n-1 k x v spb1 = 0
x = P(k+1) 0 spb2 = 0
1 b
v = spbk 2 c 0 spb3 = 0
while P(v+1) ≠ x and v ≠ 0 3 x 0 spb4 = 0
v = spbv 4 a 0 spb5 = 1
if P(v+1) = x 5 b 1 spb6 = 2
6 c 2
spbk+1 = v+1 spb7 = 3
7 c 3 0
else 8 d 0 spb8 = 0
spbk+1 = 0 spb9 = 0
O(n)
Algoritmo
Algoritmo Knuth-Morris-Pratt
Knuth-Morris-Pratt
(KMP)
(KMP)
1 234 5 6 789
Algoritmo para Cálculo dos spi P = abcxabcde
sp1 = 0 sp0 = 0
sp1 = 0 k v spb1 = 0 sp1 = 0
for k=2 to n spb2 = 0 sp2 = 0
2 0
v = spbk 3 0 spb3 = 0 sp3 = 0
if P(v+1) ≠ P(k+1) 4 0 spb4 = 0 sp4 = 0
spk = v 5 1 spb5 = 1 sp5 = 0
else 6 2 spb6 = 2 sp6 = 0
7 3 sp7 = 3
spk = spv spb7 = 3
8 0
9 0 spb8 = 0 sp8 = 0
spb9 = 0 sp9 = 0
Tempo do algoritmo KMP é O(n+m)
Algoritmos
Algoritmos de
de Matching
Matching
Múltiplos Padrões:
o t h e r struct keyword
2 p t h {
o e char edge;
a a
t t char *str;
t
a e struct keyword *children;
3 t r struct keyword *nv;
t int lpv;
o o };
o
Algoritmos
Algoritmos de
de Matching
Matching
o t h e r
p t h
o e
a a
t t
t
a e
3 t r
t
o o
o
O(m) comparações
T= x x p o t a t t o o x x
Trans: 8 -3 = 5 Erro em 8
Algoritmos
Algoritmos de
de Matching
Matching
Algumas observações:
x a b x a c 1
c
a
b
4
x
b
x
a
c a
c
c c
3 5 2
6
Obs: A fim de garantir a existência da árvore de sufixos é necessario
introduzir um caracter diferente dos demais no final de S.
Algoritmos
Algoritmos de
de Matching
Matching
Árvore
Árvore de
de Sufixos
Sufixos
1 2 3 4 5 6 P=xa
Exemplo: S = x a b x a c
x a b x a c 1
c
a
b
4
x
b
x
a
c a
c
c c
3 5 2
6
Algoritmos
Algoritmos de
de Matching
Matching
Árvore
Árvore de
de Sufixos
Sufixos
Construção da árvore de sufixos (algoritmo ingênuo)
S=x a b x a c
x a b x a c 1
c
a
b
4
b
x
x
a
c a
c
c c
O(m2)
3 5 2
6
Algoritmos
Algoritmos de
de Matching
Matching
Árvore
Árvore de
de Sufixos
Sufixos