daha alt problemlere bölünerek çözülebilen ve aynı çözümlere birden fazla kez ihtiyaç duyan problemlerde kullanılabilecek bir yaklaşım.
nasıl peki? bir kere çözülmüş problemi hafızada tutup, ihtiyaç duyulduğunda tekrar tekrar çözmekten kurtularak.
bir örnek - fibonacci
fibonacci sayıları: 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
bildiğiniz gibi her bir sayı kendinden önceki iki sayının toplamından geliyor.
yani,
fib(n) = fib(n-1) + fib(n-2)
fib(n) = (n == 0 veya n == 1 için n)
her bulduğumuz alt sonucu hafızada tutuyoruz ve bir başka problemde diziyi kontrol ediyoruz aradığımız değer var mı diye, varsa kullanıyoruz, yoksa hesaplayıp yola devam ediyoruz.
bu time complexity'i n^2 den n'e getiriyor.
21-01-2020 23:00:56 - marty