0 00
![]() |
Dinamik programlama (dynamic programming) yöntemi nedir? |
Dinamik programlama, özyineleme yaklaşımı ile elde edilen işlem sonuçlarının bellekte tutularak tekrar kullanıldığı bir algoritma yöntemidir.
Tanım
Önceki adımlarda elde edilen sonuçların kaydını tutan ve yeni sonuçlar elde etmek üzere bu kayıtları kullanan yaklaşıma dinamik programlama (dynamic programming) denir.
Özyineleme fonksiyonu örnekleri için tıklayınız.
Analoji
Bir kişinin kağıt üzerinde 78 tane 23'ü toplaması gereksin. Sonucu hesaplamak birkaç dakikaya mal alacaktır.
Daha sonra aynı kişiden 79 tane 23'ü toplaması istendiğinde yapacağı tek işlem önceden elde ettiği sonuca 23 eklemek olacaktır. Bu işlem ancak birkaç saniyeye mâl olacaktır. Artık 78 tane 23'ü toplamasına gerek yoktur.
Bellekte tutma
Bilgisayar biliminde programların daha hızlı çalışması için uzun işlem zamanı olan, maliyetli fonksiyonlardan (expensive function calls) elde edilen sonuçların depolanması yöntemine bellekte tutma (caching, memoization) denir. Bu mekanizma yeniden hesaplamaları engeller.
Bellekte tutma, programa hız katar ve ekstra hesaplamalara ihtiyaç duyulmadığı için zamandan kazanç sağlar. Fakat bellek kullanımı nedeniyle ekstra bellek alanı gerektirir.
Özyineleme
Dinamik programlamanın temelinde özyineleme vardır. Özyinelemenin her adımında elde edilen sonuçlar gerektiğinde kullanılmak üzere bellekte saklanır.
Önceki adımlarda elde edilen sonuçların kaydını tutan ve yeni sonuçlar elde etmek üzere bu kayıtları kullanan yaklaşıma dinamik programlama (dynamic programming) denir.
Özyineleme fonksiyonu örnekleri için tıklayınız.
Analoji
Bir kişinin kağıt üzerinde 78 tane 23'ü toplaması gereksin. Sonucu hesaplamak birkaç dakikaya mal alacaktır.
Daha sonra aynı kişiden 79 tane 23'ü toplaması istendiğinde yapacağı tek işlem önceden elde ettiği sonuca 23 eklemek olacaktır. Bu işlem ancak birkaç saniyeye mâl olacaktır. Artık 78 tane 23'ü toplamasına gerek yoktur.
78*23 = 23+23+23 ... +23 = 1794 89*23 = 1794+23 = 1817 |
Bellekte tutma
Bilgisayar biliminde programların daha hızlı çalışması için uzun işlem zamanı olan, maliyetli fonksiyonlardan (expensive function calls) elde edilen sonuçların depolanması yöntemine bellekte tutma (caching, memoization) denir. Bu mekanizma yeniden hesaplamaları engeller.
Bellekte tutma, programa hız katar ve ekstra hesaplamalara ihtiyaç duyulmadığı için zamandan kazanç sağlar. Fakat bellek kullanımı nedeniyle ekstra bellek alanı gerektirir.
Özyineleme
Dinamik programlamanın temelinde özyineleme vardır. Özyinelemenin her adımında elde edilen sonuçlar gerektiğinde kullanılmak üzere bellekte saklanır.
Bu alana not ekleyebilirsiniz.
Başka bir sorunuz mu var?
Yorumlar (0)
Henüz yorum yapılmamış.