Documente Academic
Documente Profesional
Documente Cultură
Programării
dinamice
Sumar
1. Competenţe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Descrierea generală a metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Studiu de caz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4. Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5. Aplicaţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6. Bibliografie şi webografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2
1. Competenţe
Competenţe generale
• elaborarea algoritmilor de rezolvare a problemelor
• implementarea algoritmilor într-un limbaj de programare
Competenţe specifice
• analiza problemei în scopul identificării metodei de programare
adecvate pentru rezolvarea problemei
• aplicarea creativă a metodelor de programare pentru rezolvarea unor
probleme intradisciplinare sau interdisciplinare, sau a unor probleme
cu aplicabilitate practică
• analiza comparativă a eficienţei diferitelor metode de rezolvare a
aceleiaşi probleme şi alegerea unui algoritm eficient de rezolvare a
unei probleme
• elaborarea unui algoritm de rezolvare a unor probleme din aria
curriculară a specializării
• utilizarea tehnicilor moderne în implementarea aplicaţiilor
3
2. Descrierea generală a metodei
Generalități
4
Descrierea generală a metodei
Suprapunerea Structură
subproblemelor optimală
- subproblemele nu sunt - problema poate fi descompusă
independente în subprobleme
- subproblemele se suprapun - soluția unei probleme de
(sunt imbricate) optimizare poate fi obținută
- soluția unei subprobleme se prin combinarea unor soluții
utilizează în construirea optimale ale subproblemelor
soluției altei subprobleme
5
Descrierea generală a metodei
Caracteristici
6
Descrierea generală a metodei
Abordări
7
Descrierea generală a metodei
Etape
8
3. Studiu de caz
Subșir crescător maximal
sir.in sir.out
9 5
6 3 1 2 7 8 4 9 5
9
Studiu de caz
Terminologie:
10
Studiu de caz
Date:
Intrări: n
a1,a2,a3,…,an
Ieșiri: lmax
unde L=(l1,l2,l3,…,ln)
L[i] memorează lungimea celui mai lung subșir crescător care începe la
poziția i, 1≤i≤n
lmax = max(L[i]), 1≤i≤n
11
Studiu de caz
Analiză:
12
Studiu de caz
Soluție:
A 6 3 1 2 7 8 4 9 5
4 5
8 9
7 8 9
2 7 8 9
1 2 7 8 9
3 7 8 9
6 7 8 9
A 6 3 1 2 7 8 4 9 5
L 4 4 5 4 3 2 2 1 1
1 2 3 4 5 6 7 8 9
13
Studiu de caz
Programul C++:
14
Studiu de caz
Temă:
15
Studiu de caz
Reconstruirea soluției:
sir.in sir.out
9 1 2 7 8 9
6 3 1 2 7 8 4 9 5
16
Studiu de caz
Date:
Intrări: n
a1,a2,a3,…,an
Ieșiri: aj1,aj2,aj3,…,ajk
unde aj1≤aj2≤aj3≤…≤ajk are numărul maxim de elemente, 1≤k≤n
17
Studiu de caz
Analiza:
18
Studiu de caz
Soluție:
A 6 3 1 2 7 8 4 9 5
4 5
8 9
7 8 9
2 7 8 9
1 2 7 8 9
3 7 8 9
6 7 8 9
A 6 3 1 2 7 8 4 9 5
L 4 4 5 4 3 2 2 1 1
1 2 3 4 5 6 7 8 9
19
Studiu de caz
Programul C++:
20
4. Exemple
Exemplul 1
Astfel, fiecare număr Fibonacci este suma celor două numere Fibonacci
anterioare, rezultând secvența:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
21
Exemple
Șirul lui Fibonacci
22
Exemple
Șirul lui Fibonacci
Calculul recursiv
- implementare ineficientă
- subproblemele se suprapun
- redundanță foarte mare a operațiilor
23
Exemple
Șirul lui Fibonacci
24
Exemple
Șirul lui Fibonacci
Eficiență
- eficiență d.p.d.v. al timpului de executare
- eficiență d.p.d.v. al memoriei utilizate
25
Exemple
Exemplul 2
26
Exemple
Triunghiul lui Pascal
Calculul recursiv
- implementare ineficientă
- subproblemele se suprapun
- aceleași valori se calculează de mai multe ori
27
Exemple
Triunghiul lui Pascal
28
5. Aplicaţii
Fişă de lucru
• Aplicaţii metoda programării dinamice
29
6. Bibliografie şi webografie
1. Miloşescu M., Informatică. Manual pentru clasa a XI, Editura
Didactică şi Pedagogică, Bucureşti, 2006
2. https://en.wikipedia.org/wiki/Dynamic_programming
3. https://ro.wikipedia.org/wiki/Triunghiul_lui_Pascal
4. https://en.wikipedia.org/wiki/Fibonacci_number
30