Dinamik Programlama (DP), karmaşık problemleri daha küçük alt problemlere bölerek ve alt problemlerin sonuçlarını saklayarak tekrar hesaplamayı önleyen bir algoritma tasarım tekniğidir.
Her sayının kendinden önceki iki sayının toplamı olduğu, memoization ile verimli hesaplanabilen dizi.
Belirli bir ağırlık kapasitesindeki çantaya, maksimum değere sahip nesneleri yerleştirme problemi.
İki dizi arasındaki en uzun ortak alt diziyi bulan algoritma.
Anahtar arama olasiliklari bilindiginde beklenen arama maliyeti en dusuk BST yapisini dinamik programlama ile kurar.
Ortak alt problemleri bir kez cozip saklayarak optimal alt yapiya sahip problemleri verimli cozen tasarim yontemidir.
Bir gezginin tum sehirleri bir kez ziyaret edip baslangica dondugu minimum maliyetli turu bulma problemidir.
Dinamik Programlama (DP), karmaşık problemleri daha küçük alt problemlere bölen, bu alt problemlerin sonuçlarını saklayan ve tekrar hesaplama ihtiyacını ortadan kaldıran bir algoritma tasarım yaklaşımıdır. Bu yöntem, özellikle örtüşen alt problemleri olan ve optimal alt yapıya sahip problemlerde kullanılır.
Dinamik Programlama iki temel yaklaşımla uygulanır:
Bir problemin DP ile çözülebilmesi için genellikle şu özelliklere sahip olması gerekir:
Dinamik Programlama yaygın olarak şu alanlarda kullanılır:
DP yaklaşımı, brute force veya özyinelemeli (recursive) çözümlere kıyasla genellikle çok daha verimlidir. Ancak, doğru durum tanımını formüle etmek ve geçiş denklemlerini belirlemek, DP çözümlerinin en zorlu kısmı olabilir.