Program Dinamis (dynamic programming): metode pemecahan masalah dengan cara
menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan. Pemrograman dinamis menggunakan tabel atau array untuk menyimpan solusi submasalah. Tabel ini disebut tabel memo atau cache. Ketika suatu submasalah diselesaikan, solusinya disimpan dalam tabel memo sehingga dapat digunakan kembali nanti alih-alih menghitung ulang solusinya. Pemrograman dinamis sering digunakan dalam masalah yang melibatkan struktur berurutan atau seperti rantai. Misalnya, masalah Urutan Umum Terpanjang dapat diselesaikan dengan menggunakan pemrograman dinamis. Ini melibatkan pencarian rangkaian terpanjang yang muncul di kedua string. Contoh lainnya adalah masalah Knapsack, dimana tujuannya adalah untuk menemukan barang-barang yang akan dimasukkan ke dalam knapsack agar nilainya maksimal dan tidak melebihi kapasitasnya. Dalam rekursi, suatu masalah diselesaikan dengan memecahnya menjadi submasalah yang lebih kecil dan menyelesaikan submasalah tersebut secara rekursif. Rekursi adalah langkah pertama dalam menyelesaikan masalah pemrograman dinamis apa pun. Solusi rekursif yang diperoleh pada langkah ini dapat lebih dioptimalkan dengan menerapkan konsep memoisasi dan tabulasi. Memoisasi merupakan teknik yang digunakan dalam pemrograman dinamis untuk mengurangi waktu komputasi yang diperlukan untuk menyelesaikan suatu masalah dengan menghindari perhitungan yang berlebihan. Sedangkan tabulasi mengacu pada teknik di mana hasil antara dari submasalah disimpan dalam tabel untuk menghindari komputasi yang berlebihan. Pendekatan ini digunakan untuk memecahkan masalah optimasi dimana solusinya dapat dibangun dari solusi hingga submasalah. Dengan menyimpan hasil submasalah dalam sebuah tabel, kita dapat menghindari penghitungan ulang submasalah ketika diperlukan lagi, sehingga menghasilkan peningkatan efisiensi yang signifikan. https://www.prepbytes.com/blog/dynamic-programming/dynamic-programming/