ift3295 démonstration 16 septembre 2013 algorithme boyer-moore-horspool
Embed Size (px)
TRANSCRIPT

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