Tehnici algoritmice utilizate în bioinformatică Problema maparii fragmentelor

Σχετικά έγγραφα
Metode iterative pentru probleme neliniare - contractii

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.

Metode de interpolare bazate pe diferenţe divizate

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

Curs 1 Şiruri de numere reale

Examen AG. Student:... Grupa:... ianuarie 2011

Subiecte Clasa a VIII-a

Sisteme diferenţiale liniare de ordinul 1

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

Criptosisteme cu cheie publică III

Curs 4 Serii de numere reale

Integrala nedefinită (primitive)

Proiectarea Algoritmilor 2. Scheme de algoritmi Divide & Impera

Asupra unei inegalităţi date la barajul OBMJ 2006

Să se arate că n este număr par. Dan Nedeianu

Laborator 11. Mulţimi Julia. Temă

Subiecte Clasa a VII-a

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

Esalonul Redus pe Linii (ERL). Subspatii.

Examen AG. Student:... Grupa: ianuarie 2016

Toate subiectele sunt obligatorii. Timpul de lucru efectiv este de 3 ore. Se acordă din oficiu 10 puncte. SUBIECTUL I.

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

2 Transformări liniare între spaţii finit dimensionale

5.4. MULTIPLEXOARE A 0 A 1 A 2

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

MARCAREA REZISTOARELOR

Principiul incluziunii si excluziunii. Generarea şi ordonarea permutărilor. Principiul porumbeilor. Pri

Seminar 5 Analiza stabilității sistemelor liniare

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

Lectia VI Structura de spatiu an E 3. Dreapta si planul ca subspatii ane

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice


a. 11 % b. 12 % c. 13 % d. 14 %

INTERPOLARE. y i L i (x). L(x) = i=0

Spatii liniare. Exemple Subspaţiu liniar Acoperire (înfăşurătoare) liniară. Mulţime infinită liniar independentă

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

Geometrie computationala 2. Preliminarii geometrice

Functii Breviar teoretic 8 ianuarie ianuarie 2011

V O. = v I v stabilizator

Sisteme liniare - metode directe

Proiectarea filtrelor prin metoda pierderilor de inserţie

riptografie şi Securitate

Curs 2 Şiruri de numere reale

Universitatea din Bucureşti Facultatea de Matematică şi Informatică. Algebră (1)

Problema a II - a (10 puncte) Diferite circuite electrice

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB

Metode de sortare. Se dau n numere întregi, elemente ale unui vector a. Se cere să se aranjeze elementele vectorului a în ordine crescătoare.

Profesor Blaga Mirela-Gabriela DREAPTA

BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)

Analiza complexităţii algoritmilor

2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER

T R A I A N ( ) Trigonometrie. \ kπ; k. este periodică (perioada principală T * =π ), impară, nemărginită.

Concurs MATE-INFO UBB, 1 aprilie 2017 Proba scrisă la MATEMATICĂ

Laborator 6. Integrarea ecuaţiilor diferenţiale

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

Orice izometrie f : (X, d 1 ) (Y, d 2 ) este un homeomorfism. (Y = f(x)).

Valori limită privind SO2, NOx şi emisiile de praf rezultate din operarea LPC în funcţie de diferite tipuri de combustibili

CURS 11: Programare dinamică - I - Algoritmica - Curs 11 1

Matrice. Determinanti. Sisteme liniare

Erori si incertitudini de măsurare. Modele matematice Instrument: proiectare, fabricaţie, Interacţiune măsurand instrument:

Teme de implementare in Matlab pentru Laboratorul de Metode Numerice

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

1.3 Baza a unui spaţiu vectorial. Dimensiune

GEOMETRIE PLANĂ TEOREME IMPORTANTE ARII. bh lh 2. abc. abc. formula înălţimii

Lucrare. Varianta aprilie I 1 Definiţi noţiunile de număr prim şi număr ireductibil. Soluţie. Vezi Curs 6 Definiţiile 1 şi 2. sau p b.

VII.2. PROBLEME REZOLVATE

5.1. Noţiuni introductive

Probleme pentru clasa a XI-a

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3

Metode Runge-Kutta. 18 ianuarie Probleme scalare, pas constant. Dorim să aproximăm soluţia problemei Cauchy

Curs 2 DIODE. CIRCUITE DR

Eficienta algoritmilor

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

III. Reprezentarea informaţiei în sistemele de calcul

Noţiuni introductive

Subiecte Clasa a VIII-a

* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1

Analiza funcționării și proiectarea unui stabilizator de tensiune continuă realizat cu o diodă Zener

Algebra si Geometrie Seminar 9

riptografie şi Securitate

z a + c 0 + c 1 (z a)

Subiecte Clasa a V-a

1. Tehnici de programare

Transcript:

Curs 4. Tehnici algoritmice utilizate în bioinformatică Problema maparii fragmentelor Biblio: cap. 4 din An introduction to Bioinformatics algorithms, N.Jones, P. Pevzner cap 2 din Computational Molecular Biology. An Algorithmic Approach, P. Pevzner

Tipuri de probleme intalnite in bioinformatica Reconstituirea secvențelor (ADN) pornind de la fragmente (restriction mapping) Identificarea șabloanelor (motif finding) în secvențe ADN/aminoacizi Alinierea secvențelor ADN / aminoacizi Locală Globală Multiplă Construirea arborilor filogenetici Predicția structurii proteinelor

Tehnici algoritmice utilizate in bioinformatica Tehnica căutarii exhaustive (metoda forței brute) Sistematizarea căutarii: backtracking Limitarea căutarii: branch and bound Tehnica căutarii local optimale (greedy) Programare dinamică Obs. Tehnicile de mai sus se încadrează în două categorii: Exacte (căutare exhaustivă, programare dinamică) costisitoare Aproximative (greedy) - eficiente

Tehnica cautarii exhaustive Specific: Se explorează întreg spațiul soluțiilor Conduce la algoritmi simpli însă de cele mai multe ori ineficienți (complexitate exponențială) Aplicații în bioinformatică: Maparea fragmentelor ( restriction mapping ) Identificarea motivelor (șabloanelor) în secvențe ADN ( motif finding )

Maparea fragmentelor (restriction mapping) Contextul problemei: In 1970 s-a descoperit (studiindu-se bacteria Haemophilus influenzae) că o anumită enzimă (HindII) taie molecula ADN în fiecare poziție unde apare o secvență de forma GTGCAC sau GTTAAC; o alta enzimă (EcoRI) secționează ADN în pozițiile în care apare GAATTC In felul acesta o secvența ADN lungă este secționată în fragmente mai scurte ale căror lungimi pot fi determinate (prin electroforeză în gel) Harta fragmentelor ( restriction map ) arată pozițiile în secvența ADN completă unde s-a realizat secționarea Dacă secvența ADN inițială ar fi cunoscută atunci construirea hărții fragmentelor ar fi o simplă problemă de căutare de subșiruri într-un șir Secvențierea ADN-ului s-a realizat însă abia spre sfârșitul anilor 1990 motiv pentru care la momentul la care a fost enunțată problema, harta fragmentelor trebuia realizată fără a se cunoaște secvența ADN

Maparea fragmentelor (restriction mapping) Formulare generală a problemei Se consideră o secvență (sau mai multe copii ale aceleiași secvențe) secționată într-un anumit număr de fragmente. Se cunosc distanțe dintre punctele de secționare Se caută pozițiile de secționare In funcție de setul de distanțe cunoscut există mai multe variante: Complete Digest Problem Double Digest Problem Partial Digest Problem 2 2 3 3 x1 =0 x2 x3 x4 x5 Complete Digest Problem: Se cunosc doar distanțele dintre punctele consecutive de secționare D(X)= {2,2,3,3}

Maparea fragmentelor (restriction mapping) Formulare generală a problemei Se consideră o secvență (sau mai multe copii ale aceleiași secvențe) secționată într-un anumit număr de fragmente. Se cunosc distanțe dintre punctele de secționare Se caută pozițiile de secționare Double Digest Problem: Se utilizeaza 3 secvente si două enzime de secționare A si B Se cunosc 3 seturi de distante: D A (X)= {2,2,3,3} D B (X)={3,3,4} D AB (X)={1,1,1,2,2,3} 2 2 3 3 a1 a2 a3 a4 a5 3 3 4 b1 b2 b3 b4 2 1 1 2 1 3 c1 c2 c3 c4 c5 c6 c7

Maparea fragmentelor (restriction mapping) Formulare generală a problemei Se consideră o secvență (sau mai multe copii ale aceleiași secvențe) secționată într-un anumit număr de fragmente. Se cunosc distanțe dintre punctele de secționare Se caută pozițiile de secționare 2 8 Partial Digest Problem: 4 6 Se cunosc distanțele dintre oricare două puncte de secționare D(X)= {2,2,3,3,4,5,6,7,8,10} Dpdv experimental necesită secționarea mai multor copii ale secvenței folosind timpi diferiți (cel mai scurt timp permite ca enzima să realizeze o singură secționare, cel mai lung timp permite secționarea în toate pozițiile posibile) dificil de realizat 6 4 2 2 6 2 4 4 4 3 3 2 2 3 3

Maparea fragmentelor (restriction mapping) Varianta 1: complete digest problem Secvența este secționată în fiecare poziție unde poate acționa enzima; fragmentele vor corespunde unor locații de secționare consecutive In construirea hărții fragmentelor se pornește de la setul de lungimi ale fragmentelor și se dorește identificarea pozițiilor de secționare Poziție de sectionare Problema: pornind de la lungimile tuturor fragmentelor: {3,5,5,9} să se determine pozițiile de secționare

Maparea fragmentelor (restriction mapping) Formularea problemei ( complete digest problem ): Fie X={x 1 =0,x 2,,x n } pozițiile necunoscute ale punctelor de secționare și D(X) = {x i+1 -x i, 1<=i<n} setul cunoscut al distanțelor dintre oricare două perechi de poziții consecutive. Să se determine X pornind de la D(X). Observație: Problema nu are soluție unică (sunt necesare informații suplimentare pentru a identifica pozițiile de secționare)

Maparea fragmentelor (restriction mapping) Rezolvare: Este suficient să se genereze permutările setului de distanțe {d 1,d 2,,d n } Pozițiile de secționare (inclusiv extremitățile) vor fi: {0,d 1,d 1 +d 2,., d 1 +d 2 + +d n } Generarea permutărilor: Metoda reducerii (decrease and conquer): generarea permutărilor de ordin n se reduce la generarea permutărilor de ordin (n-1). Se pornește de la permutarea identică. Metoda căutarii cu revenire (backtracking): componentele permutării se completează succesiv începând de la prima; după ce s-au încercat toate valorile posibile pentru o componentă se revine la componenta anterioară.

Maparea fragmentelor (restriction mapping) Ilustrare pentru n=3 (metoda reducerii) 3 1 3 2 1 2 3 3 3 3 2 1 1 3 2 1 2 3 k=3 k=2 2 3 2 2 3 1 3 3 2 1 2 2 2 3 1 3 2 1 3 1 2 1 3 2 2 1 3 1 2 3 k=1 Apel recursiv Revenire din apel

Maparea fragmentelor (restriction mapping) Algoritm de generare a permutărilor (metoda reducerii decrease and conquer ): perm(k) IF k==1 THEN WRITE s[1..n] ELSE FOR i=1,k DO s[i] s[k] // interschimbare perm(k-1) s[i] s[k] ENDFOR ENDIF Se pornește de la permutarea identică s[1..n] e variabilă globală Apel: perm(n)

Maparea fragmentelor (restriction mapping) Ilustrare pt. n=3 (metoda backtracking): (*,*,*) (1,*,*) (2,*,*) (3,*,*) (1,1,*) (1,2,*) (1,3,*) (2,1,*) (2,2,*) (2,3,*) (3,1,*) (3,2,*) (3,3,*) (1,2,3) (1,3,2) (2,1,3) (2,3,1) (3,1,2) (3,2,1)

Maparea fragmentelor (restriction mapping) Algoritm de generare a permutărilor (metoda backtracking): perm(k) IF k==n+1 THEN WRITE s[1..n] ELSE FOR i=1,n DO s[k]=i IF valid(s[1..k]) THEN perm(k+1) ENDIF ENDFOR ENDIF Obs: s[1..n] e variabilă globală Funcție pentru a verifica dacă o soluție parțială este validă sau nu valid(s[1..k]) FOR i=1,k-1 DO IF s[k]==s[i] THEN RETURN FALSE ENDIF ENDFOR RETURN TRUE Apel: perm(1)

Maparea fragmentelor (restriction mapping) Observație: Pentru a reduce numărul de variante posibile se pot folosi informații suplimentare cum ar fi: Distantele dintre punctele de sectionare obtinute aplicând două enzime atât separat cât și simultan (3 seturi de distanțe) - Double Digest Problem Distanțele dintre toate perechile de puncte de secționare nu doar între cele consecutive (in cazul a n puncte vor fi C(n,2) distanțe) -Partial Digest Problem)

Maparea fragmentelor (restriction mapping) Varianta 2: double digest problem Intrare: 3 seturi de distante; Iesire: pozitiile de sectionare Abordare simplă dar ineficientă: tehnica forței brute FOR fiecare permutare p A a setului de distante d A DO FOR fiecare permutare p AB a setului de distante d B DO IF p A este compatibila cu p AB THEN FOR fiecare permutare p B a setului de distante d B DO IF p B este compatibila cu p AB THEN return (p A, p B, p AB ) Obs: alte variante de rezolvare se bazează pe corespondența dintre o mapare și un ciclu eulerian în graful asociat A problemei B AB

Maparea fragmentelor (restriction mapping) Varianta 3: partial digest problem Fiind date cele C(n,2) distanțe dintre oricare două poziții de secționare să se determine pozițiile de secționare x1=0 x2 x3 x4 x5 n=5 C(5,2)=10 D(x)={3,5,5,8,9, 14,14,17,19,22} multiset

Maparea fragmentelor (restriction mapping) Formularea problemei ( partial digest problem ) Fiind date cele C(n,2) distanțe dintre oricare două poziții de secționare să se determine pozițiile de sectionare Observație Nici această variantă a problemei nu are soluție unică întrucât pot exista mulțimi diferite A și B pentru care multiseturile corespunzătoare distanțelor între perechi, D(A) și D(B), sunt egale (astfel de mulțimi sunt numite mulțimi homometrice) Exemplu: ) ( ) ( },, { },, { B D A D V v U u v u V U B V v U u v u V U A = = = + = + =

Maparea fragmentelor (restriction mapping) Exemplu: A={5,6,7,8,10,12}, B={1,2,3,4,6,8} A=U+V, U={4,5,9}, V={1,3} B=U-V 5 6 7 8 10 12 5 1 2 3 5 7 6 1 2 4 6 7 1 3 5 8 2 4 10 2 12 1 2 3 4 6 8 1 1 2 3 5 7 2 1 2 4 6 3 1 3 5 4 2 4 6 2 8

Maparea fragmentelor (restriction mapping) Algoritm simplu bazat pe metoda forței brute: Intrare: L = multiset cu cele C(n,2) lungimi Ieșire: X={0,x 2,, x n } 1: M= max L 2: FOR fiecare submulțime {x 2,,x n-1 } de (n-2) numere naturale cuprinse între 1 și M-1 și care conține elemente din L DO 3: X= {0,x 2,,x n-1,m} 4: calcul D(X) 5: IF D(X)==L THEN RETURN X ENDIF 6: ENDFOR 7: RETURN nu există soluție

Maparea fragmentelor (restriction mapping) Generarea tuturor submulțimilor unei mulțimi finite: Intrare: m (în cazul problemei anterioare m=m-1) Ieșire: lista submulțimilor lui {1,2,,m} Reprezentarea unei submulțimi: vector caracteristic: a=(a 1,,a m ) unde a i =1 dacă valoarea i aparține submulțimii și 0 in caz contrar Exemplu: m=3 Vectorii caracteristici corespunzători tuturor submulțimilor lui {1,2,3} sunt: (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0),(1,0,1),(1,1,0),(1,1,1)

Maparea fragmentelor (restriction mapping) Generarea tuturor vectorilor caracteristici: Numărare în baza 2 Tehnica reducerii (Decrease and conquer) Tehnica căutarii cu revenire (Backtracking) Selectarea submulțimilor care satisfac restricțiile (n-2 elemente din L): Numărul de elemente egale cu 1 în vectorul caracteristic trebuie să fie n-2 Pozițiile pe care este 1 în vectorul caracteristic indică elementele ce aparțin lui L

Numarare in baza 2 Se pornește de la vectorul caracteristic cu toate componentele egale cu 0 La fiecare etapă se generează următorul vector prin incrementare cu 1: Next(b[1..m]) S=b[m]+1; b[m]=s MOD 2; r=s DIV 2 i=m-1 WHILE r>0 and i>=1 DO S=b[i]+r; b[i]=s MOD 2; r=s DIV 2 i=i-1 ENDWHILE Vectorul generat se acceptă doar dacă satisface restricțiile

Tehnica reducerii (decrease and conquer) Idee: problema curentă se reduce la o problemă de dimensiune mai mică submultimi(k) IF k=1 THEN b[1]:=0; IF validare(b[1..m]) THEN output b[1..m] ENDIF b[1]:=1; IF validare(b[1..m]) THEN output b[1..m] ENDIF ELSE b[k]:=0; submultimi(k-1); b[k]:=1; submultimi(k-1); ENDIF Apel: submultimi(m) Funcția validare verifică faptul că pozițiile egale cu 1 din b[1..m] corespund unor elemente din L iar numărul lor este n-2

Tehnica cautarii cu revenire (backtracking) Idee: elementele lui b se completează succesiv cu toate valorile posibile; dupa ce s-au încercat toate valorile posibile pentru o componentă se revine la componenta anterioară și se încearcă următoarea valoare corespunzătoare acesteia Submultimi(k) IF solutie(b[1..k-1]) THEN output b[1..k-1] ELSE b[k]:=0; submultimi(k+1); b[k]:=1; IF validare(b[1..k]) THEN submultimi(k+1) ENDIF ENDIF Apel: submultimi(1) Functiile de validare verifică: pozițiile egale cu 1 din b[1..k-1] corespund unor elemente din L (pt funcțiile solutie și validare) numărul pozițiilor egale cu 1 este n-2 (doar pentru funcția soluție)

Maparea fragmentelor (restriction mapping) Este un astfel de algoritm eficient? Răspunsul la o astfel de întrebare necesită stabilirea ordinului de complexitate al algoritmului Cum măsuram complexitatea unui algoritm? estimând dependența dintre volumul de resurse (de exemplu numărul de execuții ale unor operații) și dimensiunea problemei (numărul de fragmente, lungimea totală a secvenței) Algoritmi eficienți (aplicabili pentru probleme reale): Dependență logaritmică sau polinomială de ordin mic (ex: liniară) Algoritmi ineficienți (inaplicabili pentru probleme de dimensiuni mari): Dependență exponențială sau polinomială de grad mare

Analiza complexitatii Scop: stabilirea dependenței dintre numărul de operații efectuate și dimensiunea problemei Notații: f(n) = funcția care descrie dependența timpului de execuție de dimensiunea problemei (n) g(n) = expresia care definește ordinul de complexitate Clase de complexitate (notații asimptotice) f(n) (g(n)) d.n.d. există c 1, c 2 R + si n 0 N astfel încât c 1 g(n) f(n) c 2 g(n) pentru orice n n 0 (f(n) crește la fel de repede ca și g(n)) f(n) O(g(n)) d.n.d. există c R + si n 0 N astfel încât f(n) <=c g(n) pentru orice n>=n 0 (f(n) crește cel mult la fel de repede ca g(n)) f(n) Ω(g(n)) d.n.d. există c R + si n 0 N astfel încât cg(n) <= f(n) pentru orice n>=n 0 (f(n) crește cel puțin la fel de repede ca g(n))

20000 Analiza complexitatii f(n) (g(n)) d.n.d. există c 1, c 2 R + și n 0 N astfel încât c 1 g(n) f(n) c 2 g(n) pentru orice n n 0 c 2 g(n)=2n 2 15000 c 1 g(n) f(n) c 2 g(n) 10000 5000 0 0 20 40 60 80 100 n 0 f(n)= n 2 +10 nlgn +5 c 1 g(n)=n 2 (n 2 )

Analiza complexitatii f(n) O(g(n)) d.n.d. există c R + si n 0 N astfel încât f(n) <=c g(n) pentru orice n>=n 0 10000 cg(n)=n 2 8000 f(n)<=cg(n) 6000 4000 2000 0 0 20 40 60 80 100 n 0 =36 O(n 2 ) f(n)= 10nlgn +5

Analiza complexitatii f(n) Ω(g(n)) d.n.d. există c R + si n 0 N astfel încât cg(n) <= f(n) pentru orice n>=n 0 4000 3000 cg(n)<=f(n) f(n)=10nlgn+5 2000 1000 0 0 20 40 60 80 100 n 0 =7 Ω(n) cg(n)=20n

Analiza complexitatii Analiza algoritmului bazat pe metoda forței brute: Dimensiunea problemei: (m, n) (m=m-1=max L-1, n=nr fragmente) Generarea submulțimilor: O(m2 m ) Analiza fiecărei submulțimi (comparare D(L) cu X): O(n 2 ) Total: O(2 m (m+n 2 )) Se obține astfel un ordin exponențial de complexitate: inaplicabilă pentru valori mari ale lui m și/sau n Observație: O ușoară îmbunătățire se obține dacă în loc să se genereze toate submulțimile din {1,,m} se generează direct submulțimile cu n-2 elemente din L. In acest caz se obține O(n 2 C(m,n-2)) ceea ce poate fi semnificativ mai mic decât O(2 m (m+n 2 )) dacă n este semnificativ mai mic decât m (nr mic de fragmente într-o secvență de lungime mare)

Varianta mai eficienta a algoritmului (Skiena, 1990) L = { 2, 2, 3, 3, 4, 5, 6, 7, 8, 10 } X = { 0 } Exemplu din Ch04_DNA_mapping.pdf (http://www.bioalgorithms.info)

Varianta mai eficienta a algoritmului (Skiena, 1990) L = { 2, 2, 3, 3, 4, 5, 6, 7, 8, 10 } X = { 0 } Se elimină 10 din L și se inserează în X. Trebuie să fie extremitatea din dreapta a secvenței.

Varianta mai eficienta a algoritmului (Skiena, 1990) L = { 2, 2, 3, 3, 4, 5, 6, 7, 8 } X = { 0,10 }

Varianta mai eficienta a algoritmului (Skiena, 1990) L = { 2, 2, 3, 3, 4, 5, 6, 7, 8} X = { 0,10 } Se alege maximul din L (8). Poziția de tăietură (y) poate fi 2 sau 8. Se alege y=2. Se elimină 8 și un 2 din L L = { 2, 3, 3, 4, 5, 6, 7} X = { 0,2,10 }

Varianta mai eficienta a algoritmului (Skiena, 1990) L = {2, 3, 3, 4, 5, 6, 7} X = { 0,2,10 } Se determină maximul din L (7). Există două variante posibile: y=3 și y=7. Varianta y=3 nu poate fi aleasă întrucât L nu conține valoarea 1=3-2 (care ar fi distanța dintre punctele 3 și 2). Prin urmare se alege y=7. Distanțele de la y la elementele curente din X sunt: {7,5,3}. Se adaugă 7 la X și se elimină 7,5 și un 3 din L. L = { 2, 3, 4,6} X = { 0,2,7,10 }

Varianta mai eficienta a algoritmului (Skiena, 1990) L = {2, 3, 4,6} X = {0,2,7,10 } Se alege maximul din L (6). Pentru y=6, distanțele de la y la elementele curente din X sunt: {6,4,1,4}. Aceasta submulțime nu este inclusă în L. Se ignoră 6 și se alege 4. Pentru y=4 distanțele sunt: {4,2,3,6}. Se adaugă 4 la X și se elimină {4,2,3,6} din L L = { } X = { 0,2,4,7,10 } L fiind vidă înseamnă că s-a obținut o soluție. Pentru a determina celelalte soluții se trece înapoi pentru a explora variantele rămase neexplorate (ex: 8 de la prima etapă)

Varianta mai eficienta a algoritmului (Skiena, 1990) PartialDigest(L): m = Max L DELETE(m, L) X = {0, m} PLACE(m,L, X) Obs. D(y,X) = mulțimea distanțelor de la y la punctele din mulțimea X L=lista cu distanțele PLACE(m,L, X) IF L este vidă output X; return // s-a obținut o soluție ENDIF y = Max L // determină cea mai mare distanță DELETE(y,L) // elimină distanța din L IF mulțimea D(y, X ) este inclusă în L Adaugă y la X și elimină lungimile D(y, X) din L PLACE(m,L,X ) Sterge y din X și adaugă D(y, X) la L ENDIF IF mulțimea D(m-y, X ) este inclusă în L Adaugă m-y la X și elimină lungimile D(m-y, X) din L PLACE(m,L,X ) Elimină m-y din X și adaugă lungimile D(m-y, X ) la L ENDIF

Varianta mai eficienta a algoritmului Analiza complexității: Cazul cel mai favorabil: la fiecare etapă prima ramură analizată este validă Relația de recurență pt. timpul de execuție T(n)=O(1), n=1 T(n)=T(n-1)+O(n), n>1 T(n) O(n 2 ) PLACE(m,L, X) IF L este vidă output X; return // s-a obținut o soluție ENDIF y = Max L // determină cea mai mare distanță DELETE(y,L) // elimină distanța din L IF mulțimea D(y, X ) este inclusă în L Adaugă y la X și elimină lungimile D(y, X) din L PLACE(m,L,X ) Sterge y din X și adaugă D(y, X) la L ENDIF IF mulțimea D(m-y, X ) este inclusă în L Adaugă m-y la X și elimină lungimile D(m-y, X) din L PLACE(m,L,X ) Elimină m-y din X și adaugă lungimile D(m-y, X ) la L ENDIF

Varianta mai eficienta a algoritmului Analiza complexitatii: Cazul cel mai nefavorabil: la fiecare etapă se parcurg ambele ramuri Relația de recurență pt. timpul de executie T(n)=O(1), n=1 T(n)=2T(n-1)+O(n), n>1 T(n) O(n2 n ) PLACE(m,L, X) IF L este vidă output X; return // s-a obținut o soluție ENDIF y = Max L // determină cea mai mare distanță DELETE(y,L) // elimină distanța din L IF mulțimea D(y, X ) este inclusă în L Adaugă y la X și elimină lungimile D(y, X) din L PLACE(m,L,X ) Elimină y din X și adaugă D(y, X) la L ENDIF IF mulțimea D(m-y, X ) este inclusă în L Adaugă m-y la X și elimină lungimile D(m-y, X) din L PLACE(m,L,X ) Elimină m-y din X și adaugă lungimile D(m-y, X ) la L ENDIF

Varianta mai eficienta a algoritmului Algoritm de complexitate (pseudo)polinomiala: [Daurat, Gerard, Nivat 2002] - se bazează pe factorizări de polinoame cu coeficienți intregi (lungimile fragmentelor intervin ca grade ale termenilor polinomului) Alta varianta ale problemei: -Simplified Partial Digest: se folosește o enzimă însă doar două intervale de timp (unul scurt care permite o singura secționare/secvența și unul lung care permite toate secționările/secvența)