Proiectarea algoritmilor: Programare dinamică

Σχετικά έγγραφα
Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

Metode iterative pentru probleme neliniare - contractii

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

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

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

Curs 1 Şiruri de numere reale

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

Sisteme diferenţiale liniare de ordinul 1

Curs 4 Serii de numere reale

Integrala nedefinită (primitive)

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

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

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

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

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

Asupra unei inegalităţi date la barajul OBMJ 2006

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

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

Curs 2 Şiruri de numere reale

Metode de interpolare bazate pe diferenţe divizate

Subiecte Clasa a VII-a

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

Esalonul Redus pe Linii (ERL). Subspatii.

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

Criptosisteme cu cheie publică III

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

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

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

Functii Breviar teoretic 8 ianuarie ianuarie 2011

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

Laborator 11. Mulţimi Julia. Temă

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

Aplicaţii ale principiului I al termodinamicii la gazul ideal

Cursul Măsuri reale. D.Rusu, Teoria măsurii şi integrala Lebesgue 15

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE

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

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

Seminar 5 Analiza stabilității sistemelor liniare

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

Subiecte Clasa a VIII-a

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

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

riptografie şi Securitate

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

Proiectarea Algoritmilor 2. Scheme de algoritmi Divide & Impera

SEMINARUL 3. Cap. II Serii de numere reale. asociat seriei. (3n 5)(3n 2) + 1. (3n 2)(3n+1) (3n 2) (3n + 1) = a

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

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

CONCURS DE ADMITERE, 17 iulie 2017 Proba scrisă la MATEMATICĂ

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

MARCAREA REZISTOARELOR

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

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.

CURS 11: ALGEBRĂ Spaţii liniare euclidiene. Produs scalar real. Spaţiu euclidian. Produs scalar complex. Spaţiu unitar. Noţiunea de normă.

f(x) = l 0. Atunci f are local semnul lui l, adică, U 0 V(x 0 ) astfel încât sgnf(x) = sgnl, x U 0 D\{x 0 }. < f(x) < l +

1.3 Baza a unui spaţiu vectorial. Dimensiune

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

Criterii de comutativitate a grupurilor

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


Programarea dinamica I

Conice - Câteva proprietǎţi elementare

Algoritmica grafurilor XI. Cuplaje in grafuri. Masuri de calitate. Numere Ramsey

O generalizare a unei probleme de algebră dată la Olimpiada de Matematică, faza judeţeană, 2013

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

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

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

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

Laborator 6. Integrarea ecuaţiilor diferenţiale

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

1. PROPRIETĂȚILE FLUIDELOR

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

III. Reprezentarea informaţiei în sistemele de calcul

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

5.4. MULTIPLEXOARE A 0 A 1 A 2

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

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

Geometrie computationala 2. Preliminarii geometrice

CONCURSUL DE MATEMATICĂ APLICATĂ ADOLF HAIMOVICI, 2017 ETAPA LOCALĂ, HUNEDOARA Clasa a IX-a profil științe ale naturii, tehnologic, servicii

Aparate de măsurat. Măsurări electronice Rezumatul cursului 2. MEE - prof. dr. ing. Ioan D. Oltean 1


Funcţii Ciudate. Beniamin Bogoşel

Ecuatii trigonometrice

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

Profesor Blaga Mirela-Gabriela DREAPTA

Teme de implementare in Matlab pentru Laboratorul de Metode Numerice

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

8 Intervale de încredere

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

VII.2. PROBLEME REZOLVATE

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

Vectori liberi Produs scalar Produs vectorial Produsul mixt. 1 Vectori liberi. 2 Produs scalar. 3 Produs vectorial. 4 Produsul mixt.

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

Al cincilea baraj de selecţie pentru OBMJ Bucureşti, 28 mai 2015

SEMINAR TRANSFORMAREA FOURIER. 1. Probleme

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

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

Subiecte Clasa a V-a

7 Distribuţia normală

prin egalizarea histogramei

Transcript:

Proiectarea algoritmilor: Programare dinamică Dorel Lucanu Faculty of Computer Science Alexandru Ioan Cuza University, Iaşi, Romania dlucanu@info.uaic.ro PA 2014/2015 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 1 / 52

Outline 1 Prezentarea generală a paradigmei 2 Studii de caz Distanţa între şiruri D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 2 / 52

Prezentarea generală a paradigmei Plan 1 Prezentarea generală a paradigmei 2 Studii de caz Distanţa între şiruri D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 3 / 52

Prezentarea generală a paradigmei Clasa de probleme Clasa de probleme la care se aplică include probleme de optim. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 4 / 52

Prezentarea generală a paradigmei Modelul matematic 1 Definirea noţiunii de stare, care este de fapt o generalizare a problemei iniţiale şi asocierea funcţiei obiectiv pentru stare. Problemei trebuie sa devină un caz particular (o stare). 2 Definirea unei relaţii de tranziţie între stări. O relaţie s s, unde s şi s sunt stări, va fi numită decizie. O politică este o secvenţă de decizii consecutive, adică o secvenţă de forma s 0 s 1 s n. 3 Unei stări s îi asociem o valoare z şi definim f (z) astfel încât, dacă starea s corespunde problemei iniţiale, atunci f (z) = optim R(x 0,..., x m 1 ) D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 5 / 52

Prezentarea generală a paradigmei Modelul matematic 4 Aplicarea Principiului de Optim pentru obţine o relaţie de recurenţă. Principiul de optim (PO) afirmă că o subpolitică a unei politici optimale este la rândul ei optimală. Deoarece este posibil ca PO să nu aibă loc, rezultă că trebuie verificată validitatea relaţiei de recurenţă. 5 Principiul de optim conduce la obţinerea unei ecuaţii funcţionale de forma: f (z) = optim y [H(z, y, f (T (z, y)))] (1) unde: s şi s sunt două stări astfel încât una se obţine din cealaltă aplicând decizia d, z este valoarea asociată stării s, T (z, y) calculează valoarea stării s, iar H exprimă algoritmul de calcul al valorii f (z) dat de decizia d. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 6 / 52

Prezentarea generală a paradigmei Modelul matematic 6 Relaţia de mai sus poate fi interpretată astfel: dintre toate deciziile care se pot lua în starea s (sau care conduc la starea s), se alege una care dă valoarea optimă în condiţiile în care politica aplicată în continuare (sau până atunci) este este şi ea optimă. 7 Relaţia (1) poate fi dovedită utilizând inducţia şi reducerea la absurd. Deoarece este posibil ca formulările pentru T () şi sau H() să fie neadecvate, ducând la cazul în care principiul de optim nu are loc, este necesară verificarea acestuia pentru problema supusă rezolvării. 8 Rezolvarea ecuaţiilor recurente (1) conduce la determinarea unui şir de decizii ce în final constituie politica optimă prin care se determină valoarea funcţiei obiectiv. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 7 / 52

Prezentarea generală a paradigmei Modelul matematic 9 Calculul recurenţei rezolvând problemele de la mic la mare şi memorând valorile obţinute într-un tablou. Nu se recomandă scrierea unui program recursiv care să calculeze valorile optime. Dacă în secvenţa de decizii luate, o anumită problemă apare de mai multe ori, ea va fi calculată de algoritmul recursiv de câte ori apare. Exemplu cu numerele Fibonacci: pe tabla 10 Extragerea soluţiei optime din tablou utilizând proprietatea de substructură optimă a soluţiei, care afirmă că soluţia optimă a problemei include soluţiile optime ale subproblemelor sale. De remarcat că proprietatea de substructură optimă este echivalentă cu principiul de optim. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 8 / 52

Plan 1 Prezentarea generală a paradigmei 2 Studii de caz Distanţa între şiruri D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 9 / 52

Plan 1 Prezentarea generală a paradigmei 2 Studii de caz Distanţa între şiruri D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 10 / 52

Problema Se consideră n obiecte 1,..., n de dimensiuni (greutăţi) w 1,..., w n Z +, respectiv, şi un rucsac de capacitate M Z +. Un obiect i sau este introdus în totalitate în rucsac, x i = 1, sau nu este introdus de loc, x i = 0, astfel că o umplere a rucsacului constă dintr-o secvenţă x 1,..., x n cu x i {0, 1} şi i x i w i M. Ca şi în cazul continuu, introducerea obiectului i în rucsac aduce profitul p i Z iar profitul total este n i=1 x ip i. Problema constă în a determina o alegere (x 1,..., x n ) care să aducă un profit maxim. Deci, singura deosebire faţă de varianta continuă studiată la metoda greedy constă în condiţia x i {0, 1} în loc de x i [0, 1]. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 11 / 52

Formularea matematică funcţia obiectiv: restricţii: max n x i p i i=1 n x i w i M i=1 x i {0, 1}, i = 1,..., n w i Z +, p i Z, i = 1,..., n M Z D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 12 / 52

Definirea noţiunii de stare Rucsac(j, X ) reprezintă următoarea problemă, care este o generalizare a celei iniţiale: funcţia obiectiv: restricţii: max j x i p i i=1 j x i w i X i=1 x i {0, 1}, i = 1,..., j w i Z +, p i Z, i = 1,..., j X Z Cu f j (X ) notăm valoarea optimă pentru instanţa Rucsac(j, X ). Dacă j = 0 şi X 0, atunci f j (X ) = 0. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 13 / 52

Definirea noţiunilor de decizie şi relaţia de tranziţie Presupunem j > 0. Considerăm decizia optimă prin care starea Rucsac(j, X ) este transformată în Rucsac(j 1,?). Notăm cu (x 1,..., x j ) alegerea care dă valoarea optimă f j (X ). D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 14 / 52

Aplicarea principiului de optim Dacă x j = 0 (obiectul j nu este pus în rucsac) atunci, conform principiului de optim, f j (X ) este valoarea optimă pentru starea Rucsac(X, j 1) şi de aici f j (X ) = f j 1 (X ). Dacă x j = 1 (obiectul j este pus în rucsac) atunci, din nou conform principiului de optim, f j (X ) este valoarea optimă pentru starea Rucsac(j 1, X w j ) la care se adaugă profitul p i şi de aici f j (X ) = f j 1 (X w j ) + p j. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 15 / 52

Obţinerea recurenţei Combinând relaţiile de mai sus obţinem:, dacă X < 0 f j (X ) = 0, dacă j = 0 şi X 0 max{f j 1 (X ), f j 1 (X w j ) + p j }, dacă j > 0 şi X 0 (2) Am considerat f j (X ) = dacă X < 0. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 16 / 52

(2) ca instanţă a relaţiei (1) Reamintim (1): f (z) = optim y [H(z, y, f (T (z, y)))] valoarea z asociată stării s este (j, X ) valoarea T (y, z) asociată stării s este (j 1, X y w j ) algoritmul H este f j 1 (X y w j ) + y p j, unde y {0, 1} optim y este max y {0,1} care duce la scrierea mai concisă pentru cazul j > 0 şi X 0: f j (X ) = max y {0,1} f j 1(X y w j ) + y p j D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 17 / 52

Rezolvarea problemelor de la mic la mare şi memorarea rezultatelor în tabel Fie M = 10, n = 3 şi greutăţile şi profiturile date de următorul tabel: i 1 2 3 w i 3 5 6 p i 10 30 20 Valorile optime pentru subprobleme sunt calculate cu ajutorul relaţiilor 2 şi pot fi memorate într-un tablou bidimensional astfel: X 0 1 2 3 4 5 6 7 8 9 10 f 0 0 0 0 0 0 0 0 0 0 0 0 f 1 0 0 0 10 10 10 10 10 10 10 10 f 2 0 0 0 10 10 30 30 30 40 40 40 f 3 0 0 0 10 10 30 30 30 40 40 40 Tabloul de mai sus este calculat linie cu linie: pentru a calcula valorile de pe o linie sunt consultate numai valorile de pe linia precedentă. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 18 / 52

Analiza Tabloul de mai sus are dimensiunea n m (au fost ignorate prima linie şi prima coloană). Dacă m = O(2 n ) rezultă că atât complexitatea spaţiu cât şi cea timp sunt exponenţiale. Privind tabloul de mai sus observăm că există multe valori care se repetă. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 19 / 52

Rafinare În continuare ne punem problema memorării mai compacte a acestui tablou. Construim graficele funcţiilor f 0, f 1, f 2 şi f 3 pentru exemplul de mai sus. Avem: {, X < 0 f 0 (X ) = 0, X 0 Notăm cu g 0 funcţia dată de: g 0 (X ) = f 0 (X w 1 ) + p 1 = {, X < 3 10, 3 X D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 20 / 52

Rafinare Graficele funcţiilor f 0 şi g 0 : 10 3 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 21 / 52

Rafinare Funcţia f 1 se calculează prin:, X < 0 f 1 (X ) = max{f 0 (X ), g 0 (X )} = 0, 0 X < 3 10, 3 X Notăm cu g 1 funcţia dată prin:, X < 5 g 1 (X ) = f 1 (X w 2 ) + p 2 = 30, 5 X < 8 40, 8 X D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 22 / 52

Rafinare Graficele funcţiilor f 1 şi g 1 : 40 30 10 3 10 3 5 8 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 23 / 52

Rafinare Funcţia f 2 se calculează prin:, X < 0 0, 0 X < 3 f 2 (X ) = max{f 1 (X ), g 1 (X )} = 10, 3 X < 5 30, 5 X < 8 40, 8 X În continuare, notăm cu g 2 funcţia dată prin:, X < 6 20, 6 X < 9 g 2 (X ) = f 2 (X w 3 ) + p 3 = 30, 9 X < 11 50, 11 X < 14 60, 14 X D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 24 / 52

Rafinare Graficele funcţiilor f 2 şi g 2 : 40 30 10 3 5 60 50 40 30 20 10 8 3 5 6 8 9 11 14 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 25 / 52

Rafinare Funcţia f 3 se calculează prin:, X < 0 0, 0 X < 3 10, 3 X < 5 f 3 (X ) = max{f 2 (X ), g 2 (X )} = 30, 5 X < 8 40, 8 < X 11 50, 11 X < 14 60, 14 X D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 26 / 52

Rafinare Graficul funcţiei f 3 : 60 50 40 30 10 3 5 8 11 14 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 27 / 52

Rafinare Se remarcă faptul că funcţiile f i şi g i sunt funcţii în scară. Graficele acestor funcţii pot fi reprezentate prin mulţimi finite din puncte din plan. De exemplu, graficul funcţiei f 2 este reprezentat prin mulţimea {(0, 0), (3, 10), (5, 30), (8, 40)}. X 0 1 2 3 4 5 6 7 8 9 10 f 0 0 0 0 0 0 0 0 0 0 0 0 f 1 0 0 0 10 10 10 10 10 10 10 10 f 2 0 0 0 10 10 30 30 30 40 40 40 f 3 0 0 0 10 10 30 30 30 40 40 40 O mulţime care reprezintă o funcţie în scară conţine acele puncte în care funcţia face salturi. Graficul funcţiei g i se obţine din graficul funcţiei f i printr-o translaţie iar graficul funcţiei f i+1 se obţine prin interclasarea graficelor funcţiilor f i şi g i. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 28 / 52

Rafinare În general, fiecare f i este complet specificat de o mulţime S i = {(X j, Y j ) j = 0,..., r} unde Y j = f i (X j ). Presupunem X 1 < < X r. Analog, funcţiile g i sunt reprezentate prin mulţimile T i = {(X + w i, Y + p i ) (X, Y ) S i }. Notăm T i = τ(s i ) şi S i+1 = µ(s i, T i ). Mulţimea S i+1 se obţine din S i şi T i prin interclasare. Algoritmul pentru µ: Se consideră o variabilă L care ia valoarea 1 dacă graficul lui f i+1 coincide cu cel al lui f i şi cu 2 dacă el coincide cu cel al lui g i. Deoarece (0, 0) aparţine graficului rezultat, considerăm L = 1, j = 1 şi k = 1. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 29 / 52

Rafinare Presupunând că la un pas al interclasării se compară (X j, Y j ) S i cu (X k, Y k ) T i atunci: dacă L = 1: dacă X j < X k atunci adaugă (X j, Y j ) în S i+1 şi se incrementează j; dacă X j = X k : dacă Y j > Y k atunci adaugă (X j, Y j ) în S i+1 şi se incrementează j şi k; dacă Y j < Y k atunci adaugă (X k, Y k ) în S i+1, L = 2 şi se incrementează j şi k; dacă X j > X k atunci, dacă Y k > Y j adaugă (X k, Y k ) în S i+1, L = 2 şi se incrementează k; dacă L = 2: dacă X j < X k atunci, dacă Y j > Y k adaugă (X j, Y j ) în S i+1, L = 1 şi se incrementează j; dacă X j = X k : dacă Y j < Y k atunci adaugă (X k, Y k ) în S i+1 şi se incrementează j şi k; dacă Y j > Y k atunci adaugă (X j, Y j ) în S i+1, L = 1 şi se incrementează j şi k; dacă X j > X k atunci adaugă (X k, Y k ) în S i+1 şi se incrementează k; D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 30 / 52

Rafinare Rămâne de extras soluţia optimă din S n. Considerăm mai întâi cazul din exemplul de mai sus. Se caută în S n = S 3 perechea (X j, Y j ) cu cel mai mare X j pentru care X j M. Obţinem (X j, Y j ) = (8, 40). Deoarece (8, 40) S 3 şi (8, 40) S 2 rezultă f optim (M) = f optim (8) = f 3 (8) = f 2 (8) şi deci x 3 = 0. Perechea (X j, Y j ) rămâne neschimbată. Pentru că (X j, Y j ) = (8, 40) este în S 2 şi nu este în S 1, rezultă că f optim (8) = f 1 (8 w 2 ) + p 2 şi deci x 2 = 1. În continuare se ia (X j, Y j ) = (X j w 2, Y j p 2 ) = (8 5, 40 30) = (3, 10). Pentru că (X j, Y j ) = (3, 10) este în S 1 şi nu este în S 0, rezultă că f optim (3) = f 1 (3 w 1 ) + p 1 şi deci x 1 = 1. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 31 / 52

Rafinare Metoda poate fi descrisă pentru cazul general: Iniţial se determină perechea (X j, Y j ) S n cu cel mai mare X j pentru care X j M. Valoarea Y j constituie încărcarea optimă a rucsacului, i.e. valoarea funcţiei obiectiv din problema iniţială. Pentru i = n 1,..., 0: dacă (X j, Y j ) este în S i, atunci f i+1 (X j ) = f i (X j ) = Y j şi se face x i+1 = 0 (obiectul i + 1 nu este ales); dacă (X j, Y j ) nu este în S i, atunci f i+1 (X j ) = f i (X j w i+1 ) + p i+1 = Y j şi se face x i+1 = 1 (obiectul i + 1 este ales), X j = X j w i+1 şi Y j = Y j p i+1. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 32 / 52

Algoritmul rafinat rucsacvd(n, w, p, valopt, x) { S 0 = {(0, 0)}; T 0 = {(w 1, p 1 )}; for (i = 1; i < n; ++i) { S i (X) = µ(s i 1, T i 1 ) T i = {(X + w i, Y + p i ) (X, Y) S i } } determină (X j, Y j ) cu X j = max{x i (X i, Y i ) S n, X i M} for (i = n-1; i 1; --i) if ((X j, Y j ) S i ) then x i+1 = 0 else { x i+1 = 1 X j = X j w i+1 Y j = Y j p i+1 } } D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 33 / 52

Analiza algoritmului rafinat Notăm m = n i=0 S i. Deoarece T i = S i rezultă că S i+1 2 S i şi de aici i S i i 2i = 2 n 1. Calculul lui S i din S i 1 necesită timpul Θ( S i 1 ) şi de aici calculul lui S n necesită timpul i Θ( S i ) = O(2 n ). Deoarece profiturile p i sunt numere întregi, pentru orice (X, Y ) S i, Y este întreg şi Y j i p j. Analog, pentru că dimensiunile w i sunt numere întregi, pentru (X, Y ) S i, X este întreg şi X j i w j. Deoarece perechile (X, Y ) cu X > M nu interesează, ele pot să nu fie incluse în mulţimile S i. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 34 / 52

Analiza algoritmului rafinat De aici rezultă că numărul maxim de perechi (X, Y ) distincte din S i satisface relaţiile: S i 1 + i j=1 w j S i M care implică i S i 1 + min w j, M Relaţia de mai sus permite o estimare mai precisă a spaţiului necesar pentru memorarea mulţimilor S i în cazul unor probleme concrete. În ceea ce priveşte timpul, făcând calculele rezultă că algoritmul are complexitatea timp O(min(2 n, n n i=1 p i, nm)). j=1 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 35 / 52

Distanţa între şiruri Plan 1 Prezentarea generală a paradigmei 2 Studii de caz Distanţa între şiruri D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 36 / 52

Distanţa între şiruri Problema Se consideră două şiruri α = a 1 a n şi β = b 1 b n formate cu litere dintr-un alfabet A. Asupra şirului α se pot face următoarele operaţii: Ştergere: S(i) şterge litera de pe poziţia i; Inserare: I (i, c) inserează litera c pe poziţia i; Modificare: M(i, c) înlocuieşte litera de pe poziţia i cu c. Problema constă în determinarea unei secvenţe de operaţii de lungime minimă care transformă pe α în β. Exemplu: Fie α = carnet, β = paleta. O secvenţă de transformări este carnet par net palnet palet paleta. Transformările efectuate sunt M(1, p), M(3, l), S(4) şi I (6, a). Există o altă secvenţă mai scurtă? sfex D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 37 / 52

Distanţa între şiruri Analiza domeniului problemei Lemă Fie s = (... T (i, ), T (j, )...) o secvenţă optimă (de lungime minimă) care transformă pe α în β. Atunci există k, l astfel încât secvenţa s = (... T (k, ), T (l, )...), obţinută din s prin interschimbarea celor două operaţii T şi T şi în rest rămânând neschimbată, este de asemenea o secvenţă optimă care transformă pe α în β. Corolar Există o secvenţă optimă care dacă efectuează transformările: α = α 0 α 1 α t = β atunci pentru orice i, α i β, unde prin am notat lungimea şirului. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 38 / 52

Distanţa între şiruri Analiza domeniului problemei Lemă Are loc: (i) d(α, α) = 0; (ii) d(α, β) = d(β, α); (iii) d(α, γ) d(α, β) + d(β, γ). Observaţie: Lema de mai sus arată că d(α, β) este o metrică. De aici şi numele problemei. sfobs D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 39 / 52

Distanţa între şiruri Noţiunea de stare DS(α i, β j ) corespunzătoare transformării subşirului α i = a 1... a i în β j = b 1... b j şi prin d[i, j] valoarea optimă d(α i, β j ). Dacă i = 0, α 0 este şirul vid şi β j se obţine prin j inserări: deci d[0, j] = j. Dacă j = 0, atunci β j se obţine prin i ştergeri şi avem d[i, 0] = i. În continuare presupunem i, j > 0. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 40 / 52

Distanţa între şiruri Decziile şi Principiul de optim Considerăm decizia optimă prin care starea DS(a 1... a i, b 1... b j ) este transformată într-o stare DS(a 1... a i, b 1... b j ) cu (i < i şi j j) sau (i i şi j < j). Distingem următoarele situaţii: 1 Dacă a i = b j atunci i = i 1, j = j 1 şi, aplicând principiul de optim, obţinem d[i, j] = d[i 1, j 1]. 2 DS(a 1,..., a i, b 1,..., b j ) se obţine prin ştergere. Rezultă i = i 1, j = j şi, aplicând principiul de optim, obţinem d[i, j] = d[i 1, j] + 1. 3 DS(a 1,..., a i, b 1,..., b j ) se obţine prin inserare. Avem i = i, j = j 1 şi, aplicând principiul de optim, obţinem d[i, j] = d[i, j 1] + 1. Din corolarul lemei precedente rezultă că această operaţie poate fi realizată numai dacă i < j. 4 DS(a 1,..., a i, b 1,..., b j ) se obţine prin modificare. Avem i = i 1, j = j 1 şi, aplicând principiul de optim, obţinem d[i, j] = d[i 1, j 1] + 1. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 41 / 52

Distanţa între şiruri Relaţia de recurenţă Deoarece d[i, j] trebuie să fie minimă, rezultă: d[i, j] = min{d[i 1, j] + 1, d[i 1, j 1] + δ(i, j), d[i, j 1] + 1} (3) unde δ(i, j) = { 0, dacă a i = b j 1, dacă a i b j D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 42 / 52

Distanţa între şiruri (3) ca instanţă a relaţiei (1) Reamintim (1): f (z) = optim y [H(z, y, f (T (z, y)))] valoarea z asociată stării s este [i, j] valoarea T (y, z) asociată stării s este [i y i, j y j ], unde y i, y j {0, 1}, y i + y j > 0 algoritmul H este d[i y i, j y j ] + δ(i, j, y i, y j ), unde { 0, dacă a i = b j y i + y j = 2 δ(i, j, y i, y j ) = 1, dacă (a i b j y i + y j = 2) y i + y j = 1 optim este min y y i,y j {0,1},y i +y j >0 care duce la scrierea mai concisă pentru cazul i, j > 0: d[i, j] = min d[i y i, j y j ] + δ(i, j, y i, y j ) y i,y j {0,1},y i +y j >0 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 43 / 52

Distanţa între şiruri Calculul lui d[i,j]: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 a 6 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 44 / 52

Distanţa între şiruri Determinarea secvenţei optime Notăm cu L lista care înregistrează transformările soluţiei optime. Se procedează în modul următor: iniţial se consideră i = n; j = n; şi L = ( ) (lista vidă); următorul proces se repetă până când i şi j devin 0: dacă d[i, j] = d[i 1, j 1] atunci L rămâne neschimbată şi se face i = i-1; j = j-1; altfel, dacă d[i, j] = d[i 1, j 1] + 1 atunci se face L = (M(i, b j ), L) şi i = i-1; j = j-1; altfel, dacă d[i, j] = d[i 1, j] + 1 atunci se face L = (S(i), L) şi i = i-1; altfel, dacă d[i, j] = d[i, j 1] + 1 atunci se face L = (I (i, b j ), L) şi j = j-1. D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 45 / 52

Distanţa între şiruri Determinarea secvenţei optime: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 3 4 a 6 6 5 5 4 4 3 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 46 / 52

Distanţa între şiruri Determinarea secvenţei optime: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 3 4 a 6 6 5 5 4 4 3 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 46 / 52

Distanţa între şiruri Determinarea secvenţei optime: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 3 4 a 6 6 5 5 4 4 3 D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 46 / 52

Distanţa între şiruri Determinarea secvenţei optime: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 3 4 a 6 6 5 5 4 4 3 M(5, r ) D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 46 / 52

Distanţa între şiruri Determinarea secvenţei optime: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 3 4 a 6 6 5 5 4 4 3 M(5, r ) D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 46 / 52

Distanţa între şiruri Determinarea secvenţei optime: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 3 4 a 6 6 5 5 4 4 3 M(5, r ) D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 46 / 52

Distanţa între şiruri Determinarea secvenţei optime: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 3 4 a 6 6 5 5 4 4 3 M(5, r ), S(2) D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 46 / 52

Distanţa între şiruri Determinarea secvenţei optime: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 3 4 a 6 6 5 5 4 4 3 M(5, r ), S(2) D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 46 / 52

Distanţa între şiruri Determinarea secvenţei optime: exemplu c a m a r a 0 1 2 3 4 5 6 a 1 1 1 2 3 4 5 r 2 2 2 2 3 3 4 m 3 3 3 2 3 4 4 a 4 4 3 3 2 3 4 t 5 5 4 4 3 3 4 a 6 6 5 5 4 4 3 M(5, r ), S(2), I (1, c ) D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 46 / 52

Distanţa între şiruri Algoritmul distsir(a, b, n) { for (j = 1; j n; ++j) d[0,j] = j; for (i = 1; i n; ++i) d[i,0] = i; for (i = 1; i n; ++i) for (j = 1; j n; ++j) { δ = (a[i] == b[j])? 0 : 1; d[i, j] = min{d[i 1, j] + 1, d[i 1, j 1] + δ, d[i, j 1] + 1} } L = listavida(); i = n; j = n; repeat if (d[i,j] == d[i-1,j-1]) { i = i-1; j = j-1; } else if (d[i,j] == d[i-1,j-1]+1) { L.pushFront( M, i, b[j])); i = i-1; j = j-1; } else if (d[i,j] == d[i-1,j]+1) { L.pushFront( S, i)); i = i-1 } else { L.pushFront( I, i, b[j]); j = j-1; } until ((i = 0) && (j = 0)) } D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 47 / 52

Distanţa între şiruri Analiza Teoremă Determinarea distanţei optime şi a secvenţei optime care transformă un şir α într-un şir β, α = β = n, se poate face în timpul O(n 2 ). D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 48 / 52

Distanţa între şiruri Variaţii alte operaţii: transpoziţia: schimbă ordinea a două caractere adiacente distanţa Levenshtein (de editare) sunt admise numai inserari, stergeri si inlocuiri toate operaţiile au costul 1 distanţa Hamming sunt admise numai înlocuirile costul operaţiei este 1 este finita ori de cate ori a = b distanta episodica (episode distance) sunt admise numai inserări costul operaţiei este 1 distanţa este sau b a sau D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 49 / 52

Distanţa între şiruri Variaţii distanţa data de cea mai lungă subsecvenţă sunt admise numai inserări şi ştergeri toate operaţiile au costul 1 Exemplu: α = amxbtycsnma şi β = bancxstymcxn α = amxbtycsnma bamxbtycsnma baxbtycsnma banxbtycsnma bancxbtycsnma bancxtycsnma bancxstycsnma bancxstymcsnma bancxstymcnma bancxstymcxnma bancxstymcxna bancxstymcxn = β (a,x,t,y,c,n) este subsecventa comună este cea mai lungă? D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 50 / 52

Distanţa între şiruri Variaţii matching aproximativ peste şiruri (aproximate string matching) problema: dat un text s de lungime n, un patern p de lungime m, o distanţa d() între şiruri şi un număr k, să se determine poziţiile j din textul s astfel încât să existe i cu d(p, s[i..j]) k distanţa Levenshtein: string matching with k differences distanţa Hamming: string matching with k missmatches distanţa episodica: episode matching (modeleaza cazul cand se cauta o secventa de evenimente intr-o perioada scurta de timp) cea mai lungă subsecvenţă comună: exact ce spune numele D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 51 / 52

Distanţa între şiruri Variaţii procesul de cautare pentru matching aproximativ: α = p, β = s trebuie să modificăm algoritmul a.î. orice poziţie j din text este startul potenţial al unei potriviri; asta se realizează prin setarea d[0, j] = 0 calculul matricei se face pe coloane iniţial: d[i, 0] = i pentru i = 0,..., m se procesează textul caracter cu caracter presupunem că la pasul curent se procesează s j coloana j este actualizată: d[i, j] = (p i == s j )? d[i 1, j 1] : 1 + min(d[i 1, j], d[i, j 1], d[i 1, j 1]) pozitiile j pentru care d[m, j] k sunt raportate de remarcat că numai ultimele două coloane sunt necesare D. Lucanu (FII - UAIC) Programare dinamică PA 2014/2015 52 / 52