Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi

Slides:



Advertisements
Presentazioni simili
UNIVERSITA’ DI MILANO-BICOCCA LAUREA MAGISTRALE IN BIOINFORMATICA
Advertisements

Esercizio 4 Data una stringa P di lunghezza m e definita sullalfabeto, scrivere un programma PERL per calcolare la seguente funzione: PREFIX_FUNCTION:
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Simulazione di lettura e scrittura concorrente Tecnica dell’accelerated cascading Lezione.
Prof.ssa Rossella Petreschi Lezione del 7 /01/ 2013 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 32 del testo Cormen,Leiserson,Rivest,
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Prof.ssa Rossella Petreschi Lezione del 5/12/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 11 del testo Anany Levitin “The design.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Somme prefisse Lezione n°2.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
I Numeri.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Unità di apprendimento 1
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Alberi di ricerca di altezza logaritmica
Analisi di sequenze di operazioni Union-Find
Stringhe e spostamenti
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Lezione n°14 Reti di flusso Prof.ssa Rossella Petreschi
La gestione degli insiemi disgiunti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Sulla complessità Lezione n°2
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Paths, tree and flowers Lezione n°14
Lezione n°11 Prof.ssa Rossella Petreschi
Lezione n°12 Prof.ssa Rossella Petreschi
ABBINAMENTO Lezione n°13
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi per il flusso nelle reti
Algoritmi per il flusso nelle reti
Lezione n°6 Prof.ssa Rossella Petreschi
Ordinamento in tempo lineare
Analisi ammortizzata Lezione n°3
Gestione dinamica di tabelle
Corrispondenza fra stringhe
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
LE SUCCESSIONI Si consideri la seguente sequenza di numeri:
Progettare algoritmi veloci usando strutture dati efficienti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
L’algoritmo MergeSort
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
APPUNTI SUL LINGUAGGIO C Esercizi sugli array e strutture
Le stringhe in C++ Laboratorio 26 Aprile Dott. Serena Villata
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Il problema del flusso nelle reti
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Unione per ranghi compressi
Tabelle dinamiche Lezione n°3
Analisi ammortizzata Lezione n°2
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Corrispondenza fra stringhe Lezione n°19 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi ASD a.a.2010/2011- Lezione 19

Stringhe e spostamenti Siano dati un testo T[1,…,n] e un pattern P [1,…,m] di caratteri presi da un alfabeto finito ∑ (T e P sono anche detti stringhe di caratteri) Problema: trovare tutte le occorrenze di P all’interno di T Diciamo che P appare con spostamento valido s in T se T[s+1,…,s+m]= P[1,…,m] Problema(seconda formulazione): trovare tutti gli spostamenti validi con cui un dato pattern P appare in un dato testo T. Definizioni: ∑* : l’insieme di tutte le stringhe di lunghezza finita formate usando caratteri dell’alfabeto ∑ stringa vuota di lunghezza 0 appartenente a ∑* xy : concatenazione di due stringhe x e y,ovvero creazione di una stringa di lunghezza x + y dove i caratteri di y seguono i caratteri di x. ASD a.a.2010/2011- Lezione 19 2

Suffissi e Prefissi Una stringa w è un prefisso (suffisso) di una stringa x,w  x (w x), se x=wy (x=yw), per qualche stringa y in ∑* (w ≤ x ) Vale: è sia prefisso che suffissso di ogni stringa;sia  che  sono relazioni transitive; w x sess wa xa, per qualunque carattere a (lo stesso vale per ) Lemma: siano x,y e z stringhe tali che x  z e y  z, allora x  y, se x < y  y  x, se y < x  y = x, se y = x  Problema(terza formulazione): trovare tutti gli spostamenti s, 0≤s≤n-m, tali che P sia suffisso di Ts+m Pk(Tk) prefisso di k caratteri del pattern (testo) P(T) ASD a.a.2010/2011- Lezione 19 3

Algoritmo naif L’algoritmo naif trova tutti gli spostamenti validi controllando l’uguaglianza fra P [1,…,m] e T[s+1,…,s+m] per ognuno degli n-m+1 possibili valori di s for s = 0 to n-m do if P [1,…,m] = T[s+1,…,s+m] then stampa s Tempo computazionale: ((n-m+1)m) ASD a.a.2010/2011- Lezione 19 4

Nozioni di teoria dei numeri A(x0)= a0+x0(a1+x0(a2+…+x0(an-2+x0(an-1)…) Classe di congruenza modulo n : [a]n= {a+kn: Z∍k} Es. [3]7= {…, -11,-4,3,10,17,…} = [-4]7= [10]7=… Regola di Horner per la valutazione di un polinomio A(x)=∑ ajxj (j= 0,…,n-1): ASD a.a.2010/2011- Lezione 19 5

caratteri e cifre Ogni carattere è una cifra decimale; ovvero ∑ = {0,1,2…9}, quindi una stringa di k caratteri consecutivi si può leggere come un numero decimale di lunghezza k (in generale si può assumere che ogni carattere sia una cifra in base d =∑  p: corrispondente valore decimale del pattern P [1,…,m] (p = ∑ P [j]10j ) ts: corrispondente valore decimale della sottostringa T[s+1,…,s+m], s=0,…,n-m Quindi p si può calcolare in tempo O(m) con la regola di Horner: p= P[m]+10(P[m-1]+10(P[m-2]+…+10(P[2]+10(P[1])…) ASD a.a.2010/2011- Lezione 19 6

Calcolo delle Ts t0 può essere calcolato , come p, con la regola di Horner in tempo O(m) La sequenza t1 , t2...tn-m può essere calcolata in tempo O(n-m) tenuto conto che ts+1 = 10(ts – 10m-1T[s+1])+T[s+m+1] dove prima si sottrae la cifra più significativa da ts (-10m-1T[s+1]), poi si trasla il numero di una posizione a sx (moltiplicazione per10) e infine si inserisce l’appropiata cifra meno significativa (+ T[s+m+1]) Il calcolo delle potenze del 10 si può effettuare a priori in tempo O(m). ASD a.a.2010/2011- Lezione 19 7

Versione base dell’algoritmo di Rabin-Karp Dato che s è uno spostamento valido se e solo se ts = p, tutti gli spostamenti validi si ottengono confrontando p con ogni ts La complessità è pari a O(n+m), dato che: p e t0 si calcolano in O(m) tempo tutti gli (n-m) ts si calcolano in tempo costante uno dall’altro le potenze di 10 si calcolano a priori in tempo O(m). Problema: Se le dimensioni di P sono grandi, è irragionevole pensare che ogni operazione aritmetica sia costante ASD a.a.2010/2011- Lezione 19 8