0 00
![]() |
Dinamik programlamaya örnek verir misiniz? |
Dinamik programlama yöntemine örnek algoritmalar ve kod çözümleri.
Dinamik programlama
Dinamik programlama, programın koşan adımlarında elde edilen verilerin depolanması ve tekrar kullanılması düşüncesine dayanan bir algoritma türüdür.
Örnek-1
Bir sayının faktöriyeli, 1'den verilen sayıya kadar olan tam sayıların çarpımıdır. Buna göre n! değerini veren kodu dinamik programlama kullanarak yazınız.
Faktöriyel için verilen tanımın iki adet for döngüsü kullanılarak yazılan kodu aşağıda verilmiştir. Buna göre dış döngüde i sayacı 1'den n'ye kadar olan sayıları tutmak için; iç döngüde j sayacı, 1'den i'ye kadar olan sayıların çarpımını hesaplamak için kullanılmıştır.
n! değerini veren algoritmanın dinamik programlama ile yazılmış kodu aşağıda verilmiştir.
Örnek-2
Fibonacci dizisinde yer her sayı - dizinin ilk iki elemanı olan 0 ve 1 dışında - kendisinden önce gelen ardışık iki sayının toplanmasıyla elde edilir.
n. fibonacci sayısını veren fonksiyonun basit özyineleme yaklaşımına göre çözümü aşağıda verilmiştir.
n. fibonacci sayısını veren fonksiyonun dinamik programlama çözümü aşağıda verilmiştir. Çözümde for döngüsünde her adımda fibArray dizisinin elemanları elde edilmiştir. Burada fibArray dizisi depolama alanı olarak kullanılmıştır.
Dinamik programlama, programın koşan adımlarında elde edilen verilerin depolanması ve tekrar kullanılması düşüncesine dayanan bir algoritma türüdür.
Örnek-1
Bir sayının faktöriyeli, 1'den verilen sayıya kadar olan tam sayıların çarpımıdır. Buna göre n! değerini veren kodu dinamik programlama kullanarak yazınız.
Faktöriyel için verilen tanımın iki adet for döngüsü kullanılarak yazılan kodu aşağıda verilmiştir. Buna göre dış döngüde i sayacı 1'den n'ye kadar olan sayıları tutmak için; iç döngüde j sayacı, 1'den i'ye kadar olan sayıların çarpımını hesaplamak için kullanılmıştır.
function factorial(n) { array = []; for(i=0;i<=n;i++) { var fact = 1; for(var j=1; j<=i ; j++) fact = fact*j; array[i] = fact; } return array; } |
n! değerini veren algoritmanın dinamik programlama ile yazılmış kodu aşağıda verilmiştir.
function factorialDyn(n) { array = []; array[0]=1; for(i=1;i<=n;i++) { array[i] = i * array[i-1]; } return array; } |
Örnek-2
Fibonacci dizisinde yer her sayı - dizinin ilk iki elemanı olan 0 ve 1 dışında - kendisinden önce gelen ardışık iki sayının toplanmasıyla elde edilir.
n. fibonacci sayısını veren fonksiyonun basit özyineleme yaklaşımına göre çözümü aşağıda verilmiştir.
function fib (n) { if (n < 2) return 1; return fib(n-1) + fib(n-2); } |
n. fibonacci sayısını veren fonksiyonun dinamik programlama çözümü aşağıda verilmiştir. Çözümde for döngüsünde her adımda fibArray dizisinin elemanları elde edilmiştir. Burada fibArray dizisi depolama alanı olarak kullanılmıştır.
function fibDyn (n) { var fibArray = []; fibArray[0] = 1; fibArray[1] = 1; for (var i = 2; i<=n; i++) fibArray[i] = fibArray[i-1] + fibArray[i-2]; return fibArray[n]; } |
Bu alana not ekleyebilirsiniz.
Başka bir sorunuz mu var?
Yorumlar (0)
Henüz yorum yapılmamış.