curs 7
Download
Skip this Video
Download Presentation
Curs 7

Loading in 2 Seconds...

play fullscreen
1 / 20

Curs 7 - PowerPoint PPT Presentation


  • 239 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Curs 7' - audi


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

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.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 - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
curs 7
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
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 modelare
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 implementare
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 resurselor
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 resurselor1
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 resurselor2
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 resurselor3
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 digraf
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 continuare
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 warshall
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 formulare
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 solutie
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 cont
Problema rucsacului (varianta discreta): solutie (cont)
  • decizie: RUCSAC(j, X)  RUCSAC(j-1, ?)
  • relatia de recurenta:
problema rucsacului varianta discreta exemplu
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 i
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 algoritm
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 complexitate
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 polinomiali
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 polinomiali1
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))
ad