Download

Curs 7






Advertisement
/ 20 []
Download Presentation
Comments
audi
From:
|  
(1160) |   (0) |   (0)
Views: 30 | Added:
Rate Presentation: 0 0
Description:
Curs 7. Paradigma Programare dinamica Prezentarea generala a paradigmei Studii de caz alocarea resurselor drumurile minime intr-un digraf rucsac 0/1 distanta intre siruri. Programare dinamica - ingrediente. probleme de optim
Curs 7

An Image/Link below is provided (as is) to

Download Policy: Content on the Website is provided to you AS IS for your information and personal use only and may not be sold or licensed nor shared on other sites. SlideServe reserves the right to change this policy at anytime. While downloading, If for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.











- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -




Curs 7Slide 1

Curs 7

  • Paradigma Programare dinamica

    • Prezentarea generala a paradigmei

    • Studii de caz

      • alocarea resurselor

      • drumurile minime intr-un digraf

      • rucsac 0/1

      • distanta intre siruri

Programare dinamica ingredienteSlide 2

Programare dinamica - ingrediente

  • probleme de optim

  • definirea subproblemei (stare) si asocierea functii obiectiv pentru subproblema

  • definirea unei relatii de tranzitie intre stari (decizie)

  • politica = secventa de decizii

  • aplicarea Principiului de Optim pentru obtine relatia de recurenta

    Principiul de Optim (PO): o subpolitica a unei politici optimale este la rindul ei optimala

  • calculul recurentei rezolvind subproblemele de la mic la mare si memorind valorile date de relatia de recurenta intr-un tablou

  • extragerea solutiei optime din tablou

Exemplu retea triunghiulara de numere modelareSlide 3

Exemplu: retea triunghiulara de numere: modelare

a0

  • functia obiectiv: maxdD lg(d)

  • stare: DMR(i) = subreteaua cu virful in ai

    • val. asociata: i

    • functia asociata: f(i) = maxdD(i) lg(d)

    • decizii posibile: DMR(i)  DMR(stg(i)),

      DMR(i)  DMR(drp(i))

    • recurenta obtinuta: f(i) = max(f(stg(i)), f(drp(i))) + ai

a1

a2

a3

a4

a5

a6

a7

a8

a9

Exemplu retea triunghiulara de puncte implementareSlide 4

Exemplu: retea triunghiulara de puncte: implementare

  • Tine minte! Rezolva subproblemele de la mic la mare si memoreaza valorile date de relatia de recurenta intr-un tablou

    • valorile functiei f[] vor fi calculate in ordinea

      f[n-1], f[n-2], ..., f[2], f[1], f[0]

      Atentie! Transformarea recurentei in recursie duce la solutii costisitoare (subprobleme rezolvate de mai multe ori).

  • extragerea solutiei optime din tabel

    • initial: sol[0] = 0

    • pas curent:

      • daca f[sol[i]] = f[stg[sol[i]]]+a[sol[i]]

        atunci sol[i+1] = stg[sol[i]]

        altfel sol[i+1] = drp[sol[i]]

Alocarea resurselorSlide 5

Alocarea resurselor

  • Pentru realizarea a p proiecte sunt disponibile r resurse.

  • Alocarea a j resurse la proiectul i produce un profit c[i,j].

  • Problema consta in alocarea celor r resurse astfel incat profitul total sa fie maxim.

c[2,0]

c[2,1]

c[3,2]

c[1,0]

c[1,1]

c[2,0]

c[3,1]

s

t

c[2,2]

c[2,1]

c[1,2]

c[3,0]

c[2,0]

proiectul 3

proiectul 1

proiectul 2

Alocarea resurselor1Slide 6

Alocarea resurselor

  • Intrare:

    • Digraf etajat G = (V, E),

      • V = V1  V2  … Vp  Vp+1

      • Vi  Vj = Ø

      • V1 = {s}. Vp+1 = {t}

      • daca un arc are sursa in Vi atunci are destinatia in Vi+1

    • functie de profit c : A  R

  • Iesire: un drum de la s la t de profit maxim

Alocarea resurselor2Slide 7

Alocarea resurselor

  • X  V

  • stare: DODE(j) = problema determinarii drumurilor de la j la t

  • V = {0, 1, …, n-1}

  • D[i,j] = drumul optim la j  Vi la t

  • ValOpt[i,j] valoarea acestui drum

  • decizie: DODE(j)  DODE(k)

  • aplicam PO si obtinem

    ValOpt[i, j] = c[j, k] + ValOpt[i+1, k]

  • de unde rezulta recurenta:

    ValOpt[p+1, n-1] = 0

    ValOpt[i, j] = optim{c[j, k] + ValOpt[i+1, k] | k  Vi+1, (j,k)  A}

  • ordinea de rezolvare a subproblemelor:

    DODE(Vp+1), DODE(VpVp+1), …, DODE(V)

Alocarea resurselor3Slide 8

Alocarea resurselor

function alocRes(G, ValOpt, D)

for j  0 to G.n-2 do

ValOpt[j] 

ValOpt[G.n-1]  0

for k  G.n-1 downto 1 do

q  G.a[k]

while (q  NULL) do

j  q->varf

if (ValOpt[j] < ValOpt[k] + q->c)

then ValOpt[j]  ValOpt[k] + q->c

S[j]  k

q  q->succ

D[0]  0

D[p]  n-1

for i  1 to p-1 do

D[i]  S[D[i-1]]

return ValOpt[0]

end

Drumuri minime intr un digrafSlide 9

Drumuri minime intr-un digraf

  • Problema

    • instanta:

      • D = (V, A, lg), lg : A  R

      • lg[i, i] = 0, lg[i, j] =  daca (i,j)  A

      • lungime drum =  lungimilor arcelor de pe drum

    • iesire:

      • pentru orice pereche (i,j) lungimea celui mai scurt drum de la i la j

  • Modelul matematic

    • stare: DMD(X) – drumuri minime cu virfuri intermediare in X

      • functia asociata: LX[i, j] = lung. drumului minim de la i la j cu virfuri intermediare in X

Drumuri minime intr un digraf continuareSlide 10

Drumuri minime intr-un digraf (continuare)

  • decizie: DMD(X{k})  DMD(X)

  • relatia de recurenta:

    LX {k}[i, j] = min{LX[i, j], LX[i, k] + LX[k, j]}

    L[i, j] = lg[i, j]

  • politica optima: DMD(), DMD({0}), DMD({0,1}), ..., DMD({0,1, ...,n-1})

  • notatie: Lk[i, j] = L{0,1,...,k-1}[i, j]

    Lk[i, j] = min{Lk-1[i, j], Lk-1[i, k] + Lk-1[k, j]}

  • matricele Lk sint calculate in ordinea L0, L1,…, Ln

Drumuri minime intr un digraf algoritm floyd warshallSlide 11

Drumuri minime intr-un digraf: algoritm (Floyd-Warshall)

procedure DMD(D, L)

begin

for all [i,j] do

if (i,j) A)

then L[i,j]  lg[i,j]

else L[i,j]  

if (i = j) then L[i,j] = 0;

for k  1 to n do

for all [i,j] do

temp  L[i,k] + L[k,j]

if (L[i,j] > temp)

then L[i,j]  temp

if (i=j and L[i,i] < 0)

then throw “ERR:circuit negativ”

end

Problema rucsacului varianta discreta formulareSlide 12

Problema rucsacului (varianta discreta): formulare

  • instanta:

    • n obiecte 0, 1, ..., n-1 de dimensiuni (greutati) w0, w1, ..., wn-1

    • un rucsac de capacitate M

    • un obiect i poate fi introdus in rucsac complet (xi = 1) sau de loc (xi=0)

    • introducerea in rucsac a obiectului i aduce un profit pi

    • profitul total adus de alegerile x0, ..., xn-1 este i=0,n-1 xipi

  • iesire:

    • o alegere pentru care profitul adus este maxim

Problema rucsacului varianta discreta solutieSlide 13

Problema rucsacului (varianta discreta): solutie

  • modelul matematic

    • stare: RUCSAC(j, X)

      • functia obiectiv:

        max i=0,j-1 xipi

      • restrictii:

        (i)xi  {0,1}

        i=0,j-1 xiwi  X

        X  Z, (i)wi ,pi  Z

    • functia asociata unei stari: fj(X) = max i=0,j-1 xipi

Problema rucsacului varianta discreta solutie contSlide 14

Problema rucsacului (varianta discreta): solutie (cont)

  • decizie: RUCSAC(j, X)  RUCSAC(j-1, ?)

  • relatia de recurenta:

Problema rucsacului varianta discreta exempluSlide 15

Problema rucsacului (varianta discreta): exemplu

X

0

1

2

3

4

5

6

7

8

9

10

f0(X)

0

0

0

0

0

0

0

0

0

0

f1(X)

0

0

0

10

10

10

10

10

10

10

f2(X)

0

0

0

10

10

30

30

30

40

40

f3(X)

0

0

0

10

10

30

30

30

40

40

  • M = 10, p = (10, 30, 20), w = (3, 5, 6)

0

10

40

40

x2 = 0

x1 = 1

x0 = 1

Problema rucsacului varianta discreta functiile f iSlide 16

Problema rucsacului (varianta discreta): functiile fi

  • fi este o functie in scara

  • graficul lui fi poate fi reprezentat prin multimea punctelor de salt Si

  • graficul lui gi-1(X) = fi-1(x-wi-1)+pi-1 este o translatie a lui Si-1 ; notam (Si-1)

  • graficul lui fi = max(fi-1, gi-1) se obtine prin interclasarea graficelor Si-1 si (Si-1);

    notam (Si-1,(Si-1))

Problema rucsacului varianta discreta algoritmSlide 17

Problema rucsacului (varianta discreta): algoritm

procedure Rucsac(n, p, w)

begin

/* calculeaza valoarea optima */

S0  {(0,0)}

for i  1 to n do

Si (Si-1,(Si-1))

/* determina alegerea optima */

calc. (U,V) a.i. Xj= max{Xi|(Xi,Yi) Sn, Xi  M}

for i  n-1 downto 0 do

if ((U,V) Sithen xi+1 = 0

else xi+1 = 1;

(U,V) = (U-wi+1,V-pi+1)

end

Problema rucsacului varianta discreta complexitateSlide 18

Problema rucsacului (varianta discreta): complexitate

  • calculullui Si din Si-1 se face in timpul |Si|

  • punctele (Xj,Yj)din Sisatisfac:

    • 0 Xj M

    • 0 Yjkpk nmaxkpk

    • rezulta

      |Si|  min(M, nmaxkpk) nmax(p0, p1,…, pn-1,M)

  • rezulta ca Sn-1 se calculeaza in timpul

    O(n2max(p0, p1,…, pn-1,M))

  • calcululsolutiei se face in timpul O(n)

  • rezulta ca timpul de executie a algoritmuluieste

    O(n2max(p0, p1,…, pn-1,M))

  • spatiul: |S0| + |S1| + … + |Sn-1| = O(n2max(p0, p1,…, pn-1,M))

  • dacamax(p0, p1,…, pn-1,M) > 2natuncitimpul de executie a algoritmuluieste exponential

  • algoritmuleste pseudo-polinomial

Algoritmi pseudo polinomialiSlide 19

Algoritmi pseudo-polinomiali

  • consideram probleme pentru care intrarea pentru P este data ca o secventa de numere intregi

  • presupunem ca intrarea este codificata peste alfabetul {0,1,#}

    • daca x = (x0, x1,…, xn-1), atunci

      cod(x) = cod(x0)#cod(x1)#…#cod(xn-1), cod(x1)  {0,1}*

    • max(x) = max{x0, x1,…, xn-1}

  • un algoritm A pentru P este pseudo-polinomial (relativ la timpul de executie) daca exista un polinom p(X,Y) de doua variabile astfel incat timpul de executie a lui A este

    TA(x) = O(p(|cod(x)|, max(x)))

  • daca q(X) este un polinom astfel incat max(x)  q(|cod(x)|), atunci TA(x) este marginit de un polinom

Algoritmi pseudo polinomiali1Slide 20

Algoritmi pseudo-polinomiali

s  0

i  0

while (i < m) do

i i+1

s  s + i

  • nr. de bitipentrureprez. lui m este

  • n = [log m] + 1

  • luam m = 2n-1

  • presupunem ca op. i < m sii i+1 se executafiecare in timpul log i

    • prespunem ca op. s  s + ise executa in timpul log s

    • rezulta un timp de calcul

    • TA(m) = Θ(m log m) = Θ(n 2n)

    • algoritmuleste pseudo-polinomial

      • p(X,Y) = XY

      • TA(m) = Θ (p(n, m))


Copyright © 2014 SlideServe. All rights reserved | Powered By DigitalOfficePro