Algoritmalar

Fibonacci (Tablolama)

Dinamik Programlama O(n) O(n)

Fibonacci dizisini aşağıdan yukarıya kurar; her terim kendinden önceki ikinin toplamıdır — tekrar iş yok.

i012345678
fib0········
n
1/10

Taban durum: dp[0] = 0.

Değişmezdp[i] yazıldığı anda nihaidir; her alt problem tam bir kez çözülür — üstel patlamayı kaldıran budur.

fibonacci.c
int fib(int n) {
if (n <= 1) return n;
int dp[n + 1];
dp[0] = 0;
dp[1] = 1;
for (int i = 2; i <= n; i++)
dp[i] = dp[i - 1] + dp[i - 2];
return dp[n];
}

Fibonacci (Tablolama) nasıl çalışır?

Diziyi tabloda aşağıdan yukarı kur: her giriş önceki ikisinin toplamı. Tablolama, üstel özyineleme ağacını tek doğrusal taramaya çevirir.

Ne zaman kullanılır?

DP'nin 'hello world'ü — asıl aktarılan, örtüşen alt problemleri hafızalama desenidir.