All videos
RecursionMenengahFase D–FE1E5

FIBONACCI: MEMO VS NAIVE

Fibonacci naif menghitung ulang subpohon yang sama berkali-kali sehingga pohon rekursi meledak. Memoization menyimpan hasil tiap nilai sekali (cache), sehingga panggilan berulang langsung dipakai ulang. Gerbang paling halus dari rekursi menuju Dynamic Programming.

Example use case

Optimasi fungsi rekursif apa pun yang menghitung ulang hal sama: simpan hasil agar tak dihitung dua kali.

Syllabus

Memoization menyimpan hasil tiap perhitungan sekali di cache, mengubah Fibonacci naif yang meledak jadi sangat cepat.

Objectives
  • ·Memahami kenapa Fibonacci naif menghitung ulang hal yang sama
  • ·Menjelaskan cara cache menyimpan hasil agar dipakai ulang
  • ·Menerapkan memoization sebagai jembatan ke Dynamic Programming
How It Works
  • ·Fibonacci naif memanggil dirinya dua kali sehingga subpohon berulang
  • ·Siapkan cache untuk menyimpan hasil tiap nilai yang sudah dihitung
  • ·Sebelum menghitung, cek dulu apakah hasilnya sudah ada di cache
  • ·Bila ada, langsung pakai; bila belum, hitung lalu simpan ke cache
  • ·Perhitungan berulang jadi hilang sehingga jauh lebih cepat
Prerequisites
  • ·Rekursi
  • ·Array atau map
Real-World Uses
  • ·Menyimpan hasil perhitungan berat agar tidak diulang di aplikasi
  • ·Cache skor atau data yang sering diminta ulang di game
  • ·Mempercepat fungsi yang dipanggil berkali-kali dengan input sama

Complexity O(n) dengan memo, dibanding O(2^n) versi naif