Download

Curs 7






Advertisement
/ 20 []
Download Presentation
Comments
audi
From:
|  
(905) |   (0) |   (0)
Views: 23 | Added: 21-09-2012
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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -




Slide 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

Slide 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

Slide 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

Slide 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]]

Slide 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

Slide 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

Slide 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)

Slide 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

Slide 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

Slide 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

Slide 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

Slide 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

Slide 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

Slide 14

Problema rucsacului (varianta discreta): solutie (cont)

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

  • relatia de recurenta:

Slide 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

Slide 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))

Slide 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

Slide 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

Slide 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

Slide 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