Documente Academic
Documente Profesional
Documente Cultură
solutiile subproblemelor.
2
Conceptul de programare dinamica
Ideea de baza:
ale subproblemelor
Se rezolva de jos in sus, prin construirea unui tabel al
3
Problema rucsacului (recapitulare)
Data fiind o multime de obiecte, sa se aleaga acelea care
2 3 6
3 5 5
4
Problema rucsacului
Exista doua versiuni ale acesteu probleme:
0-1
Fractionala
programarii dinamice
Fractionala: obiectele se pot fractiona; se rezolva cu
algoritmul greedy.
5
Problema rucsacului 0-1
Fie un rucsac cu o capacitate W si o multime S ce consta in n
obiecte.
sunt intregi)
costul?
6
7
Cu alte cuvinte, problema pe care trebuie sa o rezolvam este
fie deloc.
8
Abordare brute-force
Sa rezolvam mai intai problema folosind un algoritm direct
posibilitati.
Parcurgem toate combinatiile posibile si gasim valoarea maxima
9
Exista o metoda mai buna?
10
Definirea unei subprobleme
Daca problema initiala are obiectele 1...n, atunci o
subprobleme Sk?
11
Definirea unei subprobleme
Deci, definitia unei subprobleme este gresita.
12
Formula recursiva pentru subprobleme
w este
Cea mai buna submultime Sk-1 care are greutatea w
Cea mai buna submultime Sk-1 care are greutatea w-wk plus obiectul k
13
Cea mai buna submultime Sk care are greutatea totala w, fie
14
Algoritm Rucsac 0-1
15
Timp de rulare
16
Exemplu
Sa rulam algoritmul pe urmatoarele date:
n = 4 # obiecte
W = 5 (greutate maxima)
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Cum gasim efectiv obiectele corecte?
Toate informatiile de care avem nevoie se gasesc in tabel.
Fie i = n si k=W
If B[i,k]!=B[i-1,k]
Marcam obiectul i ca fiind in rucsac
i = i-1, k = k-wi
Else
i= i-1
35
36
37
38
39
40
41
42
Pe saptamana viitoare!
43