ডাইনামিক প্রোগ্রামিং সমস্যাকে ছোট এবং আরও ছোট সম্ভাব্য সাব-প্রব্লেমগুলোর ভাগ করে। এই সাব-প্রব্লেমগুলো স্বাধীনভাবে সমাধান করা হয় না। বরং, এই ছোট সাব-প্রব্লেমগুলোর ফলাফল মনে রাখা হয় এবং সেগুলো অনুরূপ বা ওভারল্যাপিং সাব-প্রব্লেমগুলোর জন্য ব্যবহার করা হয়।
ডাইনামিক প্রোগ্রামিং সেখানে ব্যবহৃত হয় যেখানে সমস্যাগুলো রয়েছে, যেগুলো অনুরূপ সাব-প্রব্লেমগুলোর ভাগ করা যায় যাতে তাদের ফলাফল পুনরাবৃত্তি ব্যবহার করা যায়। অধিকাংশই, এই অ্যালগরিদমগুলো অপ্টিমাইজেশনের জন্য ব্যবহৃত হয়। হাতে থাকা সাব-প্রব্লেম সমাধান করার আগে, ডাইনামিক অ্যালগরিদম আগে সমাধান করা সাব-প্রব্লেমগুলোর ফলাফল পরীক্ষা করার চেষ্টা করে। সাব-প্রব্লেমগুলোর সমাধানগুলো কম্বাইন করা হয় সেরা সমাধান পেতে।
একটি সমস্যা ডাইনামিক প্রোগ্রামিং ব্যবহার করার জন্য,
- সমস্যাটি ছোট ওভারল্যাপিং সাব-প্রব্লেমগুলোর ভাগ করা উচিত।
- ছোট সাব-প্রব্লেমগুলোর অপ্টিমাম সমাধান ব্যবহার করে একটি অপ্টিমাম সমাধান অর্জন করা উচিত।
- ডাইনামিক অ্যালগরিদম মেমোরাইজেশন ব্যবহার করে।
ডাইনামিক প্রোগ্রামিং সমস্যাগুলো ২টি পদ্ধতিতে সমাধান করা যায়:
বটম-আপ ডাইনামিক প্রোগ্রামিং: এই পদ্ধতিতে, আমরা প্রথমে সমস্যাটি বিশ্লেষণ করি এবং দেখি কোন ক্রমে সাব-প্রব্লেমগুলো সমাধান করা হয়। আমরা טרিভিয়াল সাব-প্রব্লেম দিয়ে শুরু করি এবং দিয়ে দেয়া সমস্যার দিকে বিল্ড আপ করি।
টপ-ডাউন ডাইনামিক প্রোগ্রামিং: এই পদ্ধতিতে, আমরা দিয়ে দেয়া সমস্যাটি ভাঙে শুরু করি। যদি দেখা যায় একটি সাব-প্রব্লেম ইতিমধ্যে সমাধান করা হয়েছে, তবে শুধু সংরক্ষিত সমাধানটি ফেরত দিন।