حل مسائل به روش برنامه‌نویسی پویا:

در این گونه مسائل ابتدا نمونه‌های کوچکتر اجرا می‌شوند سپس حاصل آن‌ها در یک آرایه ذخیره می‌شود، در ادامه نمونه‌های کوچکتر از نمونه‌های بزرگتر به دست می‌آیند.

در مسائلی که نمونه‌های کوچک به یکدیگر وابستگی ندارند از روش تقسیم و حل استفاده می‌شود اما در مسائلی که نمونه‌های کوچک با یکدیگر ارتباط داشته باشند از روش پویا استفاده می‌کنیم.

روش تقسیم و حل یک روش کل به جزء بوده اما روش پویا یک روش جزء به کل است.

حل مسئله فیبوناچی به روش برنامه‌نویسی پویا:

در این روش برای به دست آوردن جمله n n ام دنباله باید جملات قبلی را بدست آوریم. به همین منظور یک آرایه n n تایی در نظر می‌گیریم و از ابتدای آرایه با مجموع هر دو جمله، جمله بعدی را به دست می‌آوریم. مرتبه‌ی زمانی این الگوریتم O(n) O(n) می‌باشد و نیاز به یک حلقه for به طول n n خواهد بود.

حل مسئله پیدا کردن کوتاهترین مسیر توسط الگوریتم فلوید (Floyd):

فرض کنید یک گراف جهتدار شامل n n رأس و e e لبه می‌باشد. این گراف یک گراف وزن‌دار است که یک عدد غیر منفی به عنوان وزن وجود دارد این عدد نشان دهنده‌ی فاصله بین دو رأس است. برای اینکه کوتاهترین فاصله را از هر رأس به رأس دیگر بدست آوریم مراحل زیر را انجام می دهیم:

  1. در مرحله‌ی اول مسیرهای مستقیم را بدست می‌آوریم.
  2. در گام دوم کوتاه‌ترین فاصله بین دو رأس را با یک رأس واسط محاسبه می‌کنیم.
  3. در گام دوم کوتاه‌ترین فاصله بین دو رأس را با یک گره واسط محاسبه می‌کنیم.
  4. این عمل را آن قدر انجام می‌دهیم تا تمام رأس‌های واسط در صورت امکان انتخاب شوند.
  5. در هر مرحله اطلاعات را در یک ماتریس ذخیره می‌کنیم و ممکن است در گام‌های جدید مقادیر بروز رسانی شوند.

results matching ""

    No results matching ""