Pemrograman Dinamis

From Systems analysis Wiki
Jump to navigation Jump to search

Pemrograman Dinamis (PD; Ingg. dynamic programming, DP) — adalah metode penyelesaian masalah optimasi yang kompleks, berdasarkan pemecahan masalah asal menjadi serangkaian submasalah yang lebih sederhana[1][2]. Metode ini diterapkan pada proses pengambilan keputusan bertahap, di mana solusi optimal dari keseluruhan masalah dapat dibangun dari solusi optimal submasalah-submasalahnya.

Istilah ini diperkenalkan oleh matematikawan Amerika Richard Bellman pada tahun 1950-an[3]. Dalam konteks ini, kata «pemrograman» digunakan dalam arti «perencanaan» atau «penyusunan rencana tindakan yang optimal», bukan penulisan kode komputer[4].

Sifat-Sifat dan Teorema Utama

Aplikabilitas pemrograman dinamis pada suatu masalah ditentukan oleh adanya dua sifat fundamental.

Prinsip Optimalitas Bellman

Konsep sentral dari metode ini adalah prinsip optimalitas Bellman (Ingg. Bellman's principle of optimality). Prinsip ini menyatakan: bagaimanapun kondisi awal dan keputusan awal, keputusan-keputusan selanjutnya harus membentuk strategi optimal terhadap kondisi yang diperoleh sebagai hasil keputusan pertama[3].

Dengan kata lain, setiap bagian dari lintasan optimal itu sendiri merupakan lintasan yang optimal. Sifat ini memungkinkan pemecahan masalah umum menjadi serangkaian submasalah yang lebih sederhana dan menyelesaikannya secara rekursif.

Submasalah yang Saling Tumpang Tindih

Suatu masalah memiliki sifat submasalah yang saling tumpang tindih (Ingg. overlapping subproblems), jika dalam penyelesaiannya secara rekursif, submasalah yang sama muncul berulang kali. PD memungkinkan untuk menghindari komputasi berulang dengan menyimpan solusi dari submasalah yang telah ditemui (teknik ini disebut memoisasi atau tabulasi), sehingga secara signifikan meningkatkan efisiensi dibandingkan dengan rekursi naif.

Persamaan Bellman

Dari prinsip optimalitas diturunkan relasi rekuren utama dari metode ini — persamaan Bellman[1]. Persamaan ini menghubungkan «nilai» (keuntungan atau biaya optimal) dari kondisi saat ini dengan nilai-nilai kondisi selanjutnya. Dalam bentuk umum untuk proses bertahap deterministik dengan fungsi tujuan aditif, persamaan ini berbentuk:

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

di mana:

  • k — nomor langkah (dari m hingga 1);
  • x — kondisi sistem pada langkah k1;
  • y — keputusan yang dikendalikan, diambil pada langkah k;
  • φk(x,y) — keuntungan (atau biaya) pada langkah ke-k;
  • fk(x,y) — fungsi yang mendefinisikan kondisi baru sistem;
  • Vk(s) — nilai optimal dari fungsi tujuan untuk submasalah yang dimulai pada langkah k dalam kondisi s.

Persamaan diselesaikan secara berurutan, umumnya «dari akhir», bergerak dari langkah terakhir ke langkah pertama.

Contoh Penerapan

  • Masalah lintasan terpendek dalam graf: Masalah ini memiliki sifat substruktur optimal, karena setiap bagian dari lintasan terpendek itu sendiri merupakan lintasan terpendek. Algoritma Bellman-Ford dan Floyd-Warshall adalah contoh klasik penerapan PD untuk menyelesaikan masalah ini[5].
  • Masalah ransel (knapsack problem): Masalah pengisian ransel berkapasitas terbatas secara optimal dengan benda-benda yang memiliki nilai dan berat berbeda. PD memungkinkan penyelesaian masalah ini dengan mempertimbangkan benda-benda secara berurutan dan menghitung pada setiap langkah nilai maksimum untuk semua kemungkinan nilai kapasitas yang tersisa.
  • Masalah alokasi sumber daya: Pendistribusian sumber daya yang terbatas (misalnya, investasi) di antara beberapa proyek untuk memaksimalkan efek total.

Keterbatasan

Keterbatasan utama dari metode ini adalah kutukan dimensi (Ingg. curse of dimensionality) — istilah yang diperkenalkan oleh Bellman untuk menggambarkan pertumbuhan eksponensial jumlah kondisi dan, sebagai akibatnya, kompleksitas komputasi, seiring bertambahnya jumlah variabel yang mendeskripsikan kondisi sistem[6][7]. Hal ini membatasi penerapan praktis PD eksak untuk masalah-masalah berdimensi sangat besar.

Konsep Terkait

  • Riset operasi
  • Teori kendali optimal
  • Proses keputusan Markov (generalisasi stokastik)
  • Persamaan Hamilton — Jacobi — Bellman (analog untuk waktu kontinu)

Catatan

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