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]
ស្វ័យលំដាប់ Fibonacci (Dynamic Programming) - Interactive Visualization | AlgoViz | AlgoViz