Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGiacobbe Di mauro Modificato 10 anni fa
1
Esercizio 3 Data una stringa P (pattern) di lunghezza m e una stringa T (testo) di lunghezza n, definite su di un alfabeto, modificare il programma dellesercizio 1 cercando di sfruttare in maniera efficiente la funzione LAST_OCCURRENCE calcolata per il pattern P (esercizio 2). Incrementare un contatore C ogni volta che viene effettuato un confronto tra caratteri di P e di T, e stampare C alla fine. Esempi di suggerimento Esempio 1: STEP DI ITERAZIONE al passo i T agtgctaaatgcggatagtaggtggatagcggggggatac P ataaaagg Esiste un mismatch tra il carattere t su T e il carattere a in posizione 5 su P. Dalla funzione LAST_OCCURRENCE di P ricavo che loccorrenza di t più a destra è in posizione 2 (in azzurro). Quindi è certo che tra t (in azzurro) e a di mismatch non esistono su P altri caratteri t. Di conseguenza posso addirittura shiftare P verso destra di 3 (=5-2) posizioni (e non di una sola, come avrebbe fatto lalgoritmo ingenuo dellesercizio 1) mismatch!
2
Esempio 1: SHIFT di P verso destra di 3 (=5-2) posizioni i=i+3 prima dello shift di 3 posizioni T agtgctaaatgcggatagtaggtggatagcggggggatac P ataaaagg i=i+3 T agtgctaaatgcggatagtaggtggatagcggggggatac P ataaaagg shift di 3 posizioni verso destra
3
Esempio 2: STEP DI ITERAZIONE al passo i T agtgctaaatgcggatagcacgtggatagcggggggatac P acaaaacg Esiste un mismatch tra il carattere c su T e il carattere a in posizione 5 su P. Dalla funzione LAST_OCCURRENCE di P ricavo che loccorrenza di c più a destra è in posizione 7 (in azzurro). Dal momento che c in azzurro sta a destra di a di mismatch, non sono in grado di affermare per certo se a sinistra di a esistono (e dove) altri caratteri c. In tale caso non posso fare altro che shiftare P verso destra di una sola posizione (come avrebbe fatto lalgoritmo ingenuo) se non voglio correre il rischio di perdere occorrenze di P su T. mismatch!
4
Esempio 3: STEP DI ITERAZIONE al passo i T agtgctaaatgcggatagtacgtggatagcggggggatac P agaaaacg Esiste un mismatch tra il carattere t su T e il carattere a in posizione 5 su P. Dalla funzione LAST_OCCURRENCE di P ricaverò che t non occorre in P (tale funzione restituirà infatti 0). In questo caso posso addirittura shiftare P verso destra di 5 (=5-0) posizioni senza correre il rischio di perdere occorrenze di P su T. mismatch!
5
Esempio 3: SHIFT di P verso destra di 5 (=5-0) posizioni i=i+5 prima dello shift di 5 posizioni T agtgctaaatgcggatagtacgtggatagcggggggatac P agaaaacg i=i+5 T agtgctaaatgcggatagtacgtggatagcggggggatac P agaaaacg shift di 5 posizioni verso destra
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.