La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

UNIVERSITA DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 5 Algoritmi di.

Presentazioni simili


Presentazione sul tema: "UNIVERSITA DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 5 Algoritmi di."— Transcript della presentazione:

1 UNIVERSITA DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 5 Algoritmi di string matching esatto

2 2 Exact matching: il problema DATE DATE: una stringa T di lunghezza n (detta testo) e una stringa P di lunghezza m

3 3 Exact matching: il problema Algoritmo di exact matching P=aba T= bbabaxababay Esempio {3,7,9} NB: le occorrenze di P in T possono anche sovrapporsi (es. 7 e 9) NB: le occorrenze di P in T possono anche sovrapporsi (es. 7 e 9)

4 4 Exact matching: prime idee Algoritmo forza bruta ÀAllinea il primo carattere di P con il primo carattere di T ÁConfronta, da sinistra a destra, i caratteri corrispondenti di P e T fino a quando trovi un mismatch o raggiungi la fine di P ÂSe hai raggiunto la fine di P, restituisci la posizione del carattere di T che corrisponde al primo carattere di P ÃSposta P di un posto a destra ÄSe lultimo carattere di P va oltre la fine di T, termina lesecuzione; altrimenti ripeti da 2

5 5 Exact matching: prime idee Esempio T = xabxyabxyabxz P = abxyabxz xazxbaybxyabx T zxbabxya P ÀAllinea il primo carattere di P con il primo carattere di T abxyabxz ÁConfronta, da sinistra a destra, i caratteri corrispondenti di P e T fino a quando trovi un mismatch o raggiungi la fine di P ÃSposta P di un posto a destra azbxyabx ÁConfronta, da sinistra a destra, i caratteri corrispondenti di P e T fino a quando trovi un mismatch o raggiungi la fine di P ÃSposta P di un posto a destra zxabxyab ÁConfronta, da sinistra a destra, i caratteri corrispondenti di P e T fino a quando trovi un mismatch o raggiungi la fine di P ÃSposta P di un posto a destra... zxbabxyazxbaabxyzxbayabx ÁConfronta, da sinistra a destra, i caratteri corrispondenti di P e T fino a quando trovi un mismatch o raggiungi la fine di P ÂSe hai raggiunto la fine di P, restituisci la posizione del carattere di T che corrisponde al primo carattere di P => 6 ÃSposta P di un posto a destra xbayxab z ÄLultimo carattere di P va oltre la fine di T. Termina lesecuzione

6 6 Exact matching: prime idee Caratteristiche dellalgoritmo forza bruta Non è necessaria una fase di pre-processing Il pattern P viene sempre spostato di una posizione a destra La complessità in tempo è O(nm) NB: non sempre è necessario spostare P di una sola posizione. Come aumentare lo spostamento senza rischiare di perdere occorrenze? NB: non sempre è necessario spostare P di una sola posizione. Come aumentare lo spostamento senza rischiare di perdere occorrenze?

7 7 Exact matching: preprocessing Fase di pre-processing per imparare la struttura interna del pattern P o del testo T e RIDURRE IL TEMPO DI ESECUZIONE

8 8 Exact matching: preprocessing S = A A T G C A T T C G C T Def.: un suffisso S[i…|S|] di una stringa S è una sottostringa che inizia alla posizione i e termina alla posizione finale di S Esempio Def.: un prefisso S[1…i] di una stringa S è una sottostringa che inizia alla posizione 1 di S e termina alla posizione i Esempio

9 9 Exact matching: preprocessing q T gacgagagaagcgat P s agagaca Si supponga di essere nella seguente situazione con P in s+1 NB: allinterno del matching lungo q=5 esiste la sottostringa P[3..5] = aga che coincide con il prefisso P[1..3] NB: allinterno del matching lungo q=5 esiste la sottostringa P[3..5] = aga che coincide con il prefisso P[1..3] k

10 10 Exact matching: preprocessing k T gacgagagaagcgatagagaca Si supponga di essere nella seguente situazione con P in s E evidente che conviene spostare P in s+1 = s+(q-k)+1 NB: allinterno del matching lungo 5 esiste la sottostringa P[3..5]=aga che coincide con il prefisso P[1..3] NB: allinterno del matching lungo 5 esiste la sottostringa P[3..5]=aga che coincide con il prefisso P[1..3] NB: si è così sicuri che esiste un matching iniziale di lunghezza k=3 per il prefisso P[1..3] NB: si è così sicuri che esiste un matching iniziale di lunghezza k=3 per il prefisso P[1..3] P s sq-k

11 11 Exact matching: preprocessing Intuitivamente... Dato che il prefisso P[1...q] coincide con la sottostringa T[s+1…s+q], ci si chiede quale sia il minimo spostamento s>s tale che: P[1...k] = T[s'+1…s'+k] Ovviamente s = s+q-k NB: il confronto dei primi k caratteri di P è superfluo

12 12 1 m q Exact matching: preprocessing Formalmente... Dato un pattern P[1, …, m], si calcola la sua funzione prefisso NB: [q] è la lunghezza del più lungo prefisso di P che è anche suffisso di P[1..q] NB: [q] è la lunghezza del più lungo prefisso di P che è anche suffisso di P[1..q] : {1,2,...,m} {0,1,...,m-1} [q] = max{k: k

13 13 Exact matching: preprocessing Algoritmo per il calcolo della funzione prefisso begin m:=length(P); (1):=1; k:=0; for q:=2 to m do begin while P[k+1] P[q] do k:= [k]; if P[k+1]=P[q] then k:=k+1; [q]:=k; end return ; end

14 14 Exact matching: preprocessing Esempio di funzione prefisso per un pattern P P[q] gacgagagaagcgat [q] a10120 q

15 begin n:= length(T); m:=length(P); := precomputed prefix function of P; q:=0; for i:=1 to n do begin while q>0 and P[q+1] T[i] then q:= [q]; if P[q+1]=T[i] then q:=q+1; if q=m then print pattern in i-m+1 ; q:= [q]; end Algoritmo di Knuth-Morris-Pratt Numero di matches Scansione da sx a dx Il prossimo carattere è diverso Il prossimo carattere è uguale Trovata occorrenza di P Cerca nuova occorrenza

16 16 Caratteristiche dellalgoritmo KMP E suddiviso in due fasi: pre-processing + ricerca effettiva Sposta in genere il pattern P di più posizioni a destra La complessità in tempo della fase di pre-processing è O(m) La complessità in tempo della fase di ricerca è O(n) Algoritmo di Knuth-Morris-Pratt Complessità algoritmo K-M-P: O(m+n)

17 17 Algoritmo di Boyer-Moore Idee generali Il confronto tra il pattern e il testo avviene da destra a sinistra Il numero dei confronti viene ridotto usando due euristiche ê euristica del carattere discordante (bad character rule) ê euristica del buon suffisso (good suffix rule) NB: quando pattern e testo non coincidono si sceglie il massimo tra gli spostamenti proposti dalle due euristiche NB: quando pattern e testo non coincidono si sceglie il massimo tra gli spostamenti proposti dalle due euristiche

18 18 T gacgagagaagcgat P s agagaca Si supponga di essere nella seguente situazione con P in s NB: il carattere P[4] coincide con il carattere T[s+7] NB: il carattere P[4] coincide con il carattere T[s+7] E evidente che conviene spostare P in s+1 = s+1+j-k k j Algoritmo di Boyer-Moore

19 19 T gacgagagaagcgat P s agagaca E evidente che conviene spostare P in s+1 = s+1+j- k k Algoritmo di Boyer-Moore NB: il carattere P[4] coincide con il carattere T[s+7] NB: il carattere P[4] coincide con il carattere T[s+7]

20 20 Intuitivamente... Dato che esiste un j (1 j m) per cui P[j] T[s+j], trovare il massimo k (1 k m), se esiste, tale che: P[k] = T[s+j] e spostare P in s+1 tale che Algoritmo di Boyer-Moore s'+k = s+j

21 21 Formalmente... Dato un pattern P, si trova la funzione carattere discordante : NB: (i) è li-esimo simbolo dellalfabeto :{ 1, 2,..., | | } {1,2,...,m} [ i ] = max{k: 1 k m e P[k] = i } Algoritmo di Boyer-Moore

22 22 Algoritmo di Boyer-Moore Algoritmo per il calcolo della funzione carattere discordante begin m:=length(P); foreach in do [ ]:=0; for j:=1 to m do [P[j]]:=j; return ; end Si verificano 3 casi...

23 23 Algoritmo di Boyer-Moore Euristica del carattere discordante CASO 1: il carattere discordante non appare nel pattern P T gacgagagaagcgat P s atataca g

24 24 Algoritmo di Boyer-Moore Euristica del carattere discordante CASO 1: il carattere discordante non appare nel pattern P T gacgagagaagcgat P s+6 atataca lo spostamento è tale da allineare il primo carattere di P con il carattere di T successivo al carattere discordante

25 25 Algoritmo di Boyer-Moore Euristica del carattere discordante CASO 2: loccorrenza più a destra in P del carattere discordante è in una posizione k minore dellindice j che corrisponde al carattere di P allineato con il carattere discordante T gacgagagaagcgat P s atgtaca g g

26 26 Algoritmo di Boyer-Moore Euristica del carattere discordante CASO 2: loccorrenza più a destra in P del carattere discordante è in una posizione k minore dellindice j che corrisponde al carattere di P allineato con il carattere discordante T gacgagagaagcgatg P s+3 atgtacag lo spostamento è tale da allineare P[k] con il carattere discordante in T

27 27 Algoritmo di Boyer-Moore Euristica del carattere discordante CASO 3: loccorrenza più a destra in P del carattere discordante è in una posizione k maggiore dellindice j che corrisponde al carattere di P allineato con il carattere discordante T gacgaggcgagcgat P s atgtacg g g

28 28 Algoritmo di Boyer-Moore Euristica del carattere discordante CASO 3: loccorrenza più a destra in P del carattere discordante è in una posizione k maggiore dellindice j che corrisponde al carattere di P allineato con il carattere discordante T gacgaggcgagcgat P s+1 atgtacg g g si può solo effettuare lo spostamento di un posto a destra

29 29 T gacgagacacgcgat P s aacgacg Si supponga di essere nella seguente situazione con P in s NB: la sottostringa P[2..5] coincide il suffisso P[5..7] e quindi con la sottostringa T[s+5..s+7] NB: la sottostringa P[2..5] coincide il suffisso P[5..7] e quindi con la sottostringa T[s+5..s+7] E evidente che conviene spostare P in s j Algoritmo di Boyer-Moore k

30 30 T gacgagacacgcgat P s aacgacg Si supponga di essere nella seguente situazione con P in s E evidente che conviene spostare P in s Algoritmo di Boyer-Moore k NB: la sottostringa P[2..5] coincide il suffisso P[5..7] e quindi con la sottostringa T[s+5..s+7] NB: la sottostringa P[2..5] coincide il suffisso P[5..7] e quindi con la sottostringa T[s+5..s+7] NB: si è così sicuri che esiste un matching per la sottostringa P[2..5] NB: si è così sicuri che esiste un matching per la sottostringa P[2..5]

31 31 Algoritmo di Boyer-Moore Intuitivamente... Dato che il suffisso P[j+1, m] coincide con la sottostringa T[s+j+1, s+m], occorre trovare, se esiste,la posizione k

32 32 Algoritmo di Boyer-Moore Formalmente... Dato un pattern P, si trova la funzione suffisso : : {0,1,...,m-1} {0,1,...,m-1} [j] = max{k: k

33 33 Algoritmo di Boyer-Moore Algoritmo per il calcolo della funzione suffisso begin m:=length(P); P :=inverso(P); :=funzione prefisso di P; //come KMP for j:=0 to m do [j]:=m- [m]; for l:=1 to m do begin j:=m- [l]; if [j] > l - [l] then [j]:=l- [l]; end return end

34 34 Algoritmo di Boyer-Moore Euristica del buon suffisso CASO 1: k non esiste êsi sposta P fino a far coincidere un suo prefisso con un suffisso di T[s+j+1..s+m], o di m passi se nessun prefisso di P è suffisso di T[s+j+1..s+m] CASO 2: k esiste êsi sposta P fino del numero minimo di passi per far coincidere un suo prefisso proprio con un suffisso delloccorrenza di P in T, o di m passi se questo non esiste

35 35 Algoritmo di Boyer-Moore Euristica del buon suffisso + Euristica del carattere discordante (esempio) T gacgagacacgcgat P s aacgacg leuristica del carattere discordante genererebbe uno spostamento in s+1 c c

36 36 Algoritmo di Boyer-Moore Euristica del buon suffisso + Euristica del carattere discordante (esempio) T gacgagacacgcgat leuristica del carattere discordante genererebbe uno spostamento in s+1 P s+1 aacgacgc c

37 37 Algoritmo di Boyer-Moore Euristica del buon suffisso + Euristica del carattere discordante (esempio) T gacgagacacgcgat P s aacgacg leuristica del buon suffissso genererebbe uno spostamento in s+4

38 38 Algoritmo di Boyer-Moore Euristica del buon suffisso + Euristica del carattere discordante (esempio) T gacgagacacgcgat leuristica del buon suffissso genererebbe uno spostamento in s+4 P s+4 aacgacg leuristica del buon suffissso genererebbe uno spostamento in s+4 che risulta essere lo spostamento da effettuare

39 39 Algoritmo di Boyer-Moore n:=length(T); m:=length(P); :=BadCharacterRule(P); :=GoodSuffixRule(P); s:=0; while s n-m do begin j:=m; while j > 0 and P[j] = T[s+j] do j:=j-1; if j = 0 then stampa( pattern in posizione s+1 ); s:=s+ [0]; else s:=s+max( [j], j- [T[s+j]]); end /*Pre-processing*/ /*Scansione da destra*/ /*Proposta euristiche*/

40 40 Exact Matching: algoritmo di Boyer- Moore faisscnrntsilcrshbs acminiulcnlc acminiulcnlc s s + 4 Buon suffisso Car. discordante... s non valido proposta del car. discordante clncluinimca s + 3 proposta del buon suffisso Proposta vincente : carattere discordante

41 41 Caratteristiche dellalgoritmo BM E suddiviso in due parti: pre-processing + ricerca effettiva Sposta in genere il pattern P di più posizioni a destra La fase di pre-processing è basata su due euristiche Funziona bene se il pattern P è relativamente lungo e se lalfabeto | | è ragionevolmente grande Algoritmo di Boyer-Moore

42 42 Caratteristiche dellalgoritmo BM La complessità in tempo della fase di pre-processing è O(| |+m)+O(m)=O(| |+m) La complessità in tempo della fase di ricerca è O(n-m+1)m=O(nm) La complessità in tempo di BM è O(nm) Algoritmo di Boyer-Moore NB: nella pratica è più efficiente


Scaricare ppt "UNIVERSITA DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA Corso di BIOINFORMATICA: TECNICHE DI BASE Prof. Giancarlo Mauri Lezione 5 Algoritmi di."

Presentazioni simili


Annunci Google