العودة إلى الدورة

الدرس الثالث والخمسون: مثال DP 1: التذكر (Memoization) (منهجية من الأعلى للأسفل)

الخوارزميات: من الصفر إلى الاحتراف (دليل المبتدئين)

53. مثال DP 1: التذكر (Memoization) (منهجية من الأعلى للأسفل)

التذكر (Memoization) هي تقنية برمجة ديناميكية من الأعلى للأسفل نستخدم فيها العودية جنباً إلى جنب مع جدول بحث (غالباً ما يكون Hash Map أو مصفوفة) لتخزين نتائج استدعاءات الدوال المكلفة وإرجاع النتيجة المخزنة مؤقتاً عند حدوث نفس المدخلات مرة أخرى.

مثال متتالية Fibonacci (باستخدام التذكر)

حساب Fibonacci العودي القياسي هو أسي O(2^N) لأنه يعيد حساب النتائج بشكل مكثف.

python memo = {} def fib_memo(n): if n <= 1: return n if n in memo: return memo[n] # Returning cached result

result = fib_memo(n - 1) + fib_memo(n - 2)
memo[n] = result # Store the result
return result

بإضافة التذكر، ينخفض التعقيد الزمني بشكل كبير إلى O(N)، حيث يتم حساب كل رقم من 1 إلى N مرة واحدة بالضبط.