230 likes | 350 Views
Curs de Doctorat: Algorismes de cerca. Cerca exacta:. Només el text ----> Estructurar el text (suffix tree). Només el/s patró/ns ---> Estructurar el/els patró/ns. 1 patró ---> L’algorisme depèn de la llargada i | |. k patrons ---> L’algorisme depén del nombre k, la llargada i | |.
E N D
Curs de Doctorat: Algorismes de cerca • Cerca exacta: • Només el text ----> Estructurar el text (suffix tree) • Només el/s patró/ns ---> Estructurar el/els patró/ns • 1 patró ---> L’algorisme depèn de la llargada i || • k patrons ---> L’algorisme depén del nombre k, la llargada i || • Cerca aproximada: • l<w (llargada paraula) ---> Algorisme Myers • l>w (llargada paraula) ---> Programació dinàmica Algorismes de cerca: definició del problema (text,patró) depèn de què coneixem al principi: depèn de la llargada del patró
Alg. Cerca exacta d’un patró (text on-line) Algorismes més eficients (Navarro & Raffinot) BNDM : Backward Nondeterministic Dawg Matching | | BOM : Backward Oracle Matching 64 32 16 Horspool 8 BOM BNDM 4 Long. patró 2 w 2 4 8 16 32 64 128 256
Algorisme de Horspool • Com fa la comparació? Text : Patró : Compara sufixes • Com es determina la següent posició de la finestra? a Text : Patró : Salta fins a la primera aparició de la lletra “a” a partir del segon lloc: a a a a a a Es necessari fer un preprocés que determini el salt per a cada símbol.
Exemple algorisme de Horspool Suposem que el patró és ATGTA A 4 C 5 G 2 T 1 • La taula de salts seria: I la cerca sobre el text : G T A C T A G A G G A C G T A T G T A C T G ... A T G T A A T G T A A T G T A A T G T A A T G T A A T G T A A T G T A
Alg. Cerca exacta d’un patró (text on-line) Algorismes més eficients (Navarro & Raffinot) BNDM : Backward Nondeterministic Dawg Matching | | BOM : Backward Oracle Matching 64 32 16 Horspool 8 BOM BNDM 4 Long. patró 2 w 2 4 8 16 32 64 128 256
Algorisme BNDM • Com fa la comparació? Llegeix anotant sufixos de T que són factors de P Text : Patró : I ho anota de la forma D = 1 0 0 0 1 0 0 I pel següent símbol fa D = D<<1 & B(x) B(x): máscara del símbol següent x al patró P. Si fos B(x) = ( 0 0 1 1 0 0 0) D = (0 0 0 1 0 0 0) & (0 0 1 1 0 0 0 ) = (0 0 0 1 0 0 0 ) El tres ultims simbols de T apareixen a P a la posició indicada • Com es determina la següent posició de la finestra? Si surt un 1 a es fa coincidir el prefix de P amb el sufix de T Si no passa, es que cap prefix de P es sufix de T, llavors es salta tota la finestra.
Exemple algorisme BNDM B(A) = ( 1 0 0 0 1 ) B(C) = ( 0 0 0 0 0 ) B(G) = ( 0 0 1 0 0 ) B(T) = ( 0 1 0 1 0 ) • La màscara de bits per a cada símbol és: • I la cerca sobre el text : G T A C T A G A G G A C G T A T G T A C T G ... A T G T A A T G T A A T G T A A T G T A Suposem que el patró és ATGTA D0 = ( 1 1 1 1 1 ) D1 = ( 1 1 1 1 1 ) & ( 0 1 0 1 0 ) = ( 0 1 0 1 0 ) D2 = ( 1 0 1 0 1 ) & ( 0 0 0 0 0 ) = ( 0 0 0 0 0 ) D0 = ( 1 1 1 1 1 ) D1 = ( 1 1 1 1 1 ) & ( 0 0 1 0 0 ) = ( 0 0 1 0 0 ) D2 = ( 0 1 0 0 0 ) & ( 0 0 1 0 0 ) = ( 0 0 0 0 0 ) D0 = ( 1 1 1 1 1 ) D1 = ( 1 1 1 1 1 ) & ( 1 0 0 0 1 ) = ( 1 0 0 0 1 ) D2 = ( 0 0 0 1 0 ) & ( 0 1 0 1 0 ) = ( 0 0 0 1 0 ) D3 = ( 0 0 1 0 0 ) & ( 0 0 1 0 0) = ( 0 0 1 0 0 ) D4 = ( 0 1 0 0 0 ) & ( 0 0 0 0 0) = ( 0 0 0 0 0 )
Exemple algorisme BNDM B(A) = ( 1 0 0 0 1 ) B(C) = ( 0 0 0 0 0 ) B(G) = ( 0 0 1 0 0 ) B(T) = ( 0 1 0 1 0 ) • El patró és ATGTA • La màscara de bits per a cada símbol és: • I la cerca sobre el text continua: G T A C T A G A G G A C G T A T G T A C T G ... A T G T A A T G T A D0 = ( 1 1 1 1 1 ) D1 = ( 1 1 1 1 1 ) & ( 1 0 0 0 1 ) = ( 1 0 0 0 1 ) D2 = ( 0 0 0 1 0 ) & ( 0 1 0 1 0 ) = ( 0 0 0 1 0 ) D3 = ( 0 0 1 0 0 ) & ( 0 0 1 0 0 ) = ( 0 0 1 0 0 ) D4 = ( 0 1 0 0 0 ) & ( 0 1 0 1 0 ) = ( 0 1 0 0 0 ) D5 = ( 1 0 0 0 0 ) & ( 1 0 0 0 1 ) = ( 1 0 0 0 0 ) D6 = ( 0 0 0 0 0 ) & ( * * * * * ) = ( 0 0 0 0 0 ) Trobat!
Alg. Cerca exacta d’un patró (text on-line) Algorismes més eficients (Navarro & Raffinot) BNDM : Backward Nondeterministic Dawg Matching | | BOM : Backward Oracle Matching 64 32 16 Horspool 8 BOM BNDM 4 Long. patró 2 w 2 4 8 16 32 64 128 256
Algorisme BOM (Backward Oracle Matching) • Com fa la comparació? Text : Patró : Autòmata: Factor Oracle Comproba si el sufix és factor del patró • Com es determina la següent posició de la finestra? a • Si la a no s’ha trobat a • Si arriben a l’estat final de l’autòmat amb la a
Autòmata Factor Oracle: propietats G T A G T T A G T A G T A G T T A G T A L’estat reconeix tots els factors que acaben a la quarta lletra T que no eren reconeguts: GTAT, TAT, AT perque T ja ho era. Reconeix tots els factors de de les primeres 4 lletres Factor Oracle del mot G T A T G T A Tots els estats són finals ==> Reconeix tots els factors …. i més Hip: reconeix tots factors de GTA
Autòmata Factor Oracle: algorisme ? Algorisme: per a i=1 fins p fer Afegir transicions que reconeguin factors acabats a i;
Autòmata Factor Oracle: algorisme T T Que passa si el següent caràcter existeix?
Autòmata Factor Oracle: algorisme T T Que passa si el següent caràcter no existeix?
Autòmata Factor Oracle: exemple d’algorisme G T A G T T A G T A i reconeix mots que no són factors com GTGTA. Però, si no el reconeix ==> no és factor! Es l’estratègia de l’algorisme BOM
Algorisme BOM Compara sufixes Text : Patró : Autòmata invers a • Si la a no s’ha trobat • Si arriben a l’estat final de l’autòmat amb la a • Com fa la comparació? • Com es determina la següent posició de la finestra?
Autòmata Factor Oracle: exemple d’algorisme G T A G T T A G T A • I la cerca sobre el text : G T A C T A G A G G A T G T A G A T A T G A G G T G A... A T G T A T G A T G T A T G A T G T A T G • Com fa la comparació? • Es construeix l’autòmata del patró invers: Suposem que el patró és ATGTATG * * * * * A T G T A T G
Alg. Cerca exacta de molts patrons | | (5 mots) 8 Wu-Manber 4 SBOM Long. mínima 2 5 10 15 20 25 30 35 40 45 8 Wu-Manber (10 mots) 4 SBOM 2 5 10 15 20 25 30 35 40 45 Wu-Manber 8 (100 mots) 4 SBOM 2 5 10 15 20 25 30 35 40 45
Alg. Cerca exacta de molts patrons | | (5 mots) 8 Wu-Manber 4 SBOM Long. mínima 2 5 10 15 20 25 30 35 40 45 8 Wu-Manber (10 mots) 4 SBOM 2 5 10 15 20 25 30 35 40 45 (1000 mots) SBOM 8 (100 mots) 4 2 5 10 15 20 25 30 35 40 45
Autòmata Multi-Factor Oracle G T A G T T G T A G T A G T T A A G T A T A Tenim el Factor Oracle de GTATGTA Com serà el de GTATGT, TAATA
Autòmata Multi-Factor Oracle A A G T A G T T A A G T A T A Multi Factor Oracle de GTATGT, TAATA, TGTAA
Algorisme SBOM • Com fa la comparació? Compara sufixes Text : Patrons: Autòmata invers • Com es determina la següent posició de la finestra? a • Si la a no s’ha trobat • Si arriben a l’estat final de l’autòmat amb la a
Autòmata Factor Oracle: exemple d’algorisme G T A G T T A A G T A T A A A • I la cerca sobre el text : G T A C T A G A G G A T G T A G A T A T G A G G T G A... • Com fa la comparació? • Es construeix l’autòmata dels patrons inversos: TGTATG, ATAAT, AATGT * * * * * * * * * *