← Back to Home
ស្វ័យលំដាប់ Fibonacci (Dynamic Programming)
បញ្ហាបុរាណមួយដែលត្រូវបានដោះស្រាយដោយប្រើ dynamic programming តាមរយៈការរក្សាទុកលទ្ធផលនៃបញ្ហារង។
Visualization
Step 1 / 9
Speed:
Details
Analogy
ស្រមៃការសាងសង់ជណ្តើរ។ ដើម្បីដឹងពីរបៀបសាងសង់ជំហានទី 10 អ្នកគ្រាន់តែត្រូវមើលជំហានទី 8 និង 9 ដែលអ្នកបានសាងសង់រួចហើយ។ អ្នកមិនចាំបាច់វាស់ឡើងវិញពីដីរាល់ពេលទេ។ Dynamic programming ដូចនេះ៖ អ្នកដោះស្រាយបញ្ហាធំជាងដោយការប្រើដំណោះស្រាយរបស់បញ្ហាតូចជាងដែលអ្នកបានរក្សាទុករួចហើយ។
Purpose
ដើម្បីគណនាលេខ Fibonacci ទី n យ៉ាងមានប្រសិទ្ធភាពដោយការសាងសង់ឡើងពីករណីមូលដ្ឋាន និងរក្សាទុកលទ្ធផលកណ្តាល (memoization) ដើម្បីជៀសវាងការគណនាដដែលៗ។
Use Cases
ប្រើក្នុងក្បួនដោះស្រាយផ្សេងៗសម្រាប់ការបង្កើនប្រសិទ្ធភាព ការវិភាគទីផ្សារហិរញ្ញវត្ថុ និងក្បួនដោះស្រាយស្វែងរក។ វាជាគំនិតមូលដ្ឋានសម្រាប់ការរៀន dynamic programming។
Algorithm Steps
Line 1
1
if n <= 1: return n
2
create array dp[0...n]
3
dp[0] = 0
4
dp[1] = 1
5
for i = 2 to n:
6
dp[i] = dp[i-1] + dp[i-2]
7
return dp[n]
Current
Executed
Pending
Explanation
What's Happening?
Step 1/9
ចាប់ផ្តើមអារេ DP។ ករណីមូលដ្ឋាន៖ fib(0) = 0។
Updates with each step • Clickfor full view
Code Implementation
def fibonacci(n):
if n <= 1:
return n
dp = [0] * (n + 1)
dp[1] = 1
for i in range(2, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]