IFT3295 Démonstration 16 septembre 2013 Algorithme Boyer-Moore-Horspool.

Post on 04-Apr-2015

109 views 1 download

Transcript of 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