IFT3295 Démonstration 16 septembre 2013 Algorithme Boyer-Moore- Horspool
IFT3295Démonstration
16 septembre 2013
Algorithme Boyer-Moore-Horspool
Boyer-Moore-Horspool
• Décalage en fonction du caractère du texte aligné au dernier caractère du mot
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
Boyer-Moore-Horspool
• Décalage en fonction du caractère du texte aligné au dernier caractère du mot
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
Boyer-Moore-Horspool
• Décalage en fonction du caractère du texte aligné au dernier caractère du mot
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
• Pré-traitement pour calculer les décalages en fonction du mot et de l'alphabet
Boyer-Moore-Horspool
• Pré-traitement :– Mot : aabcaab– Alphabet : {a, b, c}
caractère a b c
décalage
Boyer-Moore-Horspool
• Pré-traitement :– Mot : aabcaab– Alphabet : {a, b, c}
caractère a b c
décalage 1
Boyer-Moore-Horspool
• Pré-traitement :– Mot : aabcaab– Alphabet : {a, b, c}
caractère a b c
décalage 1 4
Boyer-Moore-Horspool
• Pré-traitement :– Mot : aabcaab– Alphabet : {a, b, c}
caractère a b c
décalage 1 4 3
Boyer-Moore-Horspool
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
caractère a b c
décalage 1 4 3
+ 4
Nombre d'occurrences = 0
Boyer-Moore-Horspool
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
caractère a b c
décalage 1 4 3
Nombre d'occurrences = 0
Boyer-Moore-Horspool
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
caractère a b c
décalage 1 4 3
Nombre d'occurrences = 1
Boyer-Moore-Horspool
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
caractère a b c
décalage 1 4 3
Nombre d'occurrences = 1
+ 4
Boyer-Moore-Horspool
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
caractère a b c
décalage 1 4 3
Nombre d'occurrences = 1
Boyer-Moore-Horspool
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
caractère a b c
décalage 1 4 3
Nombre d'occurrences = 1
+ 3
Boyer-Moore-Horspool
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
caractère a b c
décalage 1 4 3
Nombre d'occurrences = 1
Boyer-Moore-Horspool (2 car.)
• Généralisation à deux caractères
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
• Plus efficace lorsque l'alphabet est petit
car1 car2
Boyer-Moore-Horspool (2 car.)
• Pré-traitement pour 2 caractères :– Mot :
aabcaab (taille de 7)
76543210 (position droite -> gauche)– Alphabet : {a, b, c}
car2
car1a b c
a
b
c
Boyer-Moore-Horspool (2 car.)
• Pré-traitement pour 2 caractères :– Mot :
aabcaab (taille de 7)
76543210 (position droite/gauche)– Alphabet : {a, b, c}
car2
car1a b c
a 2
b
c
Boyer-Moore-Horspool (2 car.)
• Pré-traitement pour 2 caractères :– Mot :
aabcaab (taille de 7)
76543210 (position droite/gauche)– Alphabet : {a, b, c}
car2
car1a b c
a 2
b
c 3
Boyer-Moore-Horspool (2 car.)
• Pré-traitement pour 2 caractères :– Mot :
aabcaab (taille de 7)
76543210 (position droite/gauche)– Alphabet : {a, b, c}
car2
car1a b c
a 2
b 4
c 3
Boyer-Moore-Horspool (2 car.)
• Pré-traitement pour 2 caractères :– Mot :
aabcaab (taille de 7)
76543210 (position droite/gauche)– Alphabet : {a, b, c}
car2
car1a b c
a 2 5
b 4
c 3
Boyer-Moore-Horspool (2 car.)
• Pré-traitement pour 2 caractères :– Mot :
aabcaab (taille de 7)
76543210 (position droite/gauche)– Alphabet : {a, b, c}
car2
car1a b c
a 2 5
b 4
c 3
aa a déjà été vu
Boyer-Moore-Horspool (2 car.)
• Pré-traitement pour 2 caractères :– Mot :
aabcaab (taille de 7)
76543210 (position droite/gauche)– Alphabet : {a, b, c}
car2
car1a b c
a 2 5
b 7 4
c 3
Affecter 7 à toutes les occurrences non-vues dans la colonne a
Boyer-Moore-Horspool (2 car.)
• Pré-traitement pour 2 caractères :– Mot :
aabcaab (taille de 7)
76543210 (position droite/gauche)– Alphabet : {a, b, c}
car2
car1a b c
a 2 5 8
b 7 8 4
c 3 8 8• Valeur de taille du mot + 1 pour les occurrences non-
rencontrées
Boyer-Moore-Horspool (2 car.)
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
+ 5 – 1 = 4
Nombre d'occurrences = 0
car2
car1a b c
a 2 5 8
b 7 8 4
c 3 8 8
Boyer-Moore-Horspool (2 car.)
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
Nombre d'occurrences = 1
car2
car1a b c
a 2 5 8
b 7 8 4
c 3 8 8
Boyer-Moore-Horspool (2 car.)
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
Nombre d'occurrences = 1
car2
car1a b c
a 2 5 8
b 7 8 4
c 3 8 8
+ 5 – 1 = 4
Boyer-Moore-Horspool (2 car.)
a c b c a a b c a a b b b c c b c a a b
a a b c a a b
T
M
Nombre d'occurrences = 1
car2
car1a b c
a 2 5 8
b 7 8 4
c 3 8 8
+ 8 – 1 = 7
Boyer-Moore-Horspool (2 car.)
a c b c a a b c a a b b b c c b c a a b
a a b c a
T
M
Nombre d'occurrences = 1
car2
car1a b c
a 2 5 8
b 7 8 4
c 3 8 8
Fin
NOTE TP1
• Alphabet utilisé dans la séquence d'E. coli :
{A, C, G, T, R, Y, N, W, S, M, K, B}
Code Base
A Adénine
C Cytosine
G Guanine
T Thymine
R A ou G
Y C ou T
N A, C, G ou T
W A ou T
S G ou C
M A ou C
K G ou T
B C, G ou T