Dinamikong programming

From Systems analysis Wiki
Jump to navigation Jump to search

Dinamikong Programming (DP; Ingles: dynamic programming, DP) — ito ay isang paraan ng paglutas ng mga kumplikadong problema sa optimisasyon, batay sa paghahati ng orihinal na problema sa isang pagkakasunod-sunod ng mas simpleng mga subproblema[1][2]. Ang paraan ay inilalapat sa mga multi-hakbang na proseso ng paggawa ng desisyon, kung saan ang pinakamainam na solusyon sa buong problema ay maaaring itayo mula sa mga pinakamainam na solusyon ng mga subproblema nito.

Ang terminolohiya ay ipinakilala ng Amerikanong matematisyano si Richard Bellman noong dekada 1950[3]. Sa kontekstong ito, ang salitang "programming" ay ginagamit sa kahulugang "pagpaplano" o "paggawa ng pinakamainam na plano ng aksyon", at hindi pagsulat ng computer code[4].

Mga Pangunahing Katangian at Teorema

Ang naaangkop na paggamit ng dinamikong programming sa isang problema ay natutukoy sa pamamagitan ng pagkakaroon nito ng dalawang pundamental na katangian.

Prinsipyo ng Optimalidad ni Bellman

Ang sentral na konsepto ng paraan ay ang prinsipyo ng optimalidad ni Bellman (Ingles: Bellman's principle of optimality). Sinasabi nito: anuman ang paunang estado at paunang desisyon, ang mga kasunod na desisyon ay dapat bumuo ng pinakamainam na estratehiya kaugnay ng estadong nakuha bilang resulta ng unang desisyon[3].

Sa madaling salita, anumang bahagi ng pinakamainam na landas ay sa sarili nito ay pinakamainam. Ang katangiang ito ay nagpapahintulot na hatiin ang pangkalahatang problema sa isang pagkakasunod-sunod ng mas simpleng mga subproblema at resolbahin ang mga ito nang rekursibo.

Nagsasapatong mga Subproblema - Overlapping Subproblems

Ang isang problema ay nagtataglay ng katangian ng nagsasapatong mga subproblema (Ingles: overlapping subproblems) kung sa rekursibong paglutas nito, ang parehong mga subproblema ay paulit-ulit na lumalabas. Pinapayagan ng DP na maiwasan ang paulit-ulit na pagkalkula sa pamamagitan ng pag-iimbak ng mga solusyon ng mga subproblemang natagpuan na (ang pamamaraang ito ay tinatawag na memoization o tabulation), na makabuluhang nagpapataas ng kahusayan kumpara sa simpleng rekursibong paghahanap.

Ekwasyon ni Bellman

Mula sa prinsipyo ng optimalidad ay lumalabas ang pangunahing rekurensyang relasyon ng paraan — ang ekwasyon ni Bellman[1]. Iniuugnay nito ang "halaga" (pinakamainam na kita o gastos) ng kasalukuyang estado sa mga halaga ng mga kasunod na estado. Sa pangkalahatang anyo para sa isang determinado na multi-hakbang na proseso na may additive na objective function, ito ay may anyo:

Vk1(x)=maxyU(x){φk(x,y)+Vk(fk(x,y))}

kung saan:

  • k — numero ng hakbang (mula m hanggang 1);
  • x — estado ng sistema sa hakbang k1;
  • y — kontroladong desisyon na ginagawa sa hakbang k;
  • φk(x,y) — kita (o gastos) sa ika-k na hakbang;
  • fk(x,y) — function na nagtatakda ng bagong estado ng sistema;
  • Vk(s) — pinakamainam na halaga ng objective function para sa subproblemang nagsisimula sa hakbang k sa estado s.

Ang ekwasyon ay nireresolba nang sunud-sunod, karaniwan ay "mula sa dulo", na gumagalaw mula sa huling hakbang patungo sa una.

Mga Halimbawa ng Paggamit

  • Problema sa pinakamaikling landas sa graph: Ang problemang ito ay nagtataglay ng katangian ng pinakamainam na substructure, dahil ang anumang bahagi ng pinakamaikling landas ay sa sarili nito ay pinakamaikli. Ang mga algorithm nina Bellman-Ford at Floyd-Warshall ay mga klasikong halimbawa ng paggamit ng DP upang resolbahin ang problemang ito[5].
  • Problema sa mochila (knapsack): Problema sa pinakamainam na pagpuno ng mochila na may limitadong kapasidad gamit ang mga bagay na may iba't ibang halaga at timbang. Pinapayagan ng DP na resolbahin ang problemang ito sa pamamagitan ng sunud-sunod na pagsasaalang-alang ng mga bagay at pagkalkula sa bawat hakbang ng maximum na halaga para sa lahat ng posibleng natitirang kapasidad.
  • Problema sa pamamahagi ng likas-kulay: Pamamahagi ng limitadong likas-kulay (halimbawa, mga pamumuhunan) sa pagitan ng ilang mga proyekto upang mapakinabangan ang kabuuang epekto.

Mga Limitasyon

Ang pangunahing limitasyon ng paraan ay ang sumpa ng dimensyon (Ingles: curse of dimensionality) — isang termino na ipinakilala ni Bellman upang tukuyin ang exponensyal na paglaki ng bilang ng mga estado at, bilang resulta, ang computational complexity, kapag nadaragdagan ang bilang ng mga variable na naglalarawan sa estado ng sistema[6][7]. Nililimitahan nito ang praktikal na paggamit ng tumpak na DP para sa mga problema ng napakalaking dimensyon.

Mga Kaugnay na Konsepto

  • Pananaliksik sa operasyon
  • Teorya ng pinakamainam na kontrol
  • Proseso ng desisyon ni Markov (stochastic na pangkalahatang anyo)
  • Ekwasyon ni Hamilton–Jacobi–Bellman (katumbas para sa tuloy-tuloy na oras)

Mga Tala

[1] [2] [3] [4] [5] [6] [7] </references>

  1. 1.0 1.1 1.2 "Динамическое программирование". Большая российская энциклопедия. [1]
  2. 2.0 2.1 "Динамическое программирование". Википедия. [2]
  3. 3.0 3.1 3.2 Решетников А. Н., Коченков А. В., Пиров Д. М., Рябоконь Д. А. (2011). Динамическое программирование. Примеры применения. Учебное пособие, ННГУ им. Лобачевского (ВМиК). [3]
  4. 4.0 4.1 "Dynamic programming". Wikipedia. [4]
  5. 5.0 5.1 Bradley S. P., Hax A. C., Magnanti T. L. (1977). Applied Mathematical Programming. Addison-Wesley. [5]
  6. 6.0 6.1 "Проклятие размерности". Википедия. [6]
  7. 7.0 7.1 Jensen P. A. (2004). Dynamic Programming – Models. Operations Research Models and Methods, Univ. of Texas. [7]