CURS 11: Programare dinamică - II - Algoritmica - Curs 12 1

Similar documents
Courses 12-13: Dynamic programming

Programarea Dinamica. (si alte chestii adiacente) Andrei Olariu

Pentru clasa a X-a Ştiinţele naturii-sem II

1.3. OPERAŢII CU NUMERE NEZECIMALE

O V E R V I E W. This study suggests grouping of numbers that do not divide the number

Sisteme cu logica fuzzy

Soluţii juniori., unde 1, 2

Utilizarea claselor de echivalenta in analiza asistata de calculator a sistemelor cu evenimente discrete

Divizibilitate în mulțimea numerelor naturale/întregi

Barem de notare clasa a V-a

UNITATEA DE ÎNVĂȚARE 3 Analiza algoritmilor

Teorema Reziduurilor şi Bucuria Integralelor Reale Prezentare de Alexandru Negrescu

array a[0..n-1] a[0] = v0,..., a[n-1] = vn-1

Utilizarea limbajului SQL pentru cereri OLAP. Mihaela Muntean 2015

Cercet¼ari operaţionale

ON THE QUATERNARY QUADRATIC DIOPHANTINE EQUATIONS (II) NICOLAE BRATU 1 ADINA CRETAN 2

Gradul de comutativitate al grupurilor finite 1

Inteligenta Artificiala

SIMULAREA DECIZIEI FINANCIARE

Ecuatii si inecuatii de gradul al doilea si reductibile la gradul al doilea. Ecuatii de gradul al doilea

FORMULELE LUI STIRLING, WALLIS, GAUSS ŞI APLICAŢII

GENERATOARE DE SEMNAL DIGITALE

Liste. Stive. Cozi SD 2017/2018

Procedeu de demonstrare a unor inegalităţi bazat pe inegalitatea lui Schur

Rezolvarea ecuaţiilor şi sistemelor de ecuaţii diferenţiale ordinare (II)

Habilitation Thesis. Periodic solutions of differential systems: existence, stability and bifurcations

Proiectarea Algoritmilor

METODE NUMERICE: Laborator #4 Eliminare gaussiană cu pivotare totală şi scalare. Algoritmul Thomas pentru rezolvarea sistemului 3-diagonal

Rădăcina pătrată a unei matrici reale de ordinul 2

Subiecte geometrie licenta matematica-informatica 4 ani

ALGORITMI DE OPTIMIZARE IN INGINERIE ELECTRICA. Sef lucrari ing. Alin-Iulian DOLAN

Metode clasice. Camelia Chira.

QUASI-ANALYTIC SOLUTIONS OF FIRST-ORDER PARTIAL DIFFERENTIAL EQUATIONS USING THE ACCURATE ELEMENT METHOD

A GENERALIZATION OF A CLASSICAL MONTE CARLO ALGORITHM TO ESTIMATE π

Legi de distribuţie (principalele distribuţii de probabilitate) Tudor Drugan

Cristalul cu N atomi = un sistem de N oscilatori de amplitudini mici;

APLICAŢII ALE FORMULELOR LUI NEWTON PENTRU POLINOAME SIMETRICE

Reactoare chimice cu curgere piston (ideala) cu amestecare completa de tip batch (autoclava)

Câteva rezultate de algebră comutativă

COMPARATIVE DISCUSSION ABOUT THE DETERMINING METHODS OF THE STRESSES IN PLANE SLABS

INEGALITĂŢI DE TIP HARNACK ŞI SOLUŢII POZITIVE MULTIPLE PENTRU PROBLEME NELINIARE

ȘIRURI (TABLOURI UNIDIMENSIONALE)

PRELUCRARI PE IMAGINI BINARE (ALB/NEGRU)

Sisteme cu logica fuzzy cu mai multe intrari (MISO)

Avem 6 tipuri de simboluri in logica predicatelor:

Despre AGC cuasigrupuri V. Izbaș

Alte rezultate din teoria codurilor

COMPARATIVE STUDY OF STRUCTURAL ANALYSIS APPLIED TO AGRICULTURAL MACHINES BODIES AND ACCOMPLISHED WITH SOLID WORKS AND AUTODESK INVENTOR PROGRAMS

Matematici speciale Variabile aleatoare discrete

Rezultate în Teoria Punctului Fix şi Procese Iterative cu Aplicaţii

Modelarea traficului in cadrul retelelor de radiotelefonie mobila

Definiţie. Pr(X a) - probabilitatea ca X să ia valoarea a ; Pr(a X b) - probabilitatea ca X să ia o valoare în intervalul a,b.

Reactoare chimice cu curgere piston (ideala) (Plug Flow Reactor PFR) cu amestecare completa (Mixed Flow Reactor MFR) de tip batch (autoclava)

REZUMATUL TEZEI DE DOCTORAT

Laborator 3. Backtracking iterativ

LIGHTNING MVP System

Teoreme de Analiză Matematică - I (teorema Weierstrass-Bolzano) 1

Logică și structuri discrete. Marius Minea 25 septembrie 2017

THE BEHAVIOUR OF ELASTOMERIC BEARINGS UNDER LOAD COMBINATIONS

INCLUZIUNI OPERATORIALE PRIN TEHNICA PUNCTULUI FIX ÎN SPAŢII METRICE VECTORIALE

GAZETA MATEMATICĂ SERIA A. ANUL XXXVI (CXV) Nr. 1 2/ 2018 ARTICOLE. Computing exponential and trigonometric functions of matrices in M 2 (C)

Arhitectura sistemelor de calcul

Mugur Acu OPERATORUL INTEGRAL LIBERA-PASCU ŞI PROPRIETĂŢILE ACESTUIA CU PRIVIRE LA FUNCŢIILE UNIFORM STELATE, CONVEXE, APROAPE CONVEXE ŞI

Anul I, Semestrul I 2017/2018

Ce este logica? Aristotel (IV î.e.n.) Gottfried Wilhelm Leibniz ( ) Visul lui Leibniz. raţionament

Teoreme de compresie-extensie de tip Krasnoselskii şi aplicaţii (Rezumatul tezei de doctorat)

Universitatea Politehnica Bucureşti Facultatea de Automatică şi Calculatoare Departamentul de Automatică şi Ingineria Sistemelor

Modelling the Steady State Characteristic of ph Neutralization Process: a Neuro-Fuzzy Approach

Metode numerice de aproximare. a zerourilor unor operatori. şi de rezolvare a inegalităţilor variaţionale. cu aplicaţii

Tablouri bidimensionale(matrici)

Agricultural Engineering

TWO BOUNDARY ELEMENT APPROACHES FOR THE COMPRESSIBLE FLUID FLOW AROUND A NON-LIFTING BODY

2D AND 3D PROCESSING OF THE INTERDEPENDENCE BETWEEN THE COMFORT MAIN INDICATORS

Graduări pe algebre de matrice

AN APPROACH TO THE NONLINEAR LOCAL PROBLEMS IN MECHANICAL STRUCTURES

Numere prime. O selecţie de probleme pentru gimnaziu

PROBLEME DIVERSE lecţie susţinută la lotul de 13 de Andrei ECKSTEIN Bucureşti, 25 mai 2015

C5 / Teoria Deciziilor. Metode bazate pe valoarea medie. (expected value) Metode multicriteriale de analiză a deciziilor.

STRUCTURAL PARASITIC CAPACITANCE REDUCTION TECHNIQUES IN PLANAR MAGNETIC INTEGRATED STRUCTURES

"IIITO-TEC 'NIKI" & EQUIPME

Ordin. pentru aprobarea structurii informaţiilor înscrise pe cardul naţional de asigurări sociale de sănătate

Arhivele Electronice Los Alamos arxiv:physics/ v2 [physics.ed-ph] 30 Apr 2000

FINDING THE TRACES OF A GIVEN PLANE: ANALYTICALLY AND THROUGH GRAPHICAL CONSTRUCTIONS

Calcul Numeric. Cursul Anca Ignat

INCERTITUDINEA DE MĂSURARE ÎN METROLOGIA LEGALĂ MEASUREMENT UNCERTAINTY IN LEGAL METROLOGY

Laborator 4. Rezolvarea ecuaţiilor diferenţiale în Matlab

Logică avansată pentru informatică Master Anul I, Semestrul I

Dynamic Response of Beams on Elastic Foundation with Axial Load

Probleme extremale pentru grafuri si retele de transport

Prelegerea 7. Sistemul de criptare AES. 7.1 Istoric

PROPRIETĂŢI GEOMETRICE ŞI ANALITICE ALE UNOR CLASE DE FUNCŢII UNIVALENTE

TEZA DE DOCTORAT. probleme de optimizare infinit dimensionale

SOI prin smart-cut. Caracterizarea TEM-HRTEM a defectelor structuale induse in Si prin hidrogenare in plasma.

Decision Making Under Uncertainty. Application In Inssurances

BABEŞ-BOLYAI UNIVERSITY CLUJ-NAPOCA FACULTY OF MATHEMATICS AND COMPUTER SCIENCE

INFLUENCE OF STRUCTURE COMPONENTS ON MACHINE TOOL ACCURACY

Aplicaţie SCADA. Simularea procesului de incalzire a unei pompe de caldura

A PHENOMENOLOGICAL UNIVERSALITIES APPROACH TO THE ANALYSIS OF PERINATAL GROWTH DATA

Teoria probabilit¼aţilor şi statistic¼a matematic¼a

Transcription:

CURS 11: Programare dinamică - II - Algoritmica - Curs 12 1

Structura Ce este programarea dinamică? Aplicație: problema discretă a rucsacului Funcții de memorie (memoizare) Aplicație: înmulțirea optimală a matricilor Aplicație: închiderea tranzitivă a unei relații binare Algoritmica - Curs 12 2

Ce este programarea dinamică? Este o tehnică de rezolvare a problemelor care pot fi descompuse în subprobleme care se suprapun poate fi aplicată problemelor ce au proprietatea de substructură optimă Particularitatea programării dinamice constă în faptul că rezolvă fiecare subproblemă o singură dată și stochează soluțiile subproblemelor într-o structură tabelară Algoritmica - Curs 12 3

Etapele principale: Ce este programarea dinamică? Analiza structurii unei soluții: se stabilește legatura dintre soluția problemei și soluțiile subproblemelor (este echivalentă cu verificarea proprietății de substructură optimă). In aceasta etapă se identifică problema generică și subproblemele corespunzătoare. Determinarea relației de recurență dintre valoarea (criteriul de optim) corespunzătoare soluției problemei și valorile corespunzătoare soluțiilor subproblemelor. Dezvoltarea (în manieră ascendentă) a relației de recurență și completarea structurii tabelare utile în construirea soluției. Construirea soluției (utilizând informațiile completate în etapa anterioară) Algoritmica - Curs 12 4

Aplicație: problema rucsacului Considerăm un set de n obiecte, fiecare fiind caracterizat de o dimensiune d și de o valoare v, și un rucsac de capacitate C. Să se selecteze un subset de obiecte astfel incat dimensiunea totală a obiectelor selectate să fie mai mica decât C iar valoarea totală a obiectelor selectate să fie maximă. Variante: (i) Varianta continuă (fracționara): pot fi selectate obiecte in întregime sau fracțiuni ale obiectelor. (ii) Varianta discretă(0-1): obiectele pot fi transferate doar în întregime Algoritmica - Curs 12 5

Aplicație: problema rucsacului Ipoteza (varianta simplificată): Capacitatea rucsacului (C ) și dimensiunile obiectelor d 1,,d n sunt numere naturale Problema rucsacului poate fi reformulată astfel: se caută (s 1,s 2,,s n ) cu s i in {0,1} astfel încât: s 1 d 1 + + s n d n <= C (restricție) s 1 v 1 + + s n v n este maximă (criteriu de optim) Obs. tehnica greedy poate fi aplicată și în acest caz însă NU garantează obținerea soluției optime Algoritmica - Curs 12 6

Aplicație: problema rucsacului Exemplu: n=3, C=5, d 1 =1, d 2 =2, d 3 =3 v 1 =6, v 2 =10, v 3 =12 Valoare relativa: vr i =v i /d i vr 1 =6, vr 2 =5, vr 3 =4 Ideea tehnicii greedy: Se sortează lista de obiecte descrescător după valoarea relativă (vr i =v i /d i ) Se selectează obiectele în această ordine până când nu mai încap elemente in rucsac Soluția greedy: (1,1,0) Valoarea totală: V=16 Obs: aceasta nu este soluția optimă; soluția (0,1,1) este mai bună întrucât V=22 Algoritmica - Curs 12 7

Aplicație: problema rucsacului 1. Analiza structurii unei soluții optime Fie P(i,j) problema generică a selecției din setul de obiecte {o 1,,o i } pentru a umple optimal un rucsac de capacitate j. Obs: P(n,C) este problema initiala Daca i<n, j<c atunci P(i,j) este o subproblema a lui P(n,C) Fie s(i,j) o soluție optima a problemei P(i,j). Sunt posibile două situații: s i =1 (obiectul o i este selectat) => se ajunge la subproblema P(i-1,jd i ) și dacă s(i,j) este optimă pt pb. P(i,j) atunci și s(i-1,j-d i ) trebuie să fie soluție optimă pt subproblema P(i-1,j-d i ) s i =0 (obiectul o i nu este selectat) => se ajunge la subproblema P(i- 1,j) și dacă s(i,j) este optimă pt pb. P(i,j) atunci și s(i-1,j) trebuie să fie solutie optimă pentru subproblemă Deci problema rucsacului are proprietatea de substructură optimă Algoritmica - Curs 12 8

Aplicație: problema rucsacului 2. Stabilirea relației de recurență Fie V(i,j) valoarea corespunzătoare soluției a problemei P(i,j) 0 dacă i=0 sau j=0 (multimea de obiecte este vida sau capacitatea disponibilă în rucsac e 0) V(i,j) = V(i-1,j) daca d i >j sau V(i-1,j)>V(i-1,j-d i )+ v i (obiectul i nu incape in rucsac sau prin selectia lui s-ar V(i-1,j-d i )+v i obtine o solutie mai putin buna decat daca obiectul nu s-ar selecta) in celelalte cazuri Algoritmica - Curs 12 9

Aplicație: problema rucsacului Relația de recurență poate fi descrisă și astfel: 0 daca i=0 sau j=0 V(i,j) = V(i-1,j) daca d i >j max{v(i-1,j), V(i-1,j-d i )+ v i } daca d i <=j Obs: Pentru problema P(n,C), tabelul bidimensional V are (n+1) linii și (C+1) coloane V(n,C) este valoarea corespunzătoare soluției optime Algoritmica - Curs 12 10

Aplicație: problema rucsacului Exemplu: V 0 daca i=0 sau j=0 V(i,j) = V(i-1,j) daca d i >j max{v(i-1,j), V(i-1,j-d i )+ v i } if d i <=j 0 1 2 3 4 5 0 0 0 0 0 0 0 1 0 6 6 6 6 6 2 0 6 10 16 16 16 3 0 6 10 16 18 22 d: 1 2 3 v: 6 10 12 Algoritmica - Curs 12 11

Aplicație: problema rucsacului 3. Dezvoltarea relației de recurenta 0 daca i=0 sau j=0 V(i,j) = V(i-1,j) if d i >j i=0..n, j=0..c max{v(i-1,j), V(i-1,j-d i )+ v i } if d i <=j Algoritm: computev (v[1..n],d[1..n],c) FOR i 0,n DO V[i,0] 0 ENDFOR FOR j 1,C DO V[0,j] 0 ENDFOR FOR i 1,n DO FOR j:=1,c DO IF j<d[i] THEN V[i,j] V[i-1,j] ELSE V[i,j] max(v[i-1,j],v[i-1,j-d[i]]+v[i]) ENDIF ENDFOR ENDFOR RETURN V[0..n,0..C] Algoritmica - Curs 12 12

Aplicație: problema rucsacului 4. Construirea solutiei Exemplu: 0 1 2 3 4 5 0 0 0 0 0 0 0 1 0 6 6 6 6 6 2 0 6 10 16 16 16 3 0 6 10 16 18 22 Etape: Compară V[3,5] cu V[2,5]. Intrucât valorile sunt diferite inseamnă că o3 este selectat Se trece la V[2,5-d 3 ]=V[2,2]=10 și se compară cu V[1,2]=6. Intrucât valorile sunt diferite inseamnă că o 2 este de asemenea selectat Se trece la V[1,2-d 2 ]=V[1,0]=0. Intrucât s-a ajuns la 0 rezultă că s-a ajuns la soluție Soluția obținută este{o 2,o 3 } adică s=(0,1,1) Obs: se presupune ca cel puțin un obiect are dimensiunea mai mică decât capacitatea rucsacului Algoritmica - Curs 12 13

Aplicație: problema rucsacului 4. Construirea soluției Algoritm: Exemplu: 0 1 2 3 4 5 0 0 0 0 0 0 0 1 0 6 6 6 6 6 2 0 6 10 16 16 16 3 0 6 10 16 18 22 Construct(V[0..n,0..C],d[1..n]) FOR i 1,n DO s[i] 0 ENDFOR i n; j C WHILE V[i,j]>0 DO IF V[i,j]=V[i-1,j] THEN i i-1 ELSE s[i] 1 j j-d[i] i i-1 ENDIF ENDWHILE RETURN s[1..n] Algoritmica - Curs 12 14

Aplicație: problema rucsacului Obs 0 1 2 3 4 5 0 0 0 0 0 0 0 1 0 6 6 6 6 6 2 0 6 10 16 16 16 Pt a construi soluția sunt suficiente doar valorile marcate Numărul calculelor poate fi redus dacă se calculează doar valorile necesare construcției solutiei Acest lucru se poate realiza prin îmbinarea abordării descendente cu cea ascendentă (cu reținerea valorilor calculate) 3 0 6 10 16 18 22 Aceasta este denumita tehnica memoizării (engleza: memoization) Algoritmica - Curs 12 15

Tehnica memoizării Scop: se rezolva doar subproblemele a căror soluție intervine in soluția problemei initiale (in plus o subproblemă este rezolvată o singură dată) Idee: se combină abordarea descendentă (top down) cu cea ascendentă (bottom up) Motivatie: Abordarea descendentă clasică rezolvă doar subproblemele ce contribuie la solutia problemei insa o subproblema este rezolvata de cate ori apare (din acest motiv implementarea recursiva este in general ineficienta) Abordarea ascendenta clasica rezolva toate subproblemele (chiar si cele care nu contribuie la solutia optima) insa fiecare problema este rezolvata o singura data Tehnica memoizarii rezolva o singura data doar subproblemele ce contribuie la solutia problemei Algoritmica - Curs 12 16

Etape in aplicarea tehnicii memoizarii: Se initializeaza tabelul cu o valoare virtuala (aceasta valoare trebuie sa fie diferita de orice valoare s-ar obtine prin dezvoltarea relatiei de recurenta) Se calculeaza valoarea tinta (ex: V[n,C]) in maniera recursiva insa toate valorile intermediare se stocheaza si se utilizeaza atunci cand e necesar Obs: v[1..n], d[1..n] si V[0..n,0..C] sunt variabile globale Apel: comp(n,c) Tehnica memoizării Initializare cu valoarea virtuala: FOR i 0,n DO FOR j 0,C DO V[i,j] -1 ENDFOR ENDFOR Implementare recursiva: comp(i,j) IF i=0 OR j=0 THEN V[i,j] 0; RETURN V[i,j] ELSE IF V[i,j]<>-1 THEN RETURN V[i,j] ELSE IF j<d[i] THEN V[i,j] comp(i-1,j) ELSE V[i,j] max(comp(i-1,j),comp(i-1,j-d[i])+v[i]) ENDIF RETURN V[i,j] ENDIF ENDIF Algoritmica - Curs 12 17

Aplicație: înmulțirea optimală a matricilor Se dau n matrici A 1, A 2,, A n si se urmărește calculul produsului A 1 *A 2 * * A n. Să se determine o modalitate de grupare a matricilor factor astfel încât numărul produselor de elemente sa fie minim Obs: 1. Dimensiunile matricilor sunt compatibile. Presupunem că dimensiunile matricilor sunt: p 0,p 1,,p n Matricea A i are p i-1 linii si p i coloane 2. Diferitele grupări ale factorilor conduc la același rezultat (intrucât înmulțirea matricilor este asociativă) insă pot conduce la valori diferite ale numărului de inmulțiri de elemente Algoritmica - Curs 12 18

Aplicație: înmulțirea optimală a matricilor Exemplu: Fie A 1, A 2 si A 3 trei matrici având dimensiunile: (2,20), (20,5) si (5,10) p 0 =2 p 1 =20 p 2 =5 p 3 =10 Considerăm următoarele grupări: (A 1 *A 2 )*A 3 - aceasta necesita (2*20*5)+2*5*10=300 inmultiri scalare (la nivel de element) A 1 *(A 2 *A 3 ) aceasta necesita (20*5*10)+2*20*10=1400 inmultiri scalare Obs: pentru valori mari ale lui n numarul de grupari posibile poate fi foarte mare Algoritmica - Curs 12 19

Aplicatie: inmultirea optimala a matricilor Gruparea factorilor are, in cazul general, un caracter ierarhic: Primul nivel al gruparii corespunde ultimei inmultiri efectuate Celelalte nivele corespund gruparilor factorilor ramasi Gruparea este identificata prin pozitia ultimei inmultiri. De exemplu gruparea (A 1 * *A k )*(A k+1 * *A n ) este specificata prin indicele de grupare k La primul nivel exista (n-1) grupari posibile (1<=k<n-1) dar exista o serie de grupari posibile ale fiecarui factor (A 1 * *A k ) respectiv (A k+1 * *A n ) Algoritmica - Curs 12 20

Aplicatie: inmultirea optimala a matricilor Numarul de grupari pentru un produs cu n factori este: K(n)= 1 n<=2 K(1)*K(n-1)+ + K(i)*K(n-i)+ +K(n-1)*K(1) n>2 Obs: K(n)=C(n-1) unde C(0),C(1) sunt numerele lui Catalan: C(n)=Comb(2n, n)/(n+1) Ordinul de marime al lui K(n) este 4 n-1 /(n-1) 3/2 Tehnica fortei brute este inaplicabila! Algoritmica - Curs 12 21

Aplicatie: inmultirea optimala a matricilor 1. Analiza structurii unei solutii optime Fie A(i..j) produsul A i *A i+1 * *A j (i<=j) Daca produsul optim corespunde gruparii la pozitia k (i<=k<j) atunci calculul lui A(i..k) si al lui A(k+1..j) ar trebui sa fie de asemenea optim (altfel calculul lui A(i..j) nu ar fi optim) Deci este satisfacuta proprietatea de substructura optima Algoritmica - Curs 12 22

Aplicație: înmulțirea optimală a matricilor 2. Identificarea relației de recurență Fie c(i,j) numărul de înmulțiri scalare necesare pentru a calcula A(i..j). c(i,j)= 0 daca i=j min{c(i,k)+c(k+1,j)+p i-1 p k p j i<=k<j} daca i<j Costul calculului A(i..k) Costul calculului A(k+1..j) Costul inmultirii lui A(i..j) cu A(k+1..j) Toate valorile posibile pentru indicele de grupare k (i<=k<j) sunt analizate si se alege cea mai bună Algoritmica - Curs 12 23

Aplicație: înmulțirea optimală a matricilor 3. Dezvoltarea relației de recurență c(i,j)= Exemplu p0=2 p1=20 p2=5 p3=10 0 if i=j min{c(i,k)+c(k+1,j) +p i-1 p k p j i<=k<j}, if i<j Doar partea superior triunghiulară a matricii este utilizată 1 2 3 1 0 200 300 2-0 1000 3 - - 0 Elementele sunt calculate incepând de la diagonala (j-i=0), după care se calculează elementele ai căror indici satisfac j-i=1 samd Algoritmica - Curs 12 24

Aplicație: înmulțirea optimală a matricilor 3. Dezvoltarea relației de recurență c(i,j)= 0 if i=j min{c(i,k)+c(k+1,j) +p i-1 p k p j i<=k<j}, if i<j Fie q=j-i. Tabelul de completeazaăpentru q variind de la 1 la n-1 Pe parcursul calculului lui c indicele grupării este stocat în structura s. s(i,j) = indicele de grupare corespunzător calculului optimal al lui A(i..j) Algoritm Compute(p[0..n]) FOR i 1,n DO c[i,i] 0 ENDFOR FOR q 1,n-1 DO FOR i 1,n-q DO j i+q c[i,j] c[i,i]+c[i+1,j]+p[i-1]*p[i]*p[j] s[i,j] i FOR k i+1,j-1 DO r c[i,k]+c[k+1,j]+p[i-1]*p[k]*p[j] IF c[i,j]>r THEN c[i,j] r s[i,j] k ENDIF ENDFOR ENDFOR ENDFOR RETURN c[1..n,1..n],s[1..n,1..n] Algoritmica - Curs 12 25

Aplicație: înmulțirea optimală a matricilor Analiza complexității: Dimensiunea problemei: n Operație dominantă: inmultire scalara Ordin complexitate: θ(n 3 ) Algoritm Compute(p[0..n]) FOR i 1,n DO c[i,i] 0 ENDFOR FOR q 1,n-1 DO FOR i 1,n-q DO j i+q c[i,j] c[i,i]+c[i+1,j]+p[i-1]*p[i]*p[j] s[i,j] i FOR k i+1,j-1 DO r c[i,k]+c[k+1,j]+p[i-1]*p[k]*p[j] IF c[i,j]>r THEN c[i,j] r s[i,j] k ENDIF ENDFOR ENDFOR ENDFOR RETURN c[1..n,1..n],s[1..n,1..n] Algoritmica - Curs 12 26

Aplicație: înmulțirea optimală a matricilor 4. Construirea solutiei Variante ale problemei: Determinarea numarului minim de inmultiri scalare Solutie: este data de c(1,n) Calcul A(1..n) in maniera optimala Solutie: algoritm recursiv (opt_mul) Identificarea gruparii optimale a factorilor (plasarea parantezelor) Solutie: algoritm recursiv (opt_group) Algoritmica - Curs 12 27

Aplicatie: inmultirea optimala a matricilor Calculul lui A(1..n) in maniera optimala Ipoteze: A[1..n] un tablou global avand elemente de tip matrice (A[i] este matricea A i ) s[1..n,1..n] este o variabila globala iar classic_mul este o functie pentru calculul produsului a doua matrici opt_mul(i,j) IF i=j THEN RETURN A[i] ELSE X opt_mul(i,s[i,j]) Y opt_mul(s[i,j]+1,j) Z classic_mul(x,y) RETURN Z ENDIF Algoritmica - Curs 12 28

Aplicatie: inmultirea optimala a matricilor Afisarea gruparii optimale (pozitiile unde se plaseaza parantezele) opt_group(i,j) IF i<>j THEN opt_group(i,s[i,j]) WRITE i-1, s[i,j], j opt_group(s[i,j]+1,j) ENDIF Algoritmica - Curs 12 29

Aplicatie: inchiderea tranzitiva a unei relatii binare Fie R {1,2,,n}x{1,2,,n} o relatie binara. Inchiderea sa tranzitiva este cea mai mica (in sensul relatiei de incluziune) relatie R* care este tranzitiva si include pe R R* are urmatoarele proprietati: daca i si j sunt din {1,,n} si exista i 1,i 2,.i m in {1,2,,n} astfel incat (i 1,i 2 ) in R,., (i m-1,i m ) in R i 1 =i si i m =j atunci (i,j) in R Exemple: a) R={(1,2),(2,3)} R*={(1,2),(2,3),(1,3)} b) R={(1,2),(2,3),(3,1)} R*={(1,2),(2,3),(3,1),(1,3),(1,1),(2,1),(2,2),(3,2),(3,3)} Algoritmica - Curs 12 30

Aplicatie: inchiderea tranzitiva a unei relatii binare R* este construita succesiv pornind de la R 0 =R si utilizand R 1, R 2, R n =R* Relatiile intermediare R k (k=1..n) sunt definite prin: (i,j) in R k < = > (i,j) in R k-1 sau (i,k) R k-1 si (k,j) in R k-1 Exemplu: R={(1,2),(2,3)} R 1 =R R 2 ={(1,2),(2,3),(1,3)} R*=R 3 ={(1,2),(2,3),(1,3)} Algoritmica - Curs 12 31

Aplicatie: inchiderea tranzitiva a unei relatii binare Reprezentarea relatiilor binare: Presupunem ca o relatie binara este specificata printr-o matrice n*n ale carei elemente sunt definite astfel: r(i,j) = 1 daca (i,j) in R 0 daca (i,j) nu apartine lui R Exemplu: R ={(1,2),(2,3)} 0 1 0 r= 0 0 1 0 0 0 Algoritmica - Curs 12 32

Aplicatie: inchiderea tranzitiva a unei relatii binare Relatia de recurenta pentru matrici: r k (i,j) = 1 if r k-1 (i,j)=1 OR (r k-1 (i,k)=1 AND r k-1 (k,j)=1) 0 altfel Exemplu: 0 1 0 0 1 0 0 1 1 0 1 1 r= 0 0 1 r1= 0 0 1 r2= 0 0 1 r3= 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Algoritmica - Curs 12 33

Aplicatie: inchiderea tranzitiva a unei relatii binare Algoritm Warshall Dezvolta relatia de recurenta folosind doua matrici aditionale r1 si r2 Closure(r[1..n,1..n]) r2[1..n,1..n] r[1..n,1..n] FOR k 1,n DO r1[1..n,1..n] r2[1..n,1..n] FOR i 1,n DO FOR j 1,n DO IF r1[i,j]=0 OR r1[i,k]=1 AND r1[k,j]=1 THEN r2[i,j] 1 ELSE r2[i,j] 0 ENDIF ENDFOR ENDFOR ENDFOR RETURN r2[1..n,1..n] Algoritmica - Curs 12 34

Cursul urmator va fi despre Backtracking si aplicatii Algoritmica - Curs 12 35