Top Banner
ﻮﯾﺎ یرଓฬୀ (Dynamic Programming) (ఔ ﻮمﮐﺎ ﻮﯾﺎن ি ا ید ا) ّ િ ۀرﯾﺎ ا دد ه ا د١٣٩٠ ﺷﻬﺮﯾﻮر٢١ : ﺗﺎرﯾﺦ آﺧﺮﯾﻦ وﯾﺮاﯾﺶ
51

(DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ...

Aug 02, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

ویا ی ر(Dynamic Programming)

( ومکا ویانع ایدا )

ی مدی ۀریا داد ه دا

١٣٩٠ شهریور ٢١ ویرایش: آخرین تاریخ

Page 2: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر
Page 3: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

مطالب فهرست

١ مقدمه ١١ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . چیست؟ پویا برنامهریزی ١.١٢ . . . . . . . . . . . . . . . . . . . . . . . . . . . فیبوناچی دنباله مثال: یک ١.١.١

٧ تولید خط برنامهریزی ٢٧ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . مقدمه ١.٢٨ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . مسأله ساختار ٢.٢٩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . بازگشتی حل راه یک ٣.٢١١ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . زمانها سریعترین محاسبۀ ۴.٢١١ . . . . . . . . . . . . . . . . . . . . . . . . . . . . کارخانه در مسیر سریعترین ساختن ۵.٢

١۵ ماتریسها زنجیر ضرب ٣١۶ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . پرانتزگذاریها تعداد محاسبۀ ١.٣١٧ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . بهینه پرانتزگذاری یک ساختار ٢.٣١٧ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . بازگشتی حل راه یک ٣.٣١٨ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . بهینه هزینۀ محاسبۀ ۴.٣١٩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . بهینه جواب یک ساختن ۵.٣

٢٣ پویا برنامهریزی مبانی ۴٢٣ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . بهینه زیرساختار ١.۴٢۵ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ظریف نکات ٢.۴٢٧ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . زیرمسألهها همپوشانی ٣.۴٢٩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . بهینه جواب یک بازسازی ۴.۴٢٩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . سپاری خاطر به ۵.۴

٣٣ مشترک زیردنبالۀ طوالنیترین ۵٣۴ . . . . . . . . . . . . . . . . . . . . . . . . . مشترک زیردنبالۀ طوالنیترین یک بررسی ١.۵٣۴ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . بازگشتی حل راه یک ٢.۵٣۵ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ط.ز.م. یک طول محاسبۀ ٣.۵٣۶ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ط.ز.م. یک ساختن ۴.۵٣٧ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . برنامه بهبود ۵.۵

الف

Page 4: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

ب مطالب فهرست

٣٩ بهینه دودویی جستجوی درختهای ۶۴١ . . . . . . . . . . . . . . . . . . . . . . . . . . بهینه دودویی جستجوی درخت ساختار ١.۶۴٢ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . بازگشتی حل راه یک ٢.۶۴٢ . . . . . . . . . . . . . . . . . . . . . . . . . . . انتظار مورد جستجوی هزینۀ محاسبۀ ٣.۶

Page 5: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

١ فصل

مقدمه

چیست؟ پویا برنامهریزی ١.١

که زمانی گرد٢ پس الگوریتمهای از دستهای برای که است سازی بهینه روش یک ١ پویا برنامهریزی کامپیوتر، علوم درریچارد نام به ریاضیدانی توسط ١٩۵٣ سال در روش این میشود. استفاده میشوند فراخوانی مکرر بطور زیرمسألههاالگوریتمهای نوشتن در آن از که است شده شناخته روشی کامپیوتر علوم و ریاضی در پویا برنامهریزی شد. معرفی بلمن٣و ریاضی در پویا برنامهریزی تعریف میشود. استفاده یکسان مسأله زیر یک بارۀ چند اجرای حذف از استفاده با بهینهزیرا دارد باالتری کارآیی پویا برنامهریزی برای کامپیوتری علوم روش که است شده داده نشان است. متفاوت کامپیوتر علوماست. بیشتر حافظه فضای کاهش امکان پویا برنامهریزی ریاضی روش در که حالی در میکند حذف را تکراری محاسبات

کلمه همچنین گرفت. اشتباه Scheme و LISP نظیر پویا برنامهنویسی زبانهای با نباید را پویا۴ کلمه که کنید دقتکه میکند اشاره تکنیکی به پویا برنامهریزی الگوریتم، مبحث در ندارد. کامپیوتری برنامهنویسی مبحث به ربطی برنامهریزی۵یک مقادیر که است آن پویا کلمه از استفاده دلیل میکند. تکمیل جداول سایر در موجود مقادیر از استفاده با را جدول۶ یکبرنامهریزی آن به جداول از استفاده دلیل به همچنین میشوند. محاسبه جداول سایر در موجود مقادیر از استفاده با جدول

میشود. ارائه تلویزیونی شبکههای توسط که برنامهها جدول مشابه میگویند؛

میکند. حل زیرمسألهها جواب کردن ترکیب از استفاده با را مسائل ٧ حل و تقسیم روش شبیه پویا برنامهریزیبازگشتی، صورت به مسألهها زیر حل از پس و میکند تقسیم مستقل مسألههای زیر به را مسأله ، حل و تقسیم الگوریتمهایقابل مواردی در پویا برنامهریزی دقیقتر، عبارت به میآورد. بدست را اصلی مسأله جواب و کرده ترکیب هم با را نتایجدر هستند. یکسان مسألههای زیر-زیر دارای زیرمسألهها که زمانی یعنی نیستند؛ مستقل زیرمسألهها که است استفادهیک میدهد. انجام محاسبات الزم میزان از بیشتر یکسان، زیرمسألههای مکرر اجرای با حل و تقسیم روش حالت اینتکرار از کار این با و میکند ذخیره جدول یک در را آنها جواب و حل بار یک را زیرمسألهها پویا برنامهریزی الگوریتم

میکند. جلوگیری است نیاز آنها جواب به مجددا که زمانی در زیرمسألهها اجرای

١dynamic programming٢backtraking algorithms٣Richard Bellman۴dynamic۵programming

است. بعدی چند یا یک آرایه یک جدول از ۶منظور٧divide-and-conquer

١

Page 6: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

مقدمه .١ چیست؟فصل پویا برنامهریزی .١.١

فیبوناچی دنباله مثال: یک ١.١.١

عدد nامین تعریف، بنابر میپردازیم. سپاری٨ خاطر به تکنیک نام به تکنیکی به پویا برنامهریزی بحث شروع از قبلمیشود: تعریف زیر صورت به فیبوناچی

F (n) =

n n = ٠, ١ اگر

F (n− ١) + F (n− ٢) اینصورت غیر در.

میکند. محاسبه را فیبوناچی عدد nامین ١.١.١ الگوریتم

Algorithm 1.1.1: Fib(n)Input: n.Output: F (n).

1 if n == 0 یا 1 then2 return n؛3 else4 return Fib(n− 1)+Fib(n− ؛(25 end

١.١ شکل در فیبوناچی عدد ششمین محاسبه برای آن اجرای درخت به نگاهی الگوریتم، این اجرای زمان بررسی برایاست. نمایی آن اجرای زمان نتیجه در و الگوریتم اجرای درخت برگهای تعداد میاندازیم:

Fib(۶)

Fib(۴) Fib(۵)

Fib(۲) Fib(۳) Fib(۳) Fib(۴)

Fib(۰) Fib(۱) Fib(۳)Fib(۲)Fib(۲)Fib(۱)Fib(۲)Fib(۱)

Fib(۰) Fib(۱) Fib(۰) Fib(۱) Fib(۰) Fib(۱) Fib(۱) Fib(۲)

Fib(۰) Fib(۱)

.n = ۶ ازای به ١.١.١ الگوریتم اجرای درخت :١.١ شکل

همچنین و n = ١ و n = ٠ ازای به مکرر طور به Fib تابع دید، میتوان الگوریتم اجرای درخت در که همانطورکردن ذخیره الگوریتم، اجرای زمان بهبود برای راه یک است. شده فراخوانی n = ۴ و n = ٣ ازای به کمتری تعداد بهرا روش این است. بعدی نیازهای زمان در مقادیر این از استفاده و برخورد اولین در آرایه یک در شده محاسبه مقادیر

است: زیر صورت به روش این خالصه طور به مینامند. سپاری خاطر به

کن. شروع گرد پس الگوریتم یک با .١

جواب بودن موجود صورت در و کن بررسی مساله زیر برای جواب وجود برای را جدول ابتدا مساله زیر حل برای .٢برگردان. را آن

٨memoization

٢

Page 7: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

چیست؟ پویا برنامهریزی مقدمه١.١. .١ فصل

برگردان. را مقدار سپس و کرده ذخیره جدول در را جواب و کن حل را مساله زیر اینصورت، غیر در .٣

f آرایه الگوریتم این در میآید. در ١.١.٢ الگوریتم صورت به فیبوناچی الگوریتم سپاری، خاطر به تکنیک از استفاده باروش است. شده ١−پر مقدار با الگوریتم اجرای ی ابتدا در آن درایههای تمام و میکند نگهداری را فیبوناچی اعداد مقادیرآن مقدار تابع، مجدد فراخوانی جای به باشد، شده محاسبه قبال Fib(n) مقدار اگر است. واضح تقریبا الگوریتم این کارذخیره آرایه در بعدی استفادههای برای و محاسبه آن مقدار غیراینصورت، در میشود. بازگردانده است موجود آرایه در که

است. آمده ٢.١ شکل در الگوریتم این اجرای درخت میشود.

Algorithm 1.1.2: Fib(n)Input: n.Output: F (n).

1 if n == 0 یا 1 then2 return n؛3 else4 if f [n] = −1 then5 return f [n]

6 else7 f [n] =Fib(n− 1)+Fib(n− ؛(28 return f [n]؛9 end

10 end

Fib(۶)

Fib(۴) Fib(۵)

Fib(۳) Fib(۴)

Fib(۳)Fib(۲)

Fib(۱) Fib(۲)

Fib(۰) Fib(۱)

.n = ۶ ازای به ١.١.٢ الگوریتم اجرای درخت :٢.١ شکل

قبال که مقادیری برای زیرا است ١.١.١ الگوریتم از کمتر ١.١.٢ الگوریتم اجرای برای الزم زمان که دید میتوان بوضوحمحاسبه بار یک فقط و فقط F (n) مقدار ،n از کوچکتر مقدار هر ازای به چون نمیشود. فراخوانی تابع شدهاند محاسبهF (٠) مقادیر تمام ،F (n) محاسبه برای اینکه به توجه با است. O(n) با متناسب ١.١.٢ الگوریتم اجرای زمان میشود،به فقط F (n) مقدار اینکه به توجه با است. نیاز الگوریتم برای زیادی حافظه میشوند، ذخیره اصلی حافظه در F (n) تادر مقادیر سایر نگهداری به نیازی شود، محاسبه باال به پایین از F (n) مقدار اگر است، وابسته F (n−٢) و F (n−١)F (١) و F (٢) کردن جمع با سپس میکنیم. محاسبه را F (٢) ابتدا ،F (n) محاسبه برای روش، این در نیست. حافظهکرد. حذف حافظه از را آنها میتوان و نیست F (١) و F (٠) به نیازی مرحله، این از میکنیم. محاسبه را F (٣) مقدارروند این ادامه با کرد. حذف حافظه از را F (٢) مقدار و کرد محاسبه را F (۴) میتوان F (٣) و F (٢) از استفاده با

٣

Page 8: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

مقدمه .١ چیست؟فصل پویا برنامهریزی .١.١

توجه .(١.١.٣ الگوریتم ک. (ر. باشد نیاز حافظه در مقادیر تمام کردن ذخیره به آنکه بدون کرد محاسبه را F (n) میتواناست دسترس در نیز n از کوچکتر مقادیر تمام برای فیبوناچی عدد مقدار F (n) محاسبه از پس قبلی، الگوریتم در که کنید

ندارد. وجود میانی مقادیر تمام نکردن ذخیره دلیل به اخیر الگوریتم در خاصیت این اما

Algorithm 1.1.3: Fib(n)Input: n.Output: F (n).

1 if n == 0 یا 1 then2 return n؛3 end4 u = ؛05 v = ؛16 for i = 2 to n do7 t = u+ v؛8 u = v؛9 v = t؛

10 end11 return v؛

آن میتوان باال، به پایین صورت به بازگشتی سپاری خاطر به الگوریتم یک به نگاه با شد، مشاهده باال در که همانطورشده حل مسالههای زیر از برخی حالت، این در کرد. تبدیل میکند پر را جوابها جدول که تکراری٩ الگوریتم یک به رااست. پویا برنامهریزی و سپاری خاطر به تکنیک تفاوت این حقیقت در نگیرند. قرار استفاده مورد نهایت در است ممکنمسألههایی زیر ابتدا پویا برنامهریزی در است. یکسان پویا برنامهریزی با سپاری خاطر به روش پیچیدگی، تئوری لحاظ ازمیکنیم. حل تکراری روش یک بوسیله باال به پایین از را آنها سپس و میکنیم مشخص را است نیاز مسأله حل برای که

است: زیر ریاضی فرمول دارای فیبوناچی nام عدد مقدار نکته:

F (n) =ϕn − (١− ϕ)n√۵

n بزرگ مقادیر ازای به را F (n) میتوان براحتی نتیجه در است. مشهور طالیی١٠ نسبت به که ϕ = ١+√۵٢ آن در که

پویا برنامهریزی توضیح برای فقط اینجا در نیست. الزم فوق الگوریتمهای از استفاده و کرد محاسبه کوتاهی زمان در نیزاست. شده استفاده مثال این از

دسته این در میشود. استفاده بهینهسازی مسائل حل برای معموال پویا برنامهریزی ، پویا برنامهریزی بحث به بازگشتباشد. مینیمم) یا (ماکزیمم بهینه که است جوابی یافتن هدف و است موجود مسأله برای متعددی جوابهای مسائل، ازشود. منجر بهینه مقدار یک به است ممکن مختلف روشهای و نیست منحصربفرد لزوما بهینه جواب که است ذکر به الزم

کرد: تقسیم زیر مراحل به میتوان را پویا برنامهریزی الگوریتم یک طراحی روند

بهینه، جواب یک ساختار تشخیص .١

بازگشتی، طور به بهینه مقدار یک کردن تعریف .٢

باال، به پایین روش به بهینه مقدار یک محاسبه .٣

٩iterative١٠golden ratio

۴

Page 9: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

چیست؟ پویا برنامهریزی مقدمه١.١. .١ فصل

شده. محاسبه اطالعات از استفاده با بهینه جواب یک ساختن .۴

میتوان را ۴ مرحله باشد، نیاز مورد بهینه مقدار فقط که صورتی در میکند. ارائه مسأله برای را بهینه مقدار ،٣ تا ١ مراحلبه میکند. استفاده بهینه جواب یک ساختن برای قبلی مراحل در شده ذخیره اضافی اطالعات از ۴ مرحله در کرد. حذفبین مسیر کوتاهترین طول فقط اگر بگیرید. نظر در را گراف یک رأس دو بین مسیر کوتاهترین یافتن مسأله مثال، عنواننیز ۴ مرحله اجرای طول، کوتاهترین با مسیری یافتن برای اما است. کافی ٣ تا ١ مراحل اجرای باشد، نیاز مورد رأس دومتعددی مسیرهای است ممکن اما است بفرد منحصر مسیر کوتاهترین طول شد، اشاره قبال که همانطور است. نیاز مورد

باشد. موجود نظر مورد رأس دو بین طول این با گراف درمیشود. ارائه بهینهسازی مسائل برخی حل برای پویا برنامهریزی روش آتی فصلهای در

۵

Page 10: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

مقدمه .١ چیست؟فصل پویا برنامهریزی .١.١

۶

Page 11: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

٢ فصل

تولید خط برنامهریزی

مقدمه ١.٢

از کدام هر وارد خودرو١ شاسی یک .(١.٢ شکل ک. (ر. است خودرو تولید خط دو دارای خودروسازی کارخانه یکخارج شده تکمیل خودرو خط، پایان در و میشود وصل آن به مختلف ایستگاههای در آن قطعات و میشود تولید خطوطi) iام تولید خط از jام ایستگاه شدهاند. شمارهگذاری n تا ١ اعداد با که است ایستگاه n دارای تولید خط هر میشود.خط jام ایستگاه عمل همان دقیقا (S١,j) ١ تولید خط jام ایستگاه میدهیم. نمایش Si,j با را است) ٢ یا ١ با برابرو هستند مختلف تکنولوژی دارای و اند شده ساخته مختلف زمانهای در ایستگاهها اما میدهد. انجام را (S٢,j) ٢ تولیددارد. نیاز کار انجام برای زمان ai,j به Si,j ایستگاه کنید فرض است. متفاوت ایستگاهها در کار انجام زمان نتیجه دربه را ایستگاهها و میشود تولید خطوط از یکی اول ایستگاه وارد شاسی است، شده داده نمایش ١.٢ شکل در که همانطوربرای الزم زمان xi و i تولید خط به شاسی ورود برای الزم زمان ei کنید فرض شود. تکمیل خودرو تا میکند طی ترتیب

باشد. i تولید خط از شده تکمیل خودرو خروج

. . .شاسی ورود

خودروها

خروج

خودروهای

شده تکمیل

S۱,۱ Sایستگاه

۱,۲ Sایستگاه۱,۳ Sایستگاه

۱,۴ Sایستگاه۱,n−۱

Sایستگاه۱,n ایستگاه

S۲,۱ Sایستگاه

۲,۲ Sایستگاه۲,۳ Sایستگاه

۲,۴ Sایستگاه۲,n−۱

Sایستگاه۲,n ایستگاه

۱ تولید خط

۲ تولید خط

a۱,۱a۱,۲a۱,۳a۱,۴a۱,n−۱a۱,n

a۲,۱a۲,۲a۲,۳a۲,۴a۲,n−۱

a۲,n

t۱,۱

t۲,۱

t۱,۲

t۲,۲

t۱,۳

t۲,۳

t۱,n−۱

t۲,n−۱

خودروسازی کارخانۀ یک در تولید خطوط :١.٢ شکل

یک از آن انتقال زمان و میکند طی را است شده وارد آن به که تولیدی خط ایستگاههای شاسی معمول، طور بهو میشود وارد ضروری سفارش یک مواقع، برخی در اما است. کردن صرفنظر قابل و ناچیز بعدی ایستگاه به ایستگاهطی ترتیب به را ایستگاهها تمام شاسی نیز حالت این در است. ممکن زمان کوتاهترین در خودرو تولید خواهان مشتریکند. منتقل دیگر تولید خط به تولید خط یک از راه میانۀ در را خودرو یک که دارد را امکان این کارخانه مدیریت اما میکند

١chassis

٧

Page 12: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

تولید خط برنامهریزی .٢ مسألهفصل ساختار .٢.٢

و i = ١, ٢ آن در که است ti,j با برابر Si,j ایستگاه از شدن خارج از بعد i تولید خط از شاسی انتقال برای الزم زماناست). شده تکمیل خودرو nام ایستگاه در که کنید (دقت j = ١, . . . , n− ١

کمترین تا شوند انتخاب ٢ تولید خط از ایستگاههایی چه و ١ تولید خط از ایستگاههایی چه که اینجاست مسأله حال،تولید خط از ۶ و ٣ ،١ ایستگاههای انتخاب با زمان کمترین ، ٢.٢ شکل مثال در شود. صرف خودرو یک تولید برای زمان

میآید. بدست ٢ تولید خط از ۵ و ۴ ،٢ ایستگاههای و ١اگر است. عملی٣ غیر باشد زیاد ایستگاهها تعداد که مواقعی در تولید زمان کردن کمینه برای کورکورانه٢ بدیهی روشزمان در میتوان راحتی به باشند، مشخص ٢ تولید خط از انتخابی ایستگاههای و ١ تولید خط از انتخابی ایستگاههایدر دارد. وجود ایستگاهها انتخاب برای روش ٢n تعداد متاسفانه اما کرد. محاسبه را خودرو تولید زمان مدت Θ(n) بوضوح که است برابر ١, . . . , n مجموعۀ زیرمجموعههای تعداد با ١ تولید خط از انتخاب حالتهای تعداد حقیقتnهای برای که دارد نیاز زمان Ω(٢n) به حاالت، تمام بررسی با تولید زمان کمترین کردن پیدا بنابراین است. ٢n با برابر

است. غیرعملی بزرگ

شاسی ورود

خودروها

خروج

خودروهای

شده تکمیل

S۱,۱ Sایستگاه

۱,۲ Sایستگاه۱,۳ Sایستگاه

۱,۴ Sایستگاه۱,۵ Sایستگاه

۱,۶ ایستگاه

S۲,۱ Sایستگاه

۲,۲ Sایستگاه۲,۳ Sایستگاه

۲,۴ Sایستگاه۲,۵ Sایستگاه

۲,۶ ایستگاه

۱ تولید خط

۲ تولید خط

۲

۴

۷۹۳۴۸۴

۳

۲

۸۵۶۵۷

۲

۲

۳

۱

۱

۲

۴

۱

۴

۳

۲

کارخانه در مسیر سریعترین از مثال یک :٢.٢ شکل

تولید برای روش سریعترین ساختار :١ مرحلۀ ٢.٢

مرحله این تولید، خط برنامهریزی مسألۀ برای است. بهینه جواب یک ساختار تشخیص پویا برنامهریزی روش در قدم اولینمیشود: انجام زیر صورت به

Pj با را مسیر این بگیرید. نظر در را S١,j ایستگاه آخر به شروع نقطۀ از شاسی انتقال برای ممکن راه سریعترینمیدهیم. نمایش

دو j = ٢, . . . , n برای میباشد. نیز ممکن راه سریعترین وضوح به که دارد وجود راه یک فقط آنگاه j = ١ اگرکردن صرفنظر قابل انتقال زمان حالت این در که S١,j ایستگاه به S١,j−١ ایستگاه از انتقال یکی دارد: وجود انتخابانتقال برای t٢,j−١ زمان حالت، این در که است S١,j ایستگاه به S٢,j−١ ایستگاه از شاسی انتقال دوم، انتخاب است.دارند. زیادی اشتراکهای حالت دو این که دید خواهیم هرچند کرد. خواهیم بررسی مجزا طور به را حالت دو این است. الزمحالت این در باشد. S١,j−١ ایستگاه طریق از S١,j ایستگاه به رسیدن برای زمان سریعترین کنید فرض ابتدا، درغیر در زیرا است. کرده طی S١,j−١ ایستگاه به رسیدن تا شروع نقطۀ از را مسیر سریعترین شاسی که دید میتوانسپس و S١,j−١ به مسیر آن کردن طی با آنگاه باشد داشته وجود S١,j−١ به رسیدن برای سریعتری مسیر اگر اینصورت،مسیر سریعترین Pj مسیر اینکه فرض با این که میرسد S١,j به Pj مسیر کردن طی از سریعتر شاسی ،S١,j به رفتن

٢brute-force٣infeasible

٨

Page 13: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بازگشتی حل راه یک تولید٣.٢. خط برنامهریزی .٢ فصل

شاسی آنگاه باشد S٢,j−١ ایستگاه طریق از S١,j به رسیدن برای زمان سریعترین اگر مشابه، طور به است. متناقض استباشد. کرده طی S٢,j−١ ایستگاه به شروع نقطۀ از را مسیر سریعترین باید

سریعترین یافتن (یعنی مسأله برای بهینه یکجواب تولید، خط برنامهریزی مسألۀ برای گفت، میتوان کلی حالت در لذاو S١,j−١ به مسیر سریعترین (یافتن زیرمسأله چند برای بهینه جواب یافتن مستلزم (Si,j ایستگاه به رسیدن برای راهبرنامهریزی از استفاده قابلیت نشانههای از یکی این مینامند. بهینه۴ زیرساختار خاصیت را خاصیت این است. (S٢,j−١

است. مسأله حل برای پویاجوابهای از میتوان را مسأله یک برای بهینه جواب یک که داد نشان میتوان بهینه زیرساختار خاصیت از استفاده بابرای مسیر سریعترین به اگر کرد. استدالل میتوان زیر صورت به تولید، خط برنامهریزی مسألۀ در یافت. زیرمسألهها بهینۀبرای مسیر سریعترین بنابراین میگذرد. ٢ یا ١ تولید خط از jام − ١ ایستگاه از مسیر این کنیم، نگاه S١,j به رسیدن

است: زیر مسیر دو از یکی S١,j به رسیدن

یا ،S١,j ایستگاه به انتقال سپس و S١,j−١ ایستگاه تا مسیر سریعترین •

.S١,j ایستگاه به و ١ تولید خط به ٢ تولید خط از انتقال سپس و S٢,j−١ ایستگاه تا مسیر سریعترین •

از: عبارتند S٢,j ایستگاه به رسیدن برای مسیر سریعترین مسأله، در موجود تقارن به توجه با

یا ،S٢,j ایستگاه به انتقال سپس و S٢,j−١ ایستگاه تا مسیر سریعترین •

.S٢,j ایستگاه به و ٢ تولید خط به ١ تولید خط از انتقال سپس و S١,j−١ ایستگاه تا مسیر سریعترین •

جواب یافتن با را مسأله برای بهینه جواب میتوان تولید، خط برنامهریزی مسألۀ برای بهینه جواب ساختار به توجه بااز یک هر از jام ایستگاه به رسیدن برای مسیر سریعترین یافتن برای صریحتر، عبارت به یافت. زیرمسألهها برای بهینه

کنیم. حل را تولید خطوط jام − ١ ایستگاه به مسیر سریعترین یافتن مسألههای زیر است کافی تولید، خطوط

بازگشتی حل راه یک :٢ مرحلۀ ٣.٢

بهینۀ جوابهای مبنای بر بازگشتی صورت به بهینه جواب یک مقدار تعریف ، پویا برنامهریزی روش یک مرحلۀ دومینخط دو هر jام ایستگاههای به مسیر سریعترین یافتن مسألههای تولید، خط برنامهریزی مسألۀ برای است. زیرمسألههارسیدن برای ممکن زمان سریعترین fi[j] کنید فرض برمیگزینیم. زیرمسألهها عنوان به را j = ١, . . . , n ازای به تولید

باشد. Si,j ایستگاه انتهای به شاسیمیدهیم. نمایش f∗ با را زمان این و کند طی را تولید خط تمام شاسی که است زمانی سریعترین یافتن نهایی هدفسریعترین انتخاب دو این بین از برسد. پایان خط به تا کند طی ٢ یا ١ تولید خطوط از یکی از را nام ایستگاه باید شاسی

داریم: لذا و است نظر مورد راه

f∗ = min(f١[n] + x١, f٢[n] + x٢), (١.٢)

و f[١]١ محاسبۀ همچنین است. کارخانه خروجی به i تولید خط از شده تکمیل خودرو انتقال برای الزم زمان xi آن در کهایستگاه آن به مستقیما را شاسی است کافی تولید خطوط از یک هر از اول ایستگاه به رفتن برای است. ساده نیز f[١]٢

لذا کرد. منتقل

f[١]١ = e١ + a١,١,f[١]٢ = e٢ + a٢,١,

(٢.٢)

ازای به را fi[j] میتوان چگونه ببینیم حال است. i تولید خط به کارخانه شروع نقطۀ از شاسی انتقال زمان ei آن در کهS١,j ایستگاه انتهای به رسیدن برای راه سریعترین شد، بیان قبال که همانطور کرد. محاسبه i = ١, ٢ و j = ٢, . . . , n

است: زیر مسیر دو از یکی

۴optimal substructure

٩

Page 14: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

تولید خط برنامهریزی .٢ بازگشتیفصل حل راه یک .٣.٢

یا آن، کردن طی و S١,j ایستگاه به انتقال سپس و S١,j−١ ایستگاه انتهای به مسیر سریعترین •

ایستگاه به انتقال سپس و ١ تولید خط به ٢ تولید خط از انتقال و S٢,j−١ ایستگاه انتهای به مسیر سریعترین •آن. کردن طی و S١,j

.f١[j] = f٢[j − ١] + t٢,j−١ + a١,j داریم دوم حالت در و f١[j] = f١[j − ١] + a١,j داریم اول حالت درداریم j = ٢, . . . , n ازای به بنابراین

f١[j] = min(f١[j − ١] + a١,j , f٢[j − ١] + t٢,j−١ + a١,j). (٣.٢)

داریم j = ٢, . . . , n ازای به موجود) تقارن به توجه (با مشابه طور به

f٢[j] = min(f٢[j − ١] + a٢,j , f١[j − ١] + t١,j−١ + a٢,j). (۴.٢)

میآید: بدست زیر بازگشتی رابطههای ،(۴.٢) تا (٢.٢) معادالت ترکیب با

f١[j] =

e١ + a١,١ j = ١ اگر

min(f١[j − ١] + a١,j , f٢[j − ١] + t٢,j−١ + a١,j) j ≥ ٢ اگر(۵.٢)

f٢[j] =

e٢ + a٢,١ j = ١ اگر

min(f٢[j − ١] + a٢,j , f١[j − ١] + t١,j−١ + a٢,j) j ≥ ٢ اگر(۶.٢)

است. آمده زیر جدول در ٢.٢ شکل مثال برای fi[j] مقادیر

j ١ ٢ ٣ ۴ ۵ ۶f١[j] ٩ ١٨ ٢٠ ٢۴ ٣٢ ٣۵f٢[j] ١٢ ١۶ ٢٢ ٢۵ ٣٠ ٣٧

f∗ = ٣٨.

بهینه) مسیر کردن (پیدا بهینه جواب یک ساختن برای میدهد. بدست را زیرمسألهها برای بهینه مقادیر ،fi[j] مقادیرمسیر سریعترین در آن jام − ١ ایستگاه که است تولیدی خط شمارۀ ℓi[j] میکنیم: تعریف زیر صورت به را ℓi[j] مقدار

است. ٢.٢ شکل مثال ℓi[j]برای مقادیر حاوی زیر جدول دارد. قرار Si,j ایستگاه به

j ٢ ٣ ۴ ۵ ۶ℓ١[j] ١ ٢ ١ ١ ٢ℓ٢[j] ١ ٢ ١ ٢ ٢

ℓ∗ = ١.

که است تولیدی خط ℓ∗ همچنین ندارد. وجود اول ایستگاه از قبل ایستگاهی زیرا است نشده تعریف ℓi[١] اینجا دردارد. قرار کارخانه کل در مسیر سریعترین در آن nام ایستگاه

ℓ∗ = ١ مقدار با یافت. زیر صورت به را کارخانه در مسیر سریعترین میتوان ℓi[j] مقادیر و ℓ∗ مقدار از استفاده بادر مسیر سریعترین در ایستگاه آخرین ایستگاه، این میکنیم. انتخاب را S١,۶ ایستگاه آن مبنای بر و میکنیم شروعمشابه، طور به است. مسیر سریعترین در دیگری ایستگاه S٢,۵ ایستگاه است، ٢ با برابر ℓ١[۶] مقدار چون است. کارخانهچون نهایت در و S٢,٢ ایستگاه ℓ[٣]١ = ٢ چون ،S١,٣ ایستگاه ℓ٢[۴] = ١ چون ،S٢,۴ ایستگاه ℓ٢[۵] = ٢ چون

میکنند. مشخص را کارخانه در مسیر سریعترین ایستگاهها این میکنیم. انتخاب را S١,١ ایستگاه ℓ[٢]٢ = ١

١٠

Page 15: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

زمانها سریعترین محاسبۀ تولید٢.۴. خط برنامهریزی .٢ فصل

زمانها سریعترین محاسبۀ :٣ مرحلۀ ۴.٢

مسیر سریعترین محاسبۀ برای (۶.٢) و (۵.٢) بازگشتی روابط و (١.٢) رابطۀ مبنای بر بازگشتی الگوریتم یک نوشتن حال

آن اجرای زمان که این از است عبارت که دارد وجود الگوریتمی چنین با مشکل یک تنها است. ساده بسیار کارخانه درالگوریتم در fi[j] فراخوانیهای تعداد ri(j) کنید فرض موضوع، این دیدن برای است. n به نسبت نمایی صورت به

داریم: (١.٢) رابطۀ از استفاده با باشد. بازگشتی

r١(n) = r٢(n) = ١. (٧.٢)

داریم: j = ١, . . . , n− ١ ازای به (۶.٢) و (۵.٢) بازگشتی روابط از استفاده با

r١(j) = r٢(j) = r١(j + ١) + r٢(j + ١). (٨.٢)

میشود. فراخوانی بار ٢n−١ تنهایی به f[١]١ بنابراین و دانشجو) عهدۀ به (اثبات ri(j) = ٢n−j که داد نشان میتواندانشجو). عهدۀ به (اثبات است Θ(٢n) با برابر fi[j] فراخوانیهای تعداد مجموع، در

بازگشتی روش در آنچه از مختلف ترتیبی به fi[j] مقادیر محاسبۀ از است عبارت اجرا زمان کاهش برای راه یکمحاسبۀ با است. وابسته f٢[j − ١] و f١[j − ١] مقدار به فقط fi[j] مقدار که کرد مشاهده میتوان میشوند. محاسبهزمان در را کارخانه در مسیر سریعترین میتوان ،(j (یعنی ایستگاهها شمارۀ مبنای بر صعودی ترتیب به fi[j] مقادیرمقادیر و میکند دریافت ورودی عنوان به را n و xi ،ei ،ti,j ،ai,j مقادیر FASTEST-WAY تابع کرد. محاسبه Θ(n)

میکند. محاسبه ایستگاهها شمارۀ مبنای بر صعودی ترتیب به را fi[j](٢.٢) رابطۀ از استفاده با f[١]٢ و f[١]١ مقادیر ٢ و ١ خطوط در میکند: عمل زیر صورت به FASTEST-WAY تابعj = ٢, . . . , n و i = ١, ٢ ازای به ℓi[j] و fi[j] مقادیر ،١٧ تا ۴ خطوط for حلقۀ در سپس میشوند. محاسبهf٢[j] مقادیر ١٧ تا ١١ خطوط و (٣.٢) رابطۀ از استفاده با را ℓ١[j] و f١[j] مقادیر ١٠ تا ۴ خطوط میشوند. محاسبهرابطۀ از استفاده با ℓ∗ و f∗ مقدار ،٢۵ تا ١٩ خطوط در نهایت، در میکند. (۴.٢)محاسبه رابطۀ از استفاده با را ℓ٢[j] وتا ١٩ خطوط و ١٧ تا ۴ خطوط در for حلقۀ در تکرار n− ١ از یک هر و ٢ و ١ خطوط چون میشوند. محاسبه (١.٢)

است. Θ(n) الگوریتم اجرای زمان دارند، نیاز اجرا برای ثابت زمان به ٢۵این در است. مربوطه جدول در مقادیر شدن پر روند بررسی ،ℓi[j] و fi[j] مقادیر محاسبۀ روند دیدن برای راه یکf١[j−١] مقادیر به fi[j] درایۀ محاسبۀ برای میشوند. پر ستون هر در پایین به باال از و راست به چپ از مقادیر جداول،

آورد. بدست جدول از را آنها مقادیر میتوان و شدهاند ذخیره جدول در و محاسبه قبال که است نیاز f٢[j − ١] و

کارخانه در مسیر سریعترین ساختن ۵.٢

کارخانه در را تولید زمان سریعترین که را ایستگاههایی دنبالۀ میتوان ،ℓ∗ و ℓi[j] ،f∗ ،fi[j] مقادیر محاسبۀ از پسایستگاههای زیر تابع شد. ٢.٢بیان شکل مثال در مسیر این یافتن روش قبل، قسمت در کرد. محاسبه را میدهند بدستخواسته دانشجو از تمرینات در میکند. چاپ ایستگاه شمارۀ مبنای بر نزولی ترتیب به را مسیر سریعترین در گرفته قرار

کند. چاپ ایستگاه شمارۀ مبنای بر صعودی ترتیب به را ایستگاهها که دهد تغییر صورتی به را تابع که است شدهمیکند: چاپ را زیر خروجی PRINT-STATIONS تابع ٢.٢ شکل مثال در

Line 1, Station 6Line 2, Station 5Line 2, Station 4Line 1, Station 3Line 2, Station 2Line 1, Station 1

١١

Page 16: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

تولید خط برنامهریزی .٢ کارخانهفصل در مسیر سریعترین ساختن .۵.٢

Algorithm 2.4.1: FASTEST-WAY(a, t, e, x, n)Input: a, t, e, x, n.Output: کارخانه در تولید زمان سریعترین

1 f1[1] := e1 + a1,1؛2 f2[1] := e2 + a2,1؛3 for j := 2 to n do4 if f1[j − 1] + a1,j ≤ f2[j − 1] + t2,j−1 + a1,j then5 f1[j] := f1[j − 1] + a1,j؛6 ℓ1[j] := ؛17 else8 f1[j] := f2[j − 1] + t2,j−1 + a1,j؛9 ℓ1[j] := ؛2

10 end11 if f2[j − 1] + a2,j ≤ f1[j − 1] + t1,j−1 + a2,j then12 f2[j] := f2[j − 1] + a2,j؛13 ℓ2[j] := ؛214 else15 f2[j] := f1[j − 1] + t1,j−1 + a2,j؛16 ℓ2[j] := ؛117 end

18 end19 if f1[n] + x1 ≤ f2[n] + x2 then20 f∗ := f1[n] + x1؛21 ℓ∗ := ؛122 else23 f∗ := f2[n] + x2؛24 ℓ∗ := ؛225 end26 return f∗؛

Algorithm 2.5.1: PRINT-STATIONS(ℓ, n)Input: ℓ, n.Output: کارخانه در تولید مسیر سریعترین

1 i := ℓ∗؛2 Print “Line” i “ ، Station ” n؛3 for j := n downto 2 do4 i := ℓi[j]؛5 Print “Line” i “ ، Station ” j − ؛16 end

١٢

Page 17: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

کارخانه در مسیر سریعترین ساختن تولید٢.۵. خط برنامهریزی .٢ فصل

تمرین

ایستگاهها شمارۀ مبنای بر صعودی ترتیب به را ایستگاهها شمارۀ که دهید تغییر گونهای به را PRINT-STATIONS تابع .١کنید) استفاده بازگشتی روش از (راهنمایی: کند. چاپ

در fi[j] فراخوانیهای تعداد ،ri(j) دهید نشان و کنید استفاده متغیر تغییر روش و ٨.٢ و ٧.٢ معادالت از .٢است. ٢n−j با برابر بازگشتی، الگوریتم

با برابر دقیقا∑٢

i=١∑n

j=١ ri(j) یا fi[j] مقادیر فراخوانیهای کل تعداد که دهید نشان ٢ تمرین از استفاده با .٣است. ٢n+١ − ٢

به را الگوریتم برای نیاز مورد فضای که کنید ارائه روشی است. درایه ۴n − ٢ حاوی ℓi[j] و fi[j] جداول .۴گرفته قرار ایستگاههای چاپ به قادر و کند محاسبه را f∗ مقدار قبلی الگوریتم مشابه و دهد کاهش درایه ٢n+٢

باشد. نیز کارخانه مسیر سریعترین بر

ازای به را ℓi[j] مقادیر FASTEST-WAY تابع که طوری به موجودند ti,j و ai,j ،ei مقادیر که میزند حدس فردی .۵هستند نامنفی ti,j مقادیر تمام که این فرض با میکند. تولید ℓ٢[j] = ١ و ℓ١[j] = ٢ صورت به j ایستگاه یک

است. نادرست حدس این دهید نشان

١٣

Page 18: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

تولید خط برنامهریزی .٢ کارخانهفصل در مسیر سریعترین ساختن .۵.٢

١۴

Page 19: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

٣ فصل

ماتریسها زنجیر ضرب

دنباله یک مسأله، این در میکند. حل را ماتریسها١ زنجیر ضرب مسألۀ که است الگوریتمی پویا برنامهریزی از بعدی مثالاین است. A١ ·A٢ · · · · ·An حاصلضرب محاسبۀ هدف و است شده داده An, . . . , A٢, A١ ماتریس n از (زنجیر)محاسبۀ ترتیب شدن مشخص برای البته کرد. محاسبه ماتریسها دوی به دو حاصلضرب محاسبۀ با میتوان را حاصلضربگویند ٢ شده پرانتزگذاری کامال ماتریسهارا زنجیر ضرب یک شود. پرانتزگذاری ماتریسها زنجیر که است الزم ضربهادو به انتها و ابتدا در که باشد شده پرانتزگذاری ماتریسی ضرب دو حاصلضرب صورت به یا باشد ماتریس یک حاوی اگرصرفنظر ،(A · (B ·C) = (A ·B) ·C (یعنی ماتریسها ضرب شرکتپذیری خاصیت به توجه با شدهاند. محدود پرانتزبه میتوان را ⟨A١, A٢, . . . , A۴⟩ زنجیر حاصلضرب مثال عنوان به بود. خواهد یکسان حاصل ، پرانتزگذاری شیوۀ از

کرد: پرانتزگذاری زیر شکلهای

(A١ · (A٢ · (A٣ ·A۴))), (A١ · ((A٢ ·A٣) ·A۴)), ((A١ ·A٢) · (A٣ ·A۴)),

(A١ · (A٢ ·A٣) ·A۴), (((A١ ·A٢) ·A٣) ·A۴).

دیدن برای باشد. داشته حاصلضرب محاسبۀ هزینۀ در زیادی تأثیر میتواند ماتریسها ضرب یک پرانتزگذاری شکلدر حاصلضرب محاسبۀ برای استاندارد الگوریتم بگیرید. نظر در را ماتریس دو ضرب محاسبۀ هزینۀ ابتدا موضوع، اینماتریس ستونهای و سطرها تعداد ترتیب به الگوریتم این در columns و rows متغیرهای است. شده داده ٣.٠.٢ الگوریتم

میدهد. نشان راتعداد با باید A ماتریس ستونهای تعداد که معنی این به باشند سازگار٣ باید آنها B در A ماتریس ضرب براییک C = A · B آنگاه باشد q × r ماتریس یک B و p × q ماتریس یک A اگر باشد. برابر B ماتریس سطرهایمیشود مشخص الگوریتم ٨ خط در اسکالر ضربهای تعداد با C ماتریس محاسبۀ برای الزم زمان است. p× r ماتریسانجام اسکالر ضربهای تعداد مبنای بر را ماتریس دو حاصلضرب محاسبۀ هزینۀ ادامه، در است. p× q × r با برابر که

میکنیم. محاسبه شدهدر را A٣ و A٢ ،A١ ماتریس سه ضرب ماتریسها، حاصلضرب محاسبۀ هزینۀ در پرانتزگذاری تأثیر دیدن برایصورت به ضرب اگر باشند. ۵ × ۵٠ و ١٠٠ × ۵ ،١٠ × ١٠٠ ترتیب به ماتریسها این کنید فرض بگیرید. نظرمیشود انجام اسکالر ضرب عمل ١٠× ١٠٠× ۵ = ۵٠٠٠ به A١ ·A٢ محاسبۀ برای آنگاه باشد ((A١ ·A٢) ·A٣)در لذا و میگیرد انجام اسکالر ضرب عمل ١٠× ۵× ۵٠ = ٢۵٠٠ تعداد به A٣ در حاصل کردن ضرب برای سپس وبرای آنگاه شود انجام (A١ · (A٢ ·A٣)) شکل به پرانتزگذاری با ضرب اگر اما است. شده انجام ضرب عمل ٧۵٠٠ کلحاصل ماتریس ضرب برای سپس و میشود انجام ضرب عمل ١٠٠× ۵× ۵٠ = ٢۵٠٠٠ تعداد به A٢ ·A٣ محاسبۀ

١Matrix-Chain Multiplication٢Fully parentherized٣Compatible

١۵

Page 20: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

ماتریسها زنجیر ضرب .٣ پرانتزگذاریهافصل تعداد محاسبۀ .١.٣

Algorithm 3.0.2: MATRIX-MULTIPLY(A,B)

Input: A,B .ماتریسهایOutput: ماتریس دو حاصلضرب

1 if columns[A] = rows[B] then2 Print نیستند.” سازگار ابعاد ؛“خطا:3 else4 for i := 1 to rows[A] do5 for j := 1 to columns[B] do6 C[i, j] := ؛07 for k := 1 to columns[A] do8 C[i, j] := C[i, j] +A[i, k]×B[k, j]؛9 end

10 end

11 end12 return C؛13 end

شده انجام ضرب عمل تعداد مجموع در لذا میشود. انجام ضرب عمل ١٠× ١٠٠× ۵٠ = ۵٠٠٠٠ تعداد به A١ دراست. دوم روش از سریعتر مرتبه ١٠ اول روش به حاصلضرب محاسبۀ بنابراین است. مورد ٧۵٠٠٠ حالت این در

کرد: بیان زیر شکل به میتوان ماتریسهارا زنجیر ضرب مسألۀ مقدمه، این بااست. pi−١ × pi ماتریس یک Ai آن در که است شده داده ماتریس n از ⟨A١, A٢, . . . , An⟩ (دنباله) زنجیر یک

باشد. کمترین آن محاسبۀ برای اسکالر ضربهای تعداد که کنید پرانتزگذاری طوری را A١ ·A٢ · · · · · An ضربمحاسبۀ برای ترتیب یک تعیین فقط هدف و نمیشود محاسبه ماتریسها ضرب عمال مسأله، این در که کنید توجهاز بیشتر بسیار ترتیب این محاسبۀ برای الزم زمان معموال باشد. داشته را هزینه کمترین که قسمی به است حاصلضربضرب ٧۵٠٠٠ جای به اسکالر ضرب ٧۵٠٠ انجام (نظیر میشود صرفهجویی حاصلضرب محاسبۀ در که است زمانی

اسکالر).

پرانتزگذاریها تعداد محاسبۀ ١.٣

تمام بررسی که شویم متقاعد دهید اجازه ، پویا برنامهریزی از استفاده با ماتریسها زنجیر ضرب مسألۀ حل از قبلپرانتزگذاریهای تعداد P (n) کنید فرض نمیشود. منجر کارا الگوریتم یک به بهینه جواب یافتن برای پرانتزگذاریهابرای پرانتزگذاری یک تنها لذا و است موجود ماتریس یک آنگاه n = ١ اگر باشد. ماتریس n ضرب برای متمایزماتریسی ضرب دو ضرب صورت به میتوان را ماتریسها ضرب پرانتزگذاری هر ،n ≥ ٢ حالت در است. موجود آن.(k = ١, . . . , n− ١ ازای (به است ماتریس n−k حاوی دیگری و ماتریس k حاوی یکی که نوشت شده پرانتزگذاری

میآید: بدست زیر بازگشتی رابطۀ بنابراین

P (n) =

١ n = ١ اگرn−١∑k=١

P (k)× P (n− k) n ≥ ٢ اگر. (١.٣)

عنوان به میکند. رشد Ω(۴n/n٣/٢) آهنگ با فوق بازگشتی رابطۀ دهد نشان که است شده خواسته دانشجو از تمرینها درپرانتزگذاریهای تعداد بنابراین و است Ω(٢n) پیچیدگی دارای ١.٣ بازگشتی رابطۀ که داد نشان میتوان سادهتر تمرین یک

١۶

Page 21: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بهینه پرانتزگذاری یک ساختار ماتریسها٢.٣. زنجیر ضرب .٣ فصل

یافتن برای کورکورانه) بدیهی (روش پرانتزگذاریها تمام بررسی لذا است. نمایی n به نسبت nتایی ماتریسی ضرب یکاست. مسأله حل یافتن برای پایین کارایی با ضعیف روش یک بهینه پرانتزگذاری

بهینه پرانتزگذاری یک ساختار :١ مرحلۀ ٢.٣

جواب از بهینه جواب یک ساختن در آن از استفاده سپس و بهینه جواب ساختار یافتن پویا برنامهریزی روش در اول قدمکنید فرض راحتی، برای میشود. انجام زیر صورت به کار این ماتریسها، زنجیر ضرب مسألۀ برای است. مسألهها زیر(i < j (یعنی بدیهی غیر حالت برای که کنید توجه باشد. Ai ·Ai+١ · · · · ·Aj حاصلضرب ماتریس (i ≤ j) Ai···j

به میکند. جدا Ak+١ و Ak بین i ≤ k < j یک ازای به را ضرب این Ai · Ai+١ · · · · · Aj برای پرانتزگذاری هرسپس و میشوند محاسبه Ak+١···j و Ai···k ماتریسهای k یک ازای به ابتدا حاصلضرب، محاسبۀ برای دیگر، عبارتAi···k محاسبۀ هزینۀ با پرانتزگذاری این هزینۀ بنابراین میآید. بدست Ai···j حاصلضرب حاصل، ماتریس دو ضرب با

است. برابر ماتریس دو این کردن ضرب هزینۀ اضافۀ به Ak+١···j محاسبۀ هزینۀ اضافۀ به،Ai ·Ai+١ · · · · ·Aj برای بهینه پرانتزگذاری یک کنید فرض است. زیر صورت به مسأله این در بهینه زیرساختاراین در Ai · Ai+١ · · · · · Ak ”پیشبند” زیرزنجیر پرانتزگذاری صورت، این در کند. جدا Ak+١ و Ak بین را ضربیک اگر که است آن امر این دلیل باشد. Ai ·Ai+١ · · · · ·Ak ضرب برای بهینه پرانتزگذاری یک باید بهینه پرانتزگذاریپرانتزگذاری این با پیشبند زیرزنجیر جایگزینی با آنگاه باشد موجود کمتر هزینۀ با Ai ·Ai+١ · · · · ·Ak برای پرانتزگذاریفرض با این و است کمتر بهینه جواب هزینۀ از آن هزینۀ که میآید بدست Ai ·Ai+١ · · · · ·Aj برای پرانتزگذاری یک ،پرانتزگذاری یک نیز Ak+١ · · · · ·Aj زیرزنجیر پرانتزگذاری مشابه، دلیل به است. متناقض اولیه پرانتزگذاری بودن بهینهجوابهای از استفاده با مسأله برای بهینه جواب یک ساختن برای بهینه زیرساختار خاصیت از حال است. آن برای بهینهغیربدیهی حالت ماتریسهادر زنجیر ضرب برای پرانتزگذاری هر که دیدیم اینجا تا میکنیم. استفاده زیرمسألهها برای بهینهساختن برای بنابراین است. آن برای بهینه پرانتزگذاری یک بهینه، جواب زیرضرب هر و شود تقسیم زیرضرب چند به بایدبرای بهینه جواب سپس و کرده تقسیم زیرمسأله دو به را آن ماتریسهامیتوانیم زنجیر ضرب مسالۀ برای بهینه جواب یکبرای مناسب محل یک که است آن شود دقت آن در باید که نکتهای تنها میکنیم. ترکیب را آنها و یافته را زیرمسألهها

میگیریم. نظر در را ضرب کردن جدا برای ممکن مکانهای تمام کار، این انجام از اطمینان برای بیابیم. ضرب تجزیۀ

بازگشتی حل راه یک :٢ مرحلۀ ٣.٣

میکنیم. تعریف بازگشتی شکل به زیرمسالهها برای بهینه جوابهای مبنای بر را بهینه جواب یک هزینۀ مرحله این درپرانتزگذاری کردن پیدا از است عبارت میگیریم نظر ماتریسهادر زنجیر ضرب مسألۀ برای که زیرمسألههاییتعداد کمترین m[i, j] کنید فرض است. هزینه کمترین با ١ ≤ i ≤ j ≤ n ازای به Ai · Ai+١ · · · · · Aj

اصلی مسألۀ حل برای هزینه کمترین m[١, n] صورت این در باشد. Ai···j ماتریس محاسبۀ برای الزم اسکالر ضرباست.

حاوی فقط زنجیر زیرا است واضح جواب آنگاه i = j اگر میکنیم: تعریف زیر بازگشتی صورت به ,m[iرا j] مقدارازای به بنابراین نیست. اسکالری ضرب هیچ انجام به نیازی محاسبه برای و Ai···i = Ai لذا و است ماتریس یک١ مرحلۀ در که بهینه جواب ساختار از ،i < j ازای به ،m[i, j] محاسبۀ برای .m[i, i] = ٠ داریم ،i = ١, . . . , n

میکنیم. استفاده شد تشریحازای (به کند جدا Ak+١ و Ak بین را ضرب Ai · Ai+١ · · · · · Aj محاسبۀ برای بهینه پرانتزگذاری کنید فرضو Ak+١···j و Ai···k محاسبۀ برای الزم هزینۀ کمترین مجموع با m[i, j] صورت، این در .(i ≤ k ≤ j یکبرای است، pi−١ × pi ماتریس یک Ai ماتریس هر اینکه به توجه با است. برابر ماتریس دو این کردن ضرب هزینۀm[i, j] = بنابراین میشود. انجام اسکالر ضرب pi−١ × pk × pj تعداد به Ai···k · Ak+١···j حاصلضرب محاسبۀ

.m[i, k] +m[k + ١, j] + pi−١ × pk × pj

١٧

Page 22: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

ماتریسها زنجیر ضرب .٣ بهینهفصل هزینۀ محاسبۀ .۴.٣

است معلوم ما برای بهینه جواب در ضرب شدن جدا محل یعنی k مقدار که است آن بر فرض بازگشتی رابطۀ این در.k = i, i+١, . . . , j−١ از عبارتند که دارد وجود مقدار j−١ فقط k برای اما نداریم. اطالع آن مقدار از که حالی درهزینه کمترین لذا و میشوند بررسی اینجا در حالتها تمام میکند، اختیار را k مقادیر این از یکی بهینه پرانتزگذاری چون

است: زیر بازگشتی صورت به Ai ·Ai+١ · · · · · Aj محاسبۀ برای

m[i, j] =

٠ i = j اگر

mini≤k<j

m[i, k] +m[k + ١, j] + pi−١ × pk × pj i < j اگر. (٢.٣)

مقدار بهینه، جواب یک ساختن برای میدهد. بدست را زیرمسألهها برای بهینه جوابهای هزینۀ m[i, j] مقداربه است. بهینه پرانتزگذاری در Ai · · · · · Aj ضرب جداشدن محل S[i, j] میکنیم: تعریف زیر صورت به را S[i, j].m[i, j] = m[i, k] +m[k + ١, j] + pi−١ × pk × pj که قسمی به k مقدار با است برابر S[i, j] دیگر عبارت

بهینه هزینۀ محاسبۀ :٣ مرحلۀ ۴.٣

حاصلضرب محاسبۀ برای m[١, n] هزینۀ کمترین محاسبۀ برای بازگشتی الگوریتم یک میتوان راحتی به مرحله، این در

الگوریتم اجرای زمان که دید خواهیم آتی فصل در هرچند یافت. (٢.٣) بازگشتی رابطۀ از استفاده با A١ ·A٢ · · · · ·An

نیست. میکند بررسی را حاالت تمام که بدیهی الگوریتم از استفاده از بهتر نتیجه در و است نمایی

به است j و iانتخاب اول مسألۀ است. کم نسبتا مسأله این در مسألهها زیر تعداد که است این اینجا در مهم نکتۀ یکاست ممکن بازگشتی الگوریتم یک است.

(n٢)+ n = Θ(n٢) انتخابها کل تعداد لذا و ١ ≤ i ≤ j ≤ n که قسمی

شد). اشاره آن به فیبوناچی دنبالۀ مثال (در کند اجرا بازگشتی درخت مختلف شاخههای در مکرر بطور را زیرمسأله یکزیرساختار خاصیت نشانه (اولین میدهد نشان را پویا برنامهریزی کاربرد است مشخصهای دومین زیرمسألهها همپوشانی، پویا برنامهریزی روش از استفاده با را آن بازگشتی، صورت به (٢.٣) بازگشتی رابطۀ محاسبۀ جای به لذا است). بهینه

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

که است p =< p٠, p١, . . . , pn⟩ دنبالۀ یک آن ورودی لذا و است pi−١×pi ماتریس Aiیک ٣.۴.١ الگوریتم در

m[i, j] هزینۀ کردن ذخیره ١]mبرای · · ·n, ١ · · ·n] کمکی جدول یک از الگوریتم این .length[p] = n+١ آن درمیشود. استفاده میآید ,m[iبدست j] محاسبۀ در که k اندیس کردن ذخیره برای S[١ . . . n, ١ . . . n] کمکی جدول از و

شد. خواهد استفاده بهینه جواب محاسبۀ برای بعد مرحلۀ در S جدول از

m[i, j] محاسبۀ برای جدول درایههای از کدامیک که میکنیم بررسی ابتدا باال، به پایین روش صحیح پیادهسازی برایاز زنجیرهای ضرب محاسبۀ برای الزم هزینۀ کمترین یعنی m[i, j] که میدهد نشان (٢.٣) معادلۀ میشود. استفادهبه دارد. بستگی ماتریس j − i + ١ از کمتر تعداد از زنجیرهای ضرب محاسبۀ هزینههای به فقط ماتریس j − i + ١ماتریس k − i + ١ < j − i + ١ حاصلضرب Ai···k ماتریس ،k = i, i + ١, . . . , j − ١ ازای به دیگر، عبارتترتیبی به را m جدول باید الگوریتم بنابراین است. ماتریس j − k ≤ j − i + ١ حاصلضرب Ak+١···j ماتریس و

کند. محاسبه زنجیر طول مبنای بر صعودی ترتیب به پرانتزگذاری مسألۀ کردن حل با متناسب

(i = ١, ٢, . . . , n ازای (به میکند مقداردهی ٠ با را m[i, i] درایههای ۴ تا ٢ خطوط در ابتدا ٣.۴.١ الگوریتم,m[i(به i+ ١] محاسبۀ برای (٢.٣) بازگشتی رابطۀ از سپس است. ١ طول به زنجیر یک ضرب برای هزینه کمترین کهبه زنجیرها ضرب برای هزینه کمترین ،١٨ تا ۶ خطوط حلقۀ اول تکرار در میکند. استفاده (i = ١, . . . , n − ١ ازایبه و میشود محاسبه ٣ طول به زنجیرها ضرب برای هزینه کمترین حلقه، این دوم تکرار در میکند. محاسبه را ٢ طولبه فقط میشود، محاسبه ١۶ الی ١٠ خطوط در که m[i, j] مقدار مرحله، هر در میشود. تکمیل m جدول ترتیب همین

شدهاند. محاسبه که دارد نیاز m[k + ١, j] و m[i, k] درایههای

١٨

Page 23: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بهینه جواب یک ساختن ماتریسها٣.۵. زنجیر ضرب .٣ فصل

Algorithm 3.4.1: MATRIX-CHAIN-ORDER(p)Input: p.Output: m و S.

1 n := length(p)− 1;2 for i := 1 to n do3 m[i, i] := 0;4 end5 for ℓ := 2 to n // است زنجیر طول ℓ

6 do7 for i := 1 to n− ℓ+ 1 do8 j := i+ ℓ− 1;9 m[i, j] :=∞;

10 for k := i to j − 1 do11 q := m[i, k] +m[k + 1, j] + pi−1 × pk × pj;12 if q < m[i, j] then13 m[i, j] := q;14 S[i, j] := k;

15 end

16 end

17 end

18 end19 return m,S;

,m[iفقط j] مقدار چون است. شده داده نشان ماتریس ۶ از متشکل زنجیر یک ضرب برای روند این (١.٣) شکل دراست. شده استفاده دارد قرار آن اصلی قطر باالی در که ماتریس از قسمتی فقط است، شده تعریف i ≤ j مقادیر ازای بهماتریسها زنجیر و است گرفته قرار افقی صورت به اصلی قطر که طوری به است چرخیده جدول (١.٣) شکل در همچنین،Ai · Ai+١ · · · · · Aj زیرزنجیر حاصلضرب محاسبۀ برای هزینه کمترین جدول، این در گرفتهاند. قرار شکل پایین درختم Aj به غربی شمال سمت در و Ai به شرقی شمال سمت در که ردیفی دو تالقی محل در میتوان را ،m[i, j] یاجدول ردیفهای ٣.۴.١ الگوریتم است. یکسان طول به ماتریسی زنجیرهای به مربوط جدول ردیفهای داد. قرار میشودحاصلضرب مقدار از استفاده با m[i, j] درایۀ مقدار میکند. محاسبه راست به چپ از ردیف هر در و باال به پایین از راشرقی جنوب و غربی جنوب در گرفته قرار درایههای تمام و ،k = i, i + ١, . . . , j − ١ ازای به ،pi−١ × pk × pj

میشوند. محاسبه m[i, j]

است O(n٣) الگوریتم اجرای زمان که میدهد نشان ٣.۴.١ الگوریتم در تودرتو حلقههای ساختار در ساده بررسی یکدر میکند. اختیار را n − ١ مقدار حداکثر (k و i ،ℓ (یعنی حلقه اندیس هر و هستند تودرتو الیه سه در حلقهها زیراΘ(n٢) به الگوریتم است. Ω(n٣) همچنین الگوریتم اجرای زمان که دهد نشان که است شده خواسته دانشجو از تمرینهابدیهی روش از باالتر بسیار کارایی ٣.۴.١ الگوریتم بنابراین دارد. نیاز S mو ماتریسهای کردن ذخیره برای حافظه فضای

دارد. بهینه پرانتزگذاری یافتن برای

بهینه جواب یک ساختن :۴ مرحلۀ ۵.٣

میدهد، بدست را ماتریسها از زنجیر یک ضرب محاسبۀ برای الزم اسکالرهای ضرب بهینۀ تعداد ٣.۴.١ الگوریتم هرچندجواب یک محاسبۀ نمیدهد. نشان بهینه هزینۀ این به رسیدن برای را ماتریسها کردن ضرب ترتیب مستقیم طور به اما

١٩

Page 24: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

ماتریسها زنجیر ضرب .٣ بهینهفصل جواب یک ساختن .۵.٣

m s

j i

۱

۲

۳

۴

۵

۶۱

۲

۳

۴

۵

۶

A۱ A۲ A۳A۴

A۵ A۶

۰ ۰ ۰ ۰ ۰ ۰

۱۵, ۷۵۰ ۲, ۶۲۵ ۷۵۰ ۱, ۰۰۰ ۵, ۰۰۰

۷, ۸۷۵ ۴, ۳۷۵ ۲, ۵۰۰ ۳, ۵۰۰

۹, ۳۷۵ ۷, ۱۲۵ ۵, ۳۷۵

۱۱, ۸۷۵ ۱۰, ۵۰۰

۱۵, ۱۲۵

j i

۱

۲

۳

۴

۵۲

۳

۴

۵

۶

۱ ۲ ۳ ۴ ۵

۱ ۳ ۳۵

۳ ۳ ۳

۳ ۳

۳

زیر: ماتریس ابعاد و n = ۶ برای MATRIX-CHAIN-ORDER تابع توسط شده تولید s و m جداول :١.٣ شکلماتریس A١ A٢ A٣ A۴ A۵ A۶بعد ٣٠× ٣۵ ٣۵× ١۵ ١۵× ۵ ۵× ١٠ ١٠× ٢٠ ٢٠× ٢۵

در آن باالی قسمت و اصلی قطر m جدول در گیرد. قرار افقی صورت به آنها اصلی قطر تا چرخیدهاند گونهای به جداولضربهای تعداد کمترین است. شده استفاده اصلی قطر باالی قسمت فقط s جدول در و است شده استفاده محاسبات

.m[١, ۶] = ١۵, ١٢۵ از است عبارت ماتریس ۶ این حاصلضرب محاسبۀ برای شده انجام اسکالر

نیست. مشکل چندان S جدول در شده ذخیره و محاسبه اطالعات از استفاده با بهینهمحل در را ضرب Ai ·Ai+١ · · · · ·Aj بهینه پرانتزگذاری آن در که میکند ذخیره را k مقدار یک S[i, j] درایۀ هرصورت n···A١به حاصلضرب محاسبۀ برای بهینه روش در ماتریسی ضرب آخرین این بنابر میکند. ١+Akجدا Akو بینمحاسبه مشابه صورت به بازگشتی صورت به میتوان را ضربها زیر پرانتزگذاری میباشد. A١···S[١,n] ·AS[١,n]+١···nضرب آخرین S[S[١, n] + ١, n] مقدار و A١···S[١,n] محاسبۀ در ماتریسی ضرب آخرین S[١, S[١, n]] مقدار کرد.

میکند. مشخص را AS[١,n]+١···n محاسبۀ برای ماتریسی⟨Ai, Ai+١, . . . , Aj⟩ دنبالۀ برای را بهینه یکپرانتزگذاری و کرده دریافت را j و i مقادیر Sو جدول ٣.۵.١ بازگشتی الگوریتممیشود. چاپ ⟨A١, . . . , An⟩ برای بهینه پرانتزگذاری PRINT-OPTIMAL-PARENS(S, ١, n) فراخوانی با میکند. چاپ را

Algorithm 3.5.1: PRINT-OPTIMAL-PARENS(S, i, j)Input: S, i, j.Output: بهینه پرانتزگذاری چاپ

1 if i == j then2 Print ”A”i؛3 else4 Print ”(” ؛5 PRINT-OPTIMAL-PARENS(S, i, S[i, j])؛6 PRINT-OPTIMAL-PARENS(S, S[i, j] + 1, j)؛7 Print ”)” ؛8 end

پرانتزگذاری ،PRINT-OPTIMAL-PARENS(S, ١, ۶) تابع فراخوانی با ١.٣ شکل مثال در

((A١(A٢A٣))((A۴A۵)A۶))

میشود. چاپ

٢٠

Page 25: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بهینه جواب یک ساختن ماتریسها٣.۵. زنجیر ضرب .٣ فصل

ماتریسها زنجیر ضرب مسألۀ حل O(nبرای log n)اجرای زمان با یکالگوریتم ١٩٨۴ و ١٩٨٢ سال در شینگ۵ و هو۴.([٢] و [١] به ک. (ر. کردند ارائه

تمرین

را است ⟨۵, ١٠, ٣, ١٢, ۵, ۵٠, ۶⟩ صورت به آن ابعاد دنبالۀ که ماتریسی ضرب برای بهینه پرانتزگذاری یک .١بیابید.

با را ماتریسها حاصلضرب و گرفته را S جدول و ماتریسها از دنباله یک که بنویسید بازگشتی الگوریتم یک .٢کند. محاسبه بهینه روش

است. Ω(٢n) صورت به ١.٣ بازگشتی رابطۀ جواب که دهید نشان و کنید استفاده جایگزینی روش از .٣

نشان شود. ارجاع جدول درایههای سایر محاسبۀ در m[i, j] درایۀ به که باشد دفعاتی تعداد R(i, j) کنید فرض .۴با است برابر جدول درایههای تمام برای ارجاعات کل تعداد که دهید

n∑i=١

n∑j=١

R(i, j) =n٣ − n

٣ .

باشد.) مفید امر این برای∑n

k=٠ k٢ = n(n+١)(٢n+١)۶ معادلۀ است ممکن (راهنمایی:

است. پرانتز زوج n− ١ دارای دقیقا مولفهای n عبارت یک برای کامل پرانتزگذاری یک که دهید نشان .۵

۴Hu۵Shing

٢١

Page 26: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

ماتریسها زنجیر ضرب .٣ بهینهفصل جواب یک ساختن .۵.٣

٢٢

Page 27: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

۴ فصل

پویا برنامهریزی مبانی

روش کجا که باشد موجود ابهام این است ممکن هنوز اما شد ارائه پویا برنامهریزی روش از مثال ٢ اینجا تا هرچندپویا برنامهریزی روش یک دنبال به باید موقع چه مهندسی دید از دیگر، عبارت به است. استفاده قابل پویا برنامهریزیبرای پویا برنامهریزی تا باشند داشته باید بهینهسازی مسائل که را اصلی خاصیت دو بخش، این در باشیم؟ مسأله حل برای

میشود. بیان باشد استفاده قابل آنها

بهینه زیرساختار ١.۴

یک ساختار تشخیص١ پویا برنامهریزی از استفاده با بهینهسازی مسألۀ یک حل در قدم اولین شد، بیان قبال که همانطورآن برای بهینه جواب یک اگر است بهینه زیرساختار خاصیت دارای مسأله یک که میشود یادآوری است. بهینه جواببر مبنی خوبی نشانۀ مسأله، یک برای بهینه زیرساختار خاصیت وجود باشد. آن زیرمسألههای برای بهینه جواب حاویبرای حریص٢ روش کاربرد است ممکن خاصیت همین که کنید (دقت است آن حل برای پویا برنامهریزی کاربرد احتمالبرای بهینه جوابهای از استفاده با مسأله برای بهینه جواب یک ، پویا برنامهریزی در دهد). نشان نیز را مسأله حلشامل میشود گرفته نظر در که زیرمسالههایی مجموعۀ که شود حاصل اطمینان باید نتیجه در میشود. ساخته زیرمسألهها

میشود. استفاده بهینه جواب یک در که باشد زیرمسألههایی تماماز مسیر سریعترین که دیدیم ٢ فصل در کردیم. بررسی را بهینه زیرساختار خاصیت شد، ارائه تاکنون که مثالهایی در٣ فصل در است. تولید خطوط از یکی jام − ١ ایستگاه تا مسیر سریعترین حاوی تولید خط هر از jام ایستگاه طریقجوابهای حاوی کند جدا Ak+١ و Ak بین را ضرب که Ai · Ai+١ · · · · · Aj برای بهینه پرانتزگذاری یک که دیدیم

است. Ak ·Ak+١ · · · · · Aj و Ai ·Ai+١ · · · · · Ak پرانتزگذاری برای بهینهاست: زیر صورت به که میشود استفاده بهینه زیرساختار خاصیت تشخیص برای ثابت الگوی یک کلی حالت در

بعدی ایستگاه انتخاب مثال عنوان به است. انتخاب یک مستلزم مسأله برای جواب یک که میدهیم نشان ابتدا .١

شود. شکسته باید نقطه آن در ماتریسها ضرب که اندیسی انتخاب یا تولید خط در

درگیر لذا و است شده داده شما به میشود منجر بهینه جواب به که انتخابی شده، داده مسألۀ در که میشود فرض .٢است. شده داده شما به انتخاب این که میشود فرض و نشده آن کردن پیدا

مناسب زیرمسألههای فضای یک که صورتی به میشود مشخص مرتبط زیرمسالههای انتخاب، این بودن دست در با .٣شود. حاصل

١characterize٢Greedy

٢٣

Page 28: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

پویا برنامهریزی مبانی .۴ بهینهفصل زیرساختار .١.۴

استفاده بهینه جواب در که اصلی مسألۀ زیرمسألههای جواب که میدهیم نشان بچسبان٣ و ببر تکنیک از استفاده با .۴رسیدن و نباشد بهینه زیرمسألهها جواب از یکی اینکه فرض با کار این هستند. بهینه جواب خودشان شدهاند،برای بهینه جواب یک چسباندن و غیربهینه زیرمسألۀ جواب بریدن با دقیقتر، طور به میشود. انجام تناقض بهیک فعلی جواب اینکه فرض با که میشود حاصل اصلی مسأله برای بهتر جواب یک که میدهیم نشان زیرمسأله،اعمال با مشابه استدالل یک با معموال باشد، موجود زیرمسأله یک از بیش اگر است. متناقض است بهینه جواب

کرد. اثبات را بودن بهینه نیز زیرمسألهها سایر برای میتوان جزئی تغییرات

فقط و داشت نگه ساده ممکن حد تا را فضا این که است آن خوب قانون یک زیرمسألهها فضای کردن مشخص برایبرنامهریزی مسألۀ در شده گرفته نظر در زیرمسألههای فضای مثال، عنوان به داد. گسترش را آن است الزم که مواردی دربرای زیرمسألهها فضای این است. S٢,j و S١,j ایستگاههای به شروع نقطۀ از راه سریعترین از عبارت تولید، خطمسألۀ در کنید فرض دیگر، جنبۀ از نبود. ممکن زیرمسألههای سایر گرفتن نظر در به نیازی و بودند کافی مسأله حلهمانطور باشد. A١ ·A٢ · · · · ·Aj شکل به ضربهایی به زیرمسألهها کردن محدود برای تالش ماتریسها، زنجیر ضرباینصورت، در میکند. جدا Ak+١ و Ak بین را ضرب ، بهینه پرانتزگذاری ،١ ≤ k ≤ j یک ازای به شد، استدالل قبال کهشکل به دوم زیرمسألۀ که است Ak · Ak+١ · · · · · Aj و A١ · A٢ · · · · · Ak صورت به حاصل زیرمسألههای شکلکه است الزم مسأله این در لذا است. j − ١ با برابر k همواره که شود ثابت که آن مگر نیست A١ ·A٢ · · · · ·Aj کلیهر Ai · Ai+١ · · · · · Aj ضرب در یعنی باشد، داشته تغییر قابلیت طرف دو هر از زیرمسألهها که شود داده امکان این

باشند. داشته تغییر قابلیت j و i متغیر دومیکند: تغییر مختلف مسائل بین جنبه دو از بهینه ساختار خاصیت

و است، شده استفاده اصلی مسألۀ برای بهینه جواب یک در که زیرمسألههایی تعداد .١

دارد. وجود اصلی مسألۀ بهینۀ جواب در شده استفاده زیرمسألههای تعیین برای که انتخابهایی تعداد .٢

تشخیص برای انتخاب دو که حالی در کرد استفاده زیرمسأله یک از فقط بهینه جواب یک تولید، خط برنامهریزی مسألۀ درسریعترین ،Si,j ایستگاه انتهای به رسیدن برای مسیر سریعترین یافتن برای دقیقتر، عبارت به بود. الزم بهینه جواباین در شده انجام انتخاب میشود. استفاده S٢,j−١ ایستگاه انتهای تا مسیر سریعترین یا S١,j−١ ایستگاه انتهای تا مسیرزیرزنجیر ماتریسهابرای زنجیر ضرب مسألۀ کرد. حل بهینه صورت به باید را مسأله زیر کدام که میکند مشخص مرحلهآن در که Ak ماتریس اگر است. انتخاب j − i و زیرمسأله دو دارای که است مسأله یک از مثالی Ai, Ai+١, . . . , Aj

Ai ·Ai+١ ·· · ··Ak پرانتزگذاری یکی از عبارتند که است موجود زیرمسأله دو آنگاه باشد شده داده میشود جدا ضرب نقطهزیرمسألهها برای بهینه جواب وقتی شوند. حل بهینه صورت به باید دو هر که Ak ·Ak+١ · · · · ·Aj پرانتزگذاری دیگری و

میشود. انتخاب ممکن انتخاب j − i بین از k مقدار آمد، بدستتعداد یکی است: فاکتور دو حاصلضرب به وابسته پویا برنامهریزی الگوریتم یک اجرای زمان رسمی، غیر طور به

کل تعداد تولید، خط برنامهریزی مسألۀ در داریم. زیرمسأله هر برای که انتخابهایی تعداد دیگری و زیرمسألهها کلمسألۀ برای رسیدیم. آن برای Θ(n) اجرای زمان به لذا و است انتخاب دو دارای زیرمسأله هر و بوده Θ(n) زیرمسألههاالگوریتم لذا و داشتیم انتخاب n− ١ حداکثر زیرمسأله هر در و بوده Θ(n٢) زیرمسألهها تعداد ماتریسها، زنجیر ضرب

میشود. اجرا Θ(n٣) زمان در حاصلبهینه، جواب یافتن برای یعنی میکند، استفاده باال به پایین از صورت به بهینه زیرساختار خاصیت از پویا برنامهریزییک یافتن مییابیم. را اصلی مسألۀ برای بهینه جواب سپس و میکنیم پیدا را زیرمسألهها برای بهینه جوابهای ابتدایک هزینۀ میشود. منجر شود استفاده مسأله حل برای باید که زیرمسألههایی بین از انتخاب به مسأله برای بهینه جوابابتدا تولید، خط برنامهریزی مسألۀ در مثال، عنوان به است. انتخابها هزینۀ بعالوۀ زیرمسألهها حل هزینۀ معموال مسألهایستگاهها این از یکی سپس و کرده حل را S٢,j−١ و S١,j−١ ایستگاههای طریق از مسیر سریعترین یافتن زیرمسألههایرا تولید خط که دارد این به بستگی مسأله این در انتخاب هزینۀ میکنیم. انتخاب S١,j از قبل ایستگاه عنوان به را

٣cut-and-paste

٢۴

Page 29: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

ظریف نکات پویا۴.٢. برنامهریزی مبانی .۴ فصل

در و است ai,j الزم هزینۀ بمانیم، تولید خط همان در که حالتی در خیر. یا کنیم عوض jام و jام − ١ ایستگاه بینبهینه پرانتزگذاری یک ابتدا ماتریسها، زنجیر ضرب مسألۀ در است. ai,j + ti,j الزم هزینۀ تولید، خط تعویض صورتانتخاب را میشود جدا ضرب نقطه آن در که Ak ماتریس سپس و میکنیم پیدا Ai, Ai+١, . . . , Aj زیرزنجیرهای برای

است. pi−١ × pk × pj انتخاب این هزینۀ میکنیم.الگوریتم که مسائلی دقیقتر، عبارت به دارند. شباهت پویا برنامهریزی به مختلف جهات از حریص۴ الگوریتمهایو حریص الگوریتمهای بین مهم تفاوت یک است. بهینه زیرساختار خاصیت دارای میشود برده کار به آن برای حریصبه یعنی میشود، استفاده پایین به باال از صورت به بهینه زیرساختار حریص، الگوریتمهای در که است آن پویا برنامهریزیمیکنند انتخاب ابتدا حریص الگوریتمهای شود، انجام انتخاب آن مبنای بر سپس و شوند حل زیرمسألهها ابتدا اینکه جای

میکند. حل را حاصل زیرمسألههای سپس و میرسد) نظر به انتخاب بهترین فعلی حالت در که (انتخابی

ظریف نکات ٢.۴

را خاصیت این که است مسألهای برای بهینه زیرساختار خاصیت وجود فرض شود، پرهیز آن از باید که اشتباهاتی از یکیبگیرید. درنظر را گراف این از v و u رأس دو و G = (V,E) جهتدار گراف یک روی را زیر مسألۀ دو ندارد.

است ساده لزوما مسیر این باشد. یال تعداد کمترین حاوی که بیابید v به u از مسیر یک غیروزندار: مسیر کوتاهترینمیدهد. دست به کمتر یالهای تعداد با مسیر یک مسیر، یک از دور۵ یک حذف زیرا

ساده است الزم باشد. یال تعداد بیشترین حاوی که بیابید v به u از ساده مسیر یک غیروزندار: مسیر طوالنیترینبه طول با مسیرهایی و کرد تکرار دلخواه تعداد به را دور یک میتوان اینصورت غیر در زیرا باشیم داشته را مسیر این بودن

کرد. تولید بزرگ دلخواه به اندازۀگراف از رأس دو u = v کنید فرض است. بهینه زیرساختار خاصیت دارای غیروزندار مسیر کوتاهترین زیر، دلیل بهw میانی رأس یک حاوی v به u از P مسیر هر صورت این در باشد. غیربدیهی گراف در آنها مسیر که قسمی به باشدw به u از P١ زیرمسیر دو به میتوان را v به u از P مسیر بنابراین باشد). v یا u میتواند w که کنید دقت ) استبرابر P٢ یالهای تعداد و P١ یالهای تعداد مجموع با P مسیر یالهای تعداد وضوح، به کرد. تجزیه v به w از P٢ وو u بین مسیر کوتاهترین P١ آنگاه باشد v به u از مسیر) کوتاهترین (یعنی بهینه مسیر یک P اگر که میکنیم ادعا است.P ′١ با P١ کردن جایگزین با آنگاه باشد موجود P١ از کمتر یالهای تعداد با w و u بین P ′١ مسیر یک اگر زیرا است. wاستدالل با است. متناقض P مسیر بودن بهینه فرض با که میشود حاصل v و u بین P طول از کمتر طول با مسیر یکw رئوس تمام میتوان ،v به u از مسیر کوتاهترین یافتن برای بنابراین است. v به w از مسیر کوتاهترین یک P٢ مشابه،به را w و یافت را v و w بین مسیر کوتاهترین و w و u بین مسیر کوتاهترین و گرفت نظر در میانی رأس عنوان به راکوتاهترین برای را بهینه زیرساختار خاصیت میتوان مشابه استداللی با دهد. بدست را مسیر کوتاهترین که یافت گونهای

داد. نشان نیز وزندار جهتدار گرافهای در مسیربه است. بهینه زیرساختار خاصیت دارای نیز مسیر طوالنیترین کردن پیدا مسألۀ که کنیم فرض که است طبیعی بسیارکنیم تقسیم v و w بین P٢ و w و u بین P١ زیرمسیرهای به را v و u بین P مسیر طوالنیترین یک اگر دیگر، عبارتشکل است. منفی جواب نیست؟ v و w بین مسیر طوالنیترین یک P٢ و w و u بین مسیر طوالنیترین P١ آیا آنگاهبه q از مسیر طوالنیترین که را q → r → t مسیر شکل، این در میدهد. دست به مطلب این نادرستی از مثالی ١.۴مسیر زیرا است منفی جواب است؟ r و q بین ساده مسیر طوالنیترین یک q → r مسیر آیا بگیرید. نظر در است tاست؟ t به r از ساده مسیر طوالنیترین r → t آیا است. r به q از بیشتر طول با ساده مسیر یک q → s→ t→ r

است. t به r از بیشتر طول با ساده مسیر یک r → q → s→ t مسیر زیرا است منفی باز جواباستفاده با نمیتوان حتی بلکه ندارد را بهینه زیرساختار خاصیت تنها نه ساده مسیر طوالنیترین که میدهد نشان مثال اینمسیر طوالنیترین اگر آورد. بدست مسأله برای قبول قابل جواب یک زیرمسألهها، جواب از

۴Greedy algorithms۵cycle

٢۵

Page 30: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

پویا برنامهریزی مبانی .۴ ظریففصل نکات .٢.۴

q r

s t

غیروزندار جهتدار گراف یک در ساده مسیر طوالنیترین کردن پیدا مسألۀ میدهد نشان که جهتدار گراف یک :١.۴ شکلنیست. بهینه زیرساختار خاصیت دارای

q → s → t → r → q → s → t مسیر آنگاه کنیم ترکیب را r → q → s → t و q → s → t → r

زیرساختار خاصیت نوع هیچ دارای نظر به غیروزندار مسیر طوالنیترین یافتن مسألۀ لذا نیست. ساده که میکند تولید رامسأله این حقیقت در است. نشده پیدا مسأله این برای مناسب کارایی با پویا برنامهریزی الگوریتم هیچ نیست. بهینه

کرد. حل چندجملهای زمان در را آن بتوان است بعید که است معنی این به که است NP-کامل۶مسأله زیر دو هرچند دارد؟ وجود مسیر کوتاهترین و مسیر طوالنیترین زیرساختار بین تفاوتی چه که اینجاست سؤالمستقل٧ مسیر طوالنیترین مسألۀ زیرمسألههای اما است شده استفاده مسیر کوتاهترین و طوالنیترین مسألۀ دو هر برایمعنی چیست؟ زیرمسألهها بودن مستقل از منظور اما هستند. مستقل مسیر کوتاهترین زیرمسألههای که حالی در نیستندمثال برای باشد. نداشته آن دیگر زیرمسألههای روی تاثیری مسأله یک از زیرمسأله یک جواب که است آن بودن مستقلساده مسیر طوالنیترین کردن پیدا شد: تقسیم زیر زیرمسالۀ دو به t به q از مسیر طوالنیترین یافتن مسألۀ (١.۴) شکلآن در t و s رئوس لذا و میکنیم انتخاب را q → s → t → r مسیر زیرمسأله، اولین برای .t به r از و r به q ازترکیب با اینصورت غیر در زیرا نداریم را رأس دو این از مجدد استفادۀ امکان دوم زیرمسألۀ در نتیجه در است. شده استفادهحل امکان آنگاه کنیم استفاده دوم زیرمسألۀ در t رأس از نتوانیم اگر میشود. منجر ساده غیر مسیر یک به زیرمسألههادو جواب آن در که نیست رأسی این و باشد داشته قرار شده پیدا مسیر روی باید رأس این زیرا ندارد وجود دوم زیرمسألۀآنها استفادۀ از مانع زیرمسأله یک جواب در t و s رئوس از استفاده است). رأس این r) میشوند ترکیب هم با زیرمسألهمسأله حل برای هرچند کنیم، استفاده دیگر مسألۀ حل در رأس دو این از یکی حداقل از باید ما میشود. دیگر زیرمسألۀ دردر منابع از استفاده دیگر، دیدگاه از نیستند. مستقل زیرمسألهها این بنابراین است. نیاز رأس دو هر به بهینه صورت به

میکند. خارج دیگر مسائل دسترس از را آنها هستند)، رئوس مسأله این در منابع (این مسأله زیر یک حلطبیعت سؤال، این جواب هستند؟ مستقل مسیر کوتاهترین یافتن در مسألهها زیر چرا که میشود مطرح سؤال اینv به u از P مسیر کوتاهترین روی w رأس اگر که میکنیم ادعا نیستند. شریک منابع در زیرمسألهها آن در که است مسألهبه u از مسیر کوتاهترین یک v به w از P٢ مسیر کوتاهترین هر و w به u از P١ مسیر کوتاهترین هر ترکیب با آنگاه باشدرأس کنید فرض زیرا ندارد، وجود P٢ و P١ مسیر دو هر روی w از غیر به رأسی هیچ مطمئنا همچنین میآید. بدست vبه x از مسیر یک و x به u از Pux مسیر صورت به میتوان را P١ مسیر لذا و باشد P٢ و P١ مسیر دو هر بر x = w

کرد. تجزیه v به x از Pxv مسیر سپس و x به w از مسیری صورت به میتوان را P٢ مسیر مشابه، طور به شکست. w

یالهای تعداد و P١ یالهای تعداد مجموع اندازۀ به P مسیر یالهای تعداد مسأله، این در بهینه زیرساختار خاصیت بنابرx از Pxv مسیر سپس و x به u از Pux صورت به مسیری ترکیب با حال، باشد. یال e دارای P کنید فرض است. P٢مسیر کوتاهترین P اینکه فرض با که است یال e− ٢ حداکثر دارای مسیر این ساخت. v به u از مسیری میتوان v به

هستند. مستقل مسیر کوتاهترین مسألۀ زیرمسألههای بنابراین است. متناقض است v و u بینمسألۀ در هستند. مستقل زیرمسألههای دارای پرداختیم آن به قبلی بخشهای در که مسألهای دو هر.Ak+١ · Ak+٢ · · · ·Aj و Ai · Ai+١ · · · · · Ak زنجیرهای ضرب از عبارتند ماتریسهازیرمسألهها زنجیر ضربخط برنامهریزی مسألۀ در ندارد. را زیرزنجیر دو هر در حضور امکان ماتریسی هیچ لذا و هستند مجزا زیرزنجیرها اینS٢,j−١ و S١,j−١ ایستگاههای طریق از مسیرها سریعترین ،Si,j ایستگاه طریق از مسیر سریعترین یافتن برای تولید،

۶NP-complete٧independent

٢۶

Page 31: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

زیرمسألهها همپوشانی پویا۴.٣. برنامهریزی مبانی .۴ فصل

زیرمسأله آن است، زیرمسألهها از یکی جواب شامل فقط Si,j ایستگاه طریق از مسیر سریعترین چون کردیم. بررسی راشدهاند. استفاده جواب در که است زیرمسألههایی سایر از مستقل خودکار طور به

زیرمسألهها همپوشانی ٣.۴

زیرمسألهها فضای بودن کوچک میکند ایجاد را پویا برنامهریزی از استفاده امکان که بهینهسازی مسائل مشخصۀ دومیناجرا بارها و بارها را یکسان زیرمسألههای جدید، زیرمسألههای تولید جای به باید بازگشتی الگوریتم دیگر، عبارت به است.

الگوریتم یک که هنگامی است. ورودی اندازۀ از چندجملهای یک صورت به متمایز زیرمسألههای کل تعداد معموال کند.

طور به است. زیرمسألهها همپوشانی دارای مسأله گوییم آنگاه کند اجرا بارها و بارها را یکسان زیرمسألۀ یک بازگشتی،تولید جدید زیرمسألههای بازگشت، از مرحله هر در معموال است مناسب آن برای حل و تقسیم روش که مسألهای دقیقتر،و کرده اجرا بار یک را مسأله زیر هر و کرده استفاده زیرمسألهها همپوشانی از پویا برنامهریزی الگوریتمهای در اما میکند.جدول از را آن مقدار ثابت زمان در میتوان آن به نیاز مورد مواقع در که طوری به میکند ذخیره جدول یک در را جواب

آورد. بدستازای به fi[j] به ارجاع ٢n−j به تولید خط برنامهریزی برای بازگشتی حل راه یک چگونه که دیدیم قبلی فصلهای دریک به را مسأله این برای نمایی اجرای زمان با بازگشتی الگوریتم ، پویا برنامهریزی روش میانجامد. j = ١, ٢, . . . , n

میدهد. بهبود خطی اجرای زمان با الگوریتماستفاده با ماتریسهامیپردازیم. زنجیر ضرب مسألۀ به دقیقتر، صورت به زیرمسألهها همپوشانی خاصیت شرح برایجواب از بارها و بارها باالیی، سطرهای در زیرمسأله یک حل در MATRIX-CHAIN-ORDER تابع که میبینیم ٢.۴ شکل از

فراخوانی بار ۴ الگوریتم، اجرای طول ,٣]mدر ۴] درایۀ مثال، عنوان به است. کرده استفاده پایینی سطرهای در زیرمسألههابار هر جدول، ,٣]mاز ۴] برداشتن جای به اگر .(m[٣, ۶] ,٣]mو ۵] ،m[١, ۴] ،m[٢, ۴] محاسبۀ برای ) است شدهکارای) (غیر بازگشتی الگوریتم موضوع، این دیدن برای میکند. پیدا افزایش بسیار آن اجرای زمان شود، محاسبه آن مقدارAi···j = Ai·Ai+١·· · ··Aj حاصلضرب محاسبۀ برای که اسکالر ضربهای تعداد کمترین یعنی ،m[i, j] مقدار که را زیربازگشتی درخت ٢.۴ شکل است. ٢.٣ بازگشتی رابطۀ مبنای بر تابع این بگیرید. نظر در میکند محاسبه را است، الزم

۱..۴

۱..۱ ۲..۴ ۱..۲ ۳..۴ ۱..۳ ۴..۴

۲..۲ ۳..۴ ۲..۳ ۴..۴ ۱..۱ ۲..۲ ۳..۳ ۴..۴ ۱..۱ ۲..۳ ۱..۲

۳..۳ ۴..۴ ۲..۲ ۳..۳ ۲..۲ ۳..۳ ۱..۱ ۲..۲

۳..۳

نشان را j و i پارامترهای رأس هر .RECURSIVE-MATRIX-CHAIN(p, ١, ۴) محاسبۀ برای بازگشتی درخت :٢.۴ شکلمقدار برداشت یک با MEMOIZED-MATRIX-CHAIN(p, ١, ۴) تابع در شدهاند زده سایه که درخت از قسمتهایی میدهد.

شدهاند. جایگزین جدول از

i پارامترهای مقادیر با درخت این در رأس هر میدهد. نشان را RECURSIVE-MATRIX-CHAIN(p, ١, ۴) توسط شده تولیدشدهاند. تکرار بارها و بارها یکسان برچسبهای با رئوس که میشود مشاهده است. شده گذاری برچسب j و

٢٧

Page 32: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

پویا برنامهریزی مبانی .۴ زیرمسألههافصل همپوشانی .٣.۴

Algorithm 4.3.1: RECURSIVE-MATRIX-CHAIN(p, i, j)Input: p, i, j.Output: m.

1 if i == j then2 return ؛03 end4 m[i, j] ؛∞=5 for k = 1 to j − 1 do6 q = RECURSIVE-MATRIX-CHAIN(p, i, k)+

RECURSIVE-MATRIX-CHAIN(p, k + 1, j) + pi−1 · pk · pj؛7 if q < m[i, j] then8 m[i, j] = q؛9 end

10 end11 return m[i, j]؛

بر نمایی حداقل بازگشتی، روال این از استفاده با m[١, n] محاسبۀ برای الزم زمان که داد نشان میتوان حقیقت درپرانتزگذاری محاسبۀ برای RECURSIVE-MATRIX-CHAIN تابع توسط شده صرف زمان T (n) کنید فرض است. n مبنایاجرا برای زمانی واحد یک به تابع این ٩-٧ و ٣-١ خطوط که این فرض با باشد. ماتریس n از متشکل زنجیر یک بهینه

میشود: حاصل زیر بازگشتی رابطۀ آنگاه دارند، Tنیاز (١) ≥ ١,T (n) ≥ ١ +

∑n−١k=١(T (k) + T (n− k) + ١) n > ١ برای .

صورت به دیگر بار و T (k) صورت به بار یک T (i) جملۀ هر ،i = ١, ٢, . . . , n − ١ هر ازای به که کنید توجهبازگشتی رابطۀ مجموع، از خارج ١ عدد یک و فوق مجموع در ١ عدد بار n−١ کردن جمع با میشود. ظاهر T (n−k)

درمیآید: زیر صورت به

T (n) ≥ ٢n−١∑i=١

T (i) + n. (١.۴)

،n ≥ ١ هر ازای به میدهیم نشان دقیقتر، صورت به .T (n) = Ω(٢n) میکنیم ثابت جایگزینی روش از استفاده باداریم n ≥ ٢ ازای به .T (١) ≥ ١ = ٢٠ داریم وضوح به ،n = ١ ازای به .T (n) ≥ ٢n−١

T (n) ≥ ٢n−١∑i=١

٢i−١ + n

= ٢n−٢∑i=٠

٢i + n

= ٢)٢n−١ − ١) + n

= (٢n − ٢) + n

≥ ٢n−١,

٢٨

Page 33: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بهینه جواب یک بازسازی پویا۴.۴. برنامهریزی مبانی .۴ فصل

حداقل RECURSIVE-MATRIX-CHAIN(p, ١, n) فراخوانی با شده انجام کار مجموع بنابراین میکند. کامل را اثبات این واست. n برحسب نمایی

دوم روش کنید. مقایسه پویا برنامهریزی الگوریتم باالی به پایین از روش با را پایین به باال از بازگشتی روش این

و دارد وجود متمایز زیرمسألۀ Θ(n٢) تنها میکند. استفاده زیرمسألهها همپوشانی خاصیت از زیرا دارد باالتری کاراییدرخت در که زمان هر را زیرمسأله هر بازگشتی الگوریتم اما میکند اجرا بار یک دقیقا را کدام هر پویا برنامهریزی الگوریتم

زیرمسألههای حاوی بازگشتی الگوریتم یک برای اجرا درخت یک که هنگامی میکند. حل دوباره شود ظاهر الگوریتم اجرای

مسأله مورد در پویا برنامهریزی آیا که این بررسی آنگاه باشد کم متمایز زیرمسألههای تعداد و باشد زیاد تکرار با یکساناست. مناسبی فکر دارد کاربرد

بهینه جواب یک بازسازی ۴.۴

زیرمسأله هر در گرفته صورت انتخاب بهینه، جواب یک محاسبۀ با همزمان موارد، اغلب در عملی، روش یک عنوان بهمسألۀ در نباشد. نیازی بهینه جواب یک ساختن برای اطالعات این مجدد محاسبۀ به تا میکنیم ذخیره جدول یک در رااز پس چند هر کردیم. ذخیره ℓi[j] در Si,j طریق از مسیر سریعترین در را Si,j از قبل ایستگاه تولید، خط برنامهریزیآن طریق از مسیر سریعترین در Si,j از قبل ایستگاه که داد تشخیص میتوان اضافی، کار کمی با ،fi[j] جدول تکمیلایستگاه طریق از مسیر سریعترین در S١,j از قبل ایستگاه S١,j−١ آنگاه f١[j] = f١[j − ١] + a١,j اگر است. کداماز قبل ایستگاه S٢,j−١ که است معنی این به که f١[j] = f٢[j−١]+ t٢,j−١+a١,j اینصورت، غیر در است. S١,jجدول از استفاده بدون حتی تولید، خط برنامهریزی مسألۀ در لذا است. S١,j ایستگاه طریق از مسیر سریعترین در S١,j

دارد. نیاز زمان O(١) به ایستگاه هر ازای به ماقبل ایستگاههای ساختن ،ℓi[j]در توجهی قابل صرفهجویی بهینه، جواب بازسازی در S[i, j] جدول از استفاده ماتریسها، زنجیر ضرب مسألۀ درهزینۀ حاوی که m[i, j] جدول فقط و باشد نشده نگهداری S[i, j] جدول که کنید فرض میدهد. انجام الزم کار میزانپرانتزگذاری برای بهینه جواب یک ساختن در زیرمسأله کدام از که این تشخیص باشد. دست در زیرمسألههاست بهینۀاینکه تشخیص برای لذا نیست. ثابتی مقدار که است انتخاب j − i دارای است، شده استفاده Ai · Ai+١ · · · · · Aj

ضرب که ماتریسی اندیس کردن ذخیره با است. نیاز زمان Θ(j − i) = w(١) به است شده استفاده زیرمسأله کدامآورد. بدست O(١) زمان در را بهینه انتخاب میتوان ،S[i, j] در میشود شکسته آن در Ai ·Ai+١ · · · · · Aj

سپاری خاطر به ۵.۴

در پایین به باال از روش از و دارد را پویا برنامهریزی روش کارایی موارد اکثر در که دارد وجود پویا برنامهریزی از نوعیبرنامهریزی مشابه روش، این در است. بازگشتی الگوریتم یک در سپاری خاطر به روش، این ایدۀ میکند. استفاده محاسباتبازگشتی الگوریتم شبیه جدول کردن پر برای کنترلی ساختار اما میشود نگهداری زیرمسألهها جواب حاوی جدول یک ، پویا

است.در درایه هر میدهد. تخصیص درایهای زیرمسأله، جواب هر برای سپاری، خاطر به خاصیت با بازگشتی الگوریتم یکزمان در که هنگامی است. نشده داده تخصیص آن به مقداری هنوز دهد نشان که میشود اولیه مقداردهی گونهای به جدولدفعات میشود. ذخیره جدول در و شده محاسبه آن جواب میشود، فراخوانی بار اولین برای زیرمسأله الگوریتم، اجرای۴.۵.١ الگوریتم میشود. برگردانده جدول در شده ذخیره مقدار سادگی به میشود، برخورد زیرمسألۀ به اجرا در که بعدی

است. RECURSIVE-MATRIX-CHAIN الگوریتم برای سپاری خاطر به نگارشمقادیر برای را m[١ · · ·n, ١ · · ·n] جدول MATRIX-CHAIN-ORDER تابع مشابه MEMOIZED-MATRIX-CHAIN تابعتمام میکند. نگهداری ،Ai···j ماتریس محاسبۀ برای الزم اسکالر ضربهای تعداد حداقل یعنی ،m[i, j] شدۀ محاسبههنگامی شود. داده تخصیص آنها به مقداری باید که دهند نشان تا میشوند اولیه دهی ∞مقدار مقدار با جدول درایههایرا m[i, j] شدۀ محاسبه مقدار سادگی به تابع آنگاه m[i, j] < ∞ اگر میشود، اجرا LOOKUP-CHAIN(p, i, j) که

٢٩

Page 34: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

پویا برنامهریزی مبانی .۴ سپاریفصل خاطر به .۵.۴

Algorithm 4.5.1: MEMOIZED-MATRIX-CHAIN(p)Input: p,.Output: m.

1 n = length[p]− ؛12 for i = 1 to n do3 for j = 1 to n do4 m[i, j] =∞5 end

6 end7 return LOOKUP-CHAIN(p, 1, n)؛

ذخیره m[i, j] درایۀ در و شده محاسبه RECURSIVE-MATRIX-CHAIN تابع مشابه هزینه اینصورت، غیر در برمیگرداند.

برمیگرداند را m[i, j] مقدار همواره LOOKUP-CHAIN(p, i, j) تابع بنابراین میشود. برگردانده آن مقدار سپس و میشودمیکند. محاسبه را آن مقدار j و i پارامترهای با LOOKUP-CHAIN تابع فراخوانی اولین برای فقط و

Algorithm 4.5.2: LOOKUP-CHAIN(p, i, j)Input: p, i, j.Output: m.

1 if m[i, j] <∞ then2 return m[i, j]؛3 end4 if i == j then5 m[i, j] = ؛06 else7 for k = 1 to j − 1 do8 q = LOOKUP-CHAIN(p, i, k)+ LOOKUP-CHAIN(p, k + 1, j) + pi−1 · pk · pj؛9 if q < m[i, j] then

10 m[i, j] = q؛11 end

12 end

13 end14 return m[i, j]؛

در RECURSIVE-MATRIX-CHAIN با مقایسه در MEMOIZED-MATRIX-CHAIN تابع چگونه که میدهد نشان ٢.۴ شکلشده یافته جدول در شدن، محاسبه جای به که میدهند نشان را مقادیری سایهدار زیردرختهای میکند. صرفهجویی زمان

میشوند. داده برگشت و(n٣)Oاجرا زمان در MEMOIZED-MATRIX-CHAIN تابع ،MATRIX-CHAIN-ORDER ی پویا برنامهریزی الگوریتم مشابه

میشود. اولیه مقداردهی MEMOIZED-MATRIX-CHAIN تابع از ۴ خط در بار یک جدول درایۀ O(n٢) از هرکدام میشود.کرد: تقسیم زیر دستۀ دو به میتوان را LOOKUP-CHAIN تابع فراخوانیهای

و میشود، اجرا الگوریتم ۴-١۴ خطوط لذا و m[i, j] =∞ که است زمانی فراخوانی .١

٣٠

Page 35: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

سپاری خاطر به پویا۵.۴. برنامهریزی مبانی .۴ فصل

برمیگرداند. ٢ خط در را مقدار سادگی به تابع لذا و m[i, j] <∞ که است زمانی فراخوانی .٢

دوم،فراخوانیهای نوع از فراخوانیهای است. جدول درایۀ هر ازای به یکی یعنی Θ(n٢) اول نوع از فراخوانیها تعدادفراخوانیهای LOOKUP-CHAIN فراخوانی یک که زمان هر میشود. انجام اول نوع از فراخوانیهای توسط که است بازگشتیمجموع در دوم نوع از فراخوانیهای تعداد بنابراین O(n)است. شده انجام فراخوانیهای تعداد میدهد، انجام را بازگشتیزمان اضافۀ به O(n) زمان در اول نوع از فراخوانی هر و دارد نیاز زمان O(١) به نوع این از فراخوانی هر است. O(n)

نتیجه در است. O(n٣) الگوریتم اجرای برای الزم زمان مجموع، در بنابراین میشود. اجرا آن فراخوانیهای برای الزمکرد. تبدیل O(n٣) اجرای زمان با الگوریتم یک به را Ω(٢n) اجرای زمان با الگوریتم یک سپاری، خاطر به از استفادهیا سپاری خاطر به الگوریتم یک با پایین به باال از روش با میتوان ماتریسهارا زنجیر ضرب مسألۀ خالصه، طور بههمپوشانی خاصیت از روش دو هر کرد. حل O(n٣) زمان در باال به پایین از صورت به پویا برنامهریزی الگوریتم یکفقط را زیرمسألهها این از یک هر روش دو هر و است Θ(n٢) متمایز زیرمسألههای تعداد میکنند. استفاده زیرمسألههازیرا میشود اجرا نمایی زمان در بازگشتی معمول الگوریتم سپاری، خاطر به تکنیک از استفاده بدون میکند. اجرا بار یک

میکند. حل بارها و بارها را شده حل زیرمسألههایپویا برنامهریزی باالی به پایین از روش شوند، حل بار یک حداقل باید زیرمسألهها تمام اگر معمول، کاربردهای دربازگشت به مربوط سربارۀ زیرا میکند عمل بهتر ثابت ضریب یک مقدار به سپاری خاطر به پایین به باال از روش از معموالدسترسی برای معمول روش که دارد وجود مسائلی این بر عالوه است. کمتر نیز جدول نگهداری به مربوط سربارۀ و ندارد رابرخی حل به نیازی اگر یابد. کاهش هم باز الزم فضای و زمان تا داد بهبود میتوان را پویا برنامهریزی الگوریتم در جدول بهاست. الزم که میکند حل را زیرمسألههایی فقط که دارد را ارجحیت این سپاری خاطر به روش آنگاه نباشد زیرمسألهها

تمرین

بهتری ماتریسهاکارایی زنجیر ضرب مسألۀ در ضربها بهینۀ تعداد تشخیص برای زیر روشهای از یک کدام .١الگوریتم اجرای یا کدام هر برای اسکالر ضربهای تعداد محاسبۀ و ضرب پرانتزگذاری راههای تمام بررسی دارد:

بیاورید. استدالل خود جواب برای ؟ RECURSIVE-MATRIX-CHAIN

کردن ماکزیمم پرانتزگذاری از هدف که میکنیم تعریف گونهای به ماتریسهارا زنجیر ضرب مسألۀ از نگارش یک .٢است؟ بهینه زیرساختار خاصیت دارای مسأله این آیا است. اسکالر ضربهای تعداد ( کردن مینیمم جای (به

است. زیرمسألهها همپوشانی خاصیت دارای تولید خط برنامهریزی مسألۀ چگونه که دهید توضیح .٣

بهینه جواب یک برای که آنهایی سپس و میشوند حل زیرمسألهها ابتدا ، پویا برنامهریزی در شد، بیان که همانطور .۴بهینه جواب یک یافتن برای زیرمسألهها تمام حل که میکند ادعا فردی میشود. انتخاب است نیاز مسأله برایمیتوان همواره ماتریسهارا زنجیر ضرب مسألۀ برای بهینه جواب یک که میکند پیشنهاد او نیست. الزم همواره(با داد انجام زیرمسألهها حل از قبل شود شکسته باید Ai · Ai+١ · · · · · Aj ضرب آن در که Ak انتخاب باکه بیاورید ماتریسها ضرب مسألۀ از مثال یک باشد). کمترین pi−١ · pk · pj مقدار که گونهای به k انتخاب

میشود. منجر بهینه غیر جواب یک به مسأله حل برای حریص روش این دهد نشان

٣١

Page 36: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

پویا برنامهریزی مبانی .۴ سپاریفصل خاطر به .۵.۴

٣٢

Page 37: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

۵ فصل

مشترک زیردنبالۀ طوالنیترین

رشتۀ یک شوند. مقایسه هم با مختلف زندۀ١ موجود چند یا دو DNAی تا است نیاز غالبا زیستشناسی، کاربردهای در،guanine ،adenis از عبارتند ممکن پایههای و میشوند نامیده پایه که است مولکولها از رشته یک شامل DNA ٢

یک با میتوان را DNA از رشته یک اولیهشان حروف با پایهها این از کدام هر نمایش با .themine و cytosineصورت به است ممکن موجود یک ی DNA مثال، عنوان به داد. نمایش A,C,G, T کاراکترهای مجموعه از رشتهدیگری موجود ی DNA که حالی در باشد S١ = ACCGGTCGAGTGCGCGGAAGCCGGCCGAA

دو مقایسۀ برای هدف یک باشد. S٢ = GTCGTTCGGAATGCCGTTGCTCTGTAAA صورت بهمثال، عنوان به است. یکدیگر به موجود دو ارتباط میزان نشاندهندۀ که است آنها شباهت میزان تشخیص ،DNA رشتۀو S١ رشتههای از هیچکدام فوق مثال در باشد. دیگری رشتۀ زیر آنها از یکی اگر نامید شبیه را DNA رشتۀ دو میتوانآنها از یکی تبدیل برای الزم تغییرات تعداد اگر مشابهند DNA رشتۀ دو دیگر، معیار عنوان به نیستند. دیگری زیررشتۀ S٢و S١ در S٣ که قسمی به است S٣ رشتۀ یک کردن پیدا ،S٢ و S١ شباهت اندازهگیری برای دیگر راه باشد. کم دیگری بهسر پشت به لزومی اما باشند شده ظاهر S٢ و S١ و S٣ در یکسان ترتیب به باید پایهها که معنی این به باشد موجود S٢طوالنیترین فوق، مثال در شبیهترند. هم به S٢ و S١ رشتههای باشد، طوالنیتر S٣ رشتۀ طول هرچه نیست. آنها بودن هم

است. GTCGTCGGAAGCCGGCCGAA صورت به S٣ رشتۀمیکنیم. بیان زیر شکل به ط.ز.م. مختصر طور به یا مشترک٣ زیردنبالۀ طوالنیترین مسألۀ با را شباهت اخیر شکلصورت به آید. بدست دنباله آن عضو چند یا یک حذف از که است دنبالهای شده، داده دنبالۀ از زیردنباله یک از منظورصعودی دنبالۀ یک اگر گویند X = ⟨x١, x٢, . . . , xm⟩ زیردنبالۀ یک را Z = ⟨z١, z٢, . . . , zm⟩ دنبالۀ رسمیتر،عنوان به .xij = zi ،j = ١, ٢, . . . , k هر ازای به که قسمی به باشد موجود X اندیسهای از ⟨i١, i٢, . . . , ik⟩⟨٢, ٣, ۵, ٧⟩ اندیس دنبالۀ با متناظر X = ⟨A,B,C,B,D,A,B⟩ زیردنبالۀ یک Z = ⟨B,C,D,B⟩ مثال،

است.مثال، عنوان به باشد. Y و X زیردنبالۀ Z اگر گویند Y و X دنبالههای از مشترک زیردنبالۀ یک را Z دنبالۀزیردنبالۀ یک ⟨B,C,A⟩ دنبالۀ آنگاه باشد Y = ⟨B,D,C,A,B,A⟩ و X = ⟨A,B,C,B,D,A,B⟩ اگردنبالۀ زیرا نیست Y و X از ط.ز.م.) خالصه طور به (یا مشترک زیردنبالۀ طوالنیترین دنباله این است. Y و X مشترکX از ط.ز.م. ⟨B,D,A,B⟩ دنبالۀ و دنباله این است. Y و X مشترک زیردنبالۀ یک نیز ۴ طول به ⟨B,D,A,B⟩

ندارند. بیشتر یا ۵ طول به مشترکی زیردنبالۀ دو این زیرا هستند Y وداده Y = ⟨y١, y٢, . . . , yn⟩ و X = ⟨x١, x٢, . . . , xm⟩ دنبالۀ دو ، مشترک زیردنبالۀ طوالنیترین مسالۀ درمسألۀ که داد خواهیم نشان بخش این در است. طول بیشترین با Y و X مشترک زیردنبالۀ یک یافتن هدف و شدهاند

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

١organisms٢strand٣longest common subsequence

٣٣

Page 38: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

مشترک زیردنبالۀ طوالنیترین .۵ مشترکفصل زیردنبالۀ طوالنیترین یک بررسی .١.۵

مشترک زیردنبالۀ طوالنیترین یک بررسی :١ مرحلۀ ١.۵

آیا ببینیم اینکه برای آنها بررسی Xو زیردنبالههای تمام بررسی از است عبارت ط.ز.م. مسألۀ حل برای بدیهی۴ روش یکمتناظر X زیردنبالۀ هر است. شده پیدا تاکنون که زیردنبالهای طوالنیترین داشتن دست در و خیر یا هستند Y زیردنبالۀاین نتیجه در و است موجود X برای زیردنباله ٢m لذا است. X از ⟨١, ٢, . . . ,m⟩ اندیسهای از زیرمجموعه یک با

میکند. غیرعملی طوالنی رشتههای برای را آن کاربرد که دارد نیاز اجرا برای نمایی زمان به روشهمانطور است. بهینه زیرساختار خاصیت دارای ط.ز.م. مسالۀ کرد، خواهیم اثبات زیر قضیۀ در که همانطور البتهعبارت به است. موجود ورودی رشتۀ دو پیشوندهای زوج با متناظر زیرمسألهها از طبیعی کالس یک دید خواهیم کهدنبالۀ از است عبارت ،i = ٠, . . . ,m ازای به ،X پیشوند iامین ،X = ⟨x١, x٢, . . . , xm⟩ دنبالۀ ازای به دقیقتر،و X۴ = ⟨A,B,C,B⟩ آنگاه X = ⟨A,B,C,B,D,A,B⟩ اگر مثال، عنوان به .Xi = ⟨x١, x٢, . . . , xi⟩

است. تهی دنبالۀ یک X٠

ط.ز.م.) یک از بهینه (زیرساختار . ١.١.۵ قضیهZ = ⟨z١, z٢, . . . , zk⟩ و باشند دنباله دو Y = ⟨y١, y٢, . . . , yn⟩ و X = ⟨x١, x٢, . . . , xm⟩ کنید فرض

باشد. Y و X از ط.ز.م. یک

است. Yn−١ و Xm−١ از ط.ز.م. یک Zk−١ و zk = xm = yn آنگاه xm = yn اگر .١

است. Y و Xm−١ از ط.ز.م. یک Z آنگاه zk = xm و xm = yn اگر .٢

است. Yn−١ و X از ط.ز.م. یک Z آنگاه zk = yn و xm = yn اگر .٣

اثبات.

که یافت k+ ١ طول به Y و X از زیردنباله یک و کرد اضافه Z به را xm = yn میتوان آنگاه zk = xm اگر (١)میدهیم نشان حال .zk = xm = yn داریم لذا است. متناقض است Y و X از ط.ز.م. یک Z اینکه فرض باو Xm−١ مشترک زیردنبالۀ یک Zk−١ پیشوند وضوح، به است. Yn−١ و Xm−١ از ط.ز.م. یک Zk−١ کهk−١ از بزرگتر طول به Yn−١ ١−Xmو Wاز مشترک زیردنبالۀ یک کنید فرض . است k−١ طول به Yn−١بدست Y Xو مشترک زیردنبالۀ Wیک به xm = yn کردن اضافه با اینصورت در خلف). (فرض باشد موجود

است. متناقض Z بودن ط.ز.م. با این و است k از بزرگتر آن طول که میآید

Xm−١ از مشترک زیردنبالۀ یک W اگر است. Y و Xm−١ مشترک زیردنبالۀ یک Z آنگاه zk = xm اگر (٢)یک Z که این فرض با این و است Y و Xm مشترک زیردنبالۀ یک W آنگاه باشد k از بزرگتر طول با Y و

است. متناقض است Y و X از ط.ز.م.

است. (٢) اثبات مشابه اثبات (٣)

ط.ز.م. مسألۀ بنابراین است. دنباله دو پیشوندهای از ط.ز.م. یک حاوی دنباله دو ط.ز.م. که میدهد نشان ١.١.۵ قضیۀهمپوشانی خاصیت دارای مسأله این برای بازگشتی حل راه یک که دید خواهیم است. بهینه زیرساختار خاصیت دارای

است. زیرمسألهها

بازگشتی حل راه یک :٢ مرحلۀ ٢.۵

به Y = ⟨y١, y٢, . . . , yn⟩ و X = ⟨x١, x٢, . . . , xm⟩ از ط.ز.م. یک یافتن برای که میکند ایجاب ١.١.۵ قضیۀاضافه با بیابیم. را Yn−١ و Xm−١ از ط.ز.م. یک باید آنگاه xm = yn اگر است. نیاز زیرمسأله دو یا یک بررسی

۴brute-force

٣۴

Page 39: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

ط.ز.م. یک طول محاسبۀ مشترک۵.٣. زیردنبالۀ طوالنیترین .۵ فصل

زیرمسألۀ دو آنگاه ،xm = yn اگر میآید. بدست Y و X از ط.ز.م. یک رشته، دو این ط.ز.م. به xm = yn کردندو این بین از .Yn−١ و X از ط.ز.م. یک یافتن دیگری و Y و Xm−١ از ط.ز.م. یک یافتن یکی شوند: حل باید زیرجوابهای از یکی است، ممکن حالتهای تنها حالت، دو این چون است. Y و X از ط.ز.م. یک طوالنیتر رشتۀ رشته،

شود. استفاده Y و X از ط.ز.م. برای باید زیرمسألهها بهینۀ

نیاز است ممکن Y و X ط.ز.م. کردن پیدا برای دید. ط.ز.م. مسألۀ در را زیرمسألهها همپوشانی خاصیت میتوانیافتن زیرمسألۀ دارای زیرمسألهها این از کدام هر اما باشد. Y و Xm−١ از ط.ز.م. و Yn−١ و X از ط.ز.م. یافتن به

است. مشابه زیرمسألههای زیر دارای نیز دیگر زیرمسألههای از بسیاری است. Yn−١ و Xm−١ برای ط.ز.م.

بازگشتی فراخوانی یک یافتن مستلزم ط.ز.م. مسألۀ حل برای بازگشتی روش ماتریسها، زنجیر ضرب مسألۀ مشابهi = ٠ اگر باشد. Yj و Xi دنبالههای از ط.ز.م. یک طول c[i, j] کنید فرض است. بهینه جواب یک مقدار یافتن برایبهینه زیرساختار خاصیت است. صفر طول دارای ط.ز.م. آنگاه باشد، صفر برابر زیردنبالهها از یکی طول یعنی ،j = ٠ یا

میدهد: بدست را زیر بازگشتی فرمول ط.ز.م. مسألۀ برای

c[i, j] =

٠ j = ٠ یا i = اگر٠c[i− ١, j − ١] + ١ xi = yj و i, j > اگر٠maxc[i, j − ١], c[i− ١, j]٠ xi = yj و i, j > اگر٠

(١.۵)

نظر در باید را زیرمسألهها کدام که میکند مشخص مسأله این در شرط یک بازگشتی، فرمول این در که میشود مشاهدهغیر در گرفت. نظر در را Yj−١ و Xi−١ از ط.ز.م. یک یافتن زیرمسألۀ باید آنگاه xi = yj که هنگامی بگیریم.مثالهای در گرفت. نظر در را Yj و Xi−١ از ط.ز.م. یافتن و Yj−١ و Xi از ط.ز.م. یافتن زیرمسألۀ دو اینصورت،هیچ ماتریسها، زنجیر ضرب و تولید خط برنامهریزی یعنی گرفتیم، نظر در پویا برنامهریزی الگوریتمهای برای که قبلیبرخی که نیست پویا برنامهریزی الگوریتم تنها البته ط.ز.م. یافتن نمیشد. خارج دور از مسأله شرایط با زیرمسألهای

میکند. خارج دور از مسأله شرایط مبنای بر را زیرمسألهها

ط.ز.م. یک طول محاسبۀ :٣ مرحلۀ ٣.۵

دو ط.ز.م. یک محاسبۀ برای نمایی اجرای زمان با بازگشتی الگوریتم یک میتوان راحتی به ،١.۵ معادلۀ از استفاده بابرای پویا برنامهریزی از میتوان است Θ(mn) مسأله این در متمایز زیرمسألههای تعداد چون هرچند، نوشت. را دنباله

کرد. استفاده باال به پایین از جوابها محاسبۀ

دریافت ورودی عنوان به را Y = ⟨y١, y٢, . . . , yn⟩ و X = ⟨x١, x٢, . . . , xm⟩ دنبالۀ دو LCS-LENGTH تابعسطر اولین ابتدا (یعنی میکند محاسبه سطری ترتیب به c[٠ · · ·m, ٠ · · ·n] جدول در را c[i, j] مقادیر سپس و میکندنیز را b[١ · · ·m, ١ · · ·n] جدول همچنین الگوریتم این آخر). الی و دوم سطر سپس و میشود پر راست به چپ از cبهینۀ جواب با متناظر جدول از درایهای به b[i, j] مفهومی، بطور میکند. پر بهینه جواب یک ساختن کردن ساده برایبرمیگرداند را c و b جداول تابع، این میآید. بدست c[i, j] محاسبۀ با همزمان و میکند اشاره شده انتخاب زیرمسألۀLCS-LENGTH الگوریتم توسط شده تولید جداول (١.۵) شکل است. Y و X برای ط.ز.م. یک طول حاوی c[m,n] والگوریتم اجرای زمان میدهد. نشان Y = ⟨B,D,C,A,B,A⟩ و X = ⟨A,B,C,B,D,A,B⟩ دنبالۀ روی را

دارد. نیاز زمان O(١) به جدول از درایه هر محاسبۀ زیرا است O(mn)

٣۵

Page 40: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

مشترک زیردنبالۀ طوالنیترین .۵ ط.ز.م.فصل یک ساختن .۴.۵

Algorithm 5.3.1: LCS-LENGTH(X,Y )

Input: X و Y .Output: c و b .جداول

1 m := length[X];n := length[Y ];2 for i := 1 to m do3 c[i, 0] = 0;4 end5 for j := 1 to n do6 c[0, j] = 0;7 end8 for i := 1 to m do9 for j := 1 to n do

10 if xi = yj then11 c[i, j] = c[i− 1, j − 1] + 1;12 b[i, j] = “ ”;

13 else14 if c[i− 1, j] ≥ c[i, j − 1] then15 c[i, j] = c[i− 1, j];16 b[i, j] = “ ↑ ”;17 else18 c[i, j] = c[i, j − 1];19 b[i, j] = “← ”;

20 end

21 end

22 end

23 end24 return c, b

ط.ز.م. یک ساختن :۴ مرحلۀ ۴.۵

X = از ط.ز.م. یک سریع ساختن برای میتوان را است شده برگردانده LCS-LENGTH تابع توسط که را c جدولدنبال با را جدول و میکنیم شروع b[m,n] از ابتدا کرد. استفاده Y = ⟨y١, y٢, . . . , yn⟩ و ⟨x١, x٢, . . . , xm⟩با است. ط.ز.م. عضو یک xi = yj که میکند ایجاب b[i, j] درایۀ در ” “ عالمت وجود میپیماییم. پیکانها کردنرا Y و X از ط.ز.م. یک زیر بازگشتی الگوریتم یافت. معکوس ترتیب به را ط.ز.م. عناصر میتوان روش این از استفاده

PRINT-LCS(b,X, length[X], length[Y ]) صورت به آن چاپ برای تابع فراخوانی میکند. چاپ صعودی ترتیب بهاست.

٣۶

Page 41: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

برنامه بهبود مشترک۵.۵. زیردنبالۀ طوالنیترین .۵ فصل

i

۰

۱

۲

۳

۴

۵

۶

۷

j ۰ ۱ ۲ ۳ ۴ ۵ ۶

yj

xi

B D C A B A

A

B

C

B

D

A

B

۰ ۰ ۰ ۰ ۰ ۰۰

۰ ۰ ۰ ۱ ۱ ۱۰

۰ ۱ ۱ ۱ ۲ ۲۱

۰ ۱ ۲ ۲ ۲ ۲۱

۰ ۱ ۲ ۲ ۳ ۳۱

۰ ۱ ۲ ۲ ۳ ۳۲

۰ ۱ ۲ ۳ ۳ ۴۲

۰ ۱ ۲ ۳ ۴ ۴۲

و X = ⟨A,B,C,B,D,A,B⟩ ورودی ازای به ۵.٣.١ الگوریتم توسط که b و c جداول :١.۵ شکلبا مناسب بردار یک و c[i, j] مقدار حاوی jام ستون و iام سطر درایۀ است. شده تولید Y = ⟨B,D,C,A,B,A⟩

است. b[i, j] مقدار

Algorithm 5.4.1: PRINT-LCS(b,X, i, j)

Input: b,X, i, j.Output: ط.ز.م.

1 if i = 0 یا j = 0 then2 return;3 end4 if b[i, j] = “ ” then5 PRINT-LCS(b,X, i− 1, j − 1);6 Print xi;

7 else8 if b[i, j] = “ ↑ ” then9 PRINT-LCS(b,X, i− 1, j);

10 else11 PRINT-LCS(b,X, i, j − 1);12 end

13 end

تابع این اجرای برای الزم زمان میکند. چاپ را ”BCBA“ مقدار فوق تابع ،(١.۵) شکل در b جدول برایمیشود. کم j و i مقادیر از یکی حداقل از واحد یک بازگشتی، اجرای مرحله هر در زیرا است O(m+ n)

برنامه بهبود ۵.۵

بخشید. بهبود را آن برای نیاز مورد حافظۀ میزان یا الگوریتم اجرای زمان میتوان مواقع اکثر در الگوریتم، طراحی از پسبهبود را آن میتواند فوق برنامۀ در تغییرات برخی میکند. صدق پویا برنامهریزی الگوریتمهای مورد در مخصوصا کار ایننیز تغییرات برخی بخشد. بهبود تئوری لحاظ از را کارایی که آن بدون دهد کاهش پیچیدگیها در را ثابتها مقدار و دهد

٣٧

Page 42: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

مشترک زیردنبالۀ طوالنیترین .۵ برنامهفصل بهبود .۵.۵

شود. منجر توجهی قابل مقدار به الگوریتم نیاز مورد حافظۀ و زمان بهبود به است ممکنسه به فقط جدول از c[i, j] درایۀ هر که است آن امر این دلیل کرد. حذف کال را b جدول میتوان مثال، عنوان بهدر c[i, j] مقدار اگر .c[i, j − ١] و c[i− ١, j] ،c[i− ١, j − ١] از عبارتند که است وابسته c جدول از دیگر درایۀاست رفته کار به c[i, j] محاسبۀ در مقدار سه این از یک کدام که کرد مشخص میتوان ثابت زمان یک در آنگاه باشد دستروشی از استفاده با O(m+ n) زمان در میتوان را ط.ز.م. یک بنابراین باشد. b جدول از استفاده به نیازی آنکه بدوناستفاده با هرچند آورد). بدست را تابع این کد شبه که است خواسته خواننده از ٢ تمرین) ساخت Print-LCS تابع مشابهاز را الگوریتم برای نیاز مورد فضای کاهش، این اما میشود کاسته Θ(mn) مقدار به الزم حافظۀ میزان از روش این از

داریم. نیاز حافظه فضای Θ(mn) به c جدول نگهداری برای زیرا نمیدهد کاهش تئوری لحاظاز ردیف دو به فقط لحظه هر در زیرا داد کاهش نیز را LCS-LENGTH تابع برای نیاز مورد حافظۀ فضای میتوان اماشده محاسبه قبل مرحلۀ در که ردیفی به فقط جدول، از ردیف یک محاسبۀ برای دقیقتر، عبارت به داریم. نیاز c جدولc از ردیف یک برای الزم فضای از بیشتر اندکی ط.ز.م. محاسبۀ برای نیاز مورد حافظۀ فضای حقیقت در است. نیازنیاز مورد ط.ز.م. یک طول فقط که میدهد بهبود را نیاز مورد فضای صورتی در تکنیک این ببینید). را ۴ (تمرین استزمان در آن محاسبۀ برای کوچک جدول این در موجود اطالعات آنگاه باشد، نظر مورد ط.ز.م. یک ساختن اگر اما باشد.

نیست. کافی O(m+ n)

تمرین

بیابید. ⟨٠, ١, ٠, ١, ١, ٠, ١, ١, ٠⟩ و ⟨١, ٠, ٠, ١, ٠, ١, ٠, ١⟩ برای ط.ز.م. یک .١

Y = و X = ⟨x١, x٢, . . . , xm⟩ دنبالههای و c جدول از استفاده با میتوان چگونه که دهید نشان .٢ساخت. b جدول از استفاده بدون و O(m+ n) زمان در را Y و X برای ط.ز.م. یک ⟨y١, y٢, . . . , yn⟩

شود. اجرا O(mn) زمان در که دهید تغییر گونهای به را LCS-LENGTH تابع سپاری، خاطر به تکنیک از استفاده با .٣

عالوۀ به c جدول از درایه ٢×min(m,n) تنها نگهداری با را ط.ز.م. یک طول میتوان چگونه که دهید نشان .۴O(١) عالوۀ به min(m,n) با را کار این میتوان چگونه دهید نشان سپس کرد. محاسبه اضافی فضای O(١)

داد. انجام اضافی فضای

را عدد n شامل دنباله یک از صعودی زیردنبالۀ طوالنیترین که کنید ارائه O(n٢) اجرای زمان با الگوریتم یک .۵کند. پیدا

عدد n شامل دنباله یک از صعودی زیردنبالۀ طوالنیترین که کنید ارائه O(n log n) اجرای زمان با الگوریتم یک .۶عضو آخرین بزرگی به حداقل i طول به کاندید زیردنبالۀ یک از عضو آخرین که کنید دقت (راهنمایی: کند. پیدا رانگهداری ورودی دنبالۀ به آنها زدن پیوند با را کاندید زیردنبالههای است. i − ١ طول به کاندید زیردنبالۀ یک از

کنید).

٣٨

Page 43: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

۶ فصل

بهینه دودویی جستجوی درختهای

انگلیسی کلمۀ هر برای منظور، این برای میکنیم. طراحی را فارسی به انگلیسی متون ترجمۀ جهت برنامهای کنید فرضدودویی جستجوی درخت یک ساختن جستجو، انجام برای روش یک داریم. آن فارسی معادل کردن پیدا به نیاز متن، دربرای را جستجو درخت چون است. آن همراه اطالعات عنوان به آن فارسی معادل و کلید عنوان به انگلیسی کلمۀ n باساختمان از استفاده با است. جستجو برای الزم زمان کل کردن کمینه هدف میکنیم، جستجو متن در کلمه هر معادل یافتنپاسخ O(log n) زمان در میتوان جستجو هر به دیگر، متوازن دودویی درخت هر یا قرمز-سیاه١ درخت نظیر دادههاییمتن در که “the” نظیر کلماتی که دارد امکان نتیجه در و میشوند ظاهر متن در مختلف تکرارهای با مختلف کلمات اما داد.استفاده ندرت به که کلماتی که حالی در شوند ذخیره جستجو درخت در ریشه از دور محلی در میشوند ظاهر زیاد تعداد بهکند باعث صورت این به ذخیرهسازی است. شده نگهداری ریشه به نزدیک محلی در ، “mycophagist” نظیر میشوند،درخت از رأسی عمق با برسند کلید یک به تا شوند مالقات جستجو هنگام در باید که رئوسی تعداد زیرا میشود ترجمه شدنمحلی در میشوند ظاهر متن در زیاد تکرار با که کلماتی که است مطلوب لذا است. برابر ١ بعالوۀ است کلید حاوی کهکه باشند نداشته فارسی معادل که باشند موجود انگلیسی در کلماتی است ممکن این بر عالوه شوند. ذخیره ریشه به نزدیکتکرار تعداد که آن فرض به که، اینجاست سوال حال نمیشود. ظاهر اصال دودویی جستجوی درخت در کلمه حالت این دردر که رئوسی تعداد که گونهای به داد تشکیل را دودویی جستجوی درخت میتوان چگونه باشند، شده داده متن در لغات

باشد. ممکن تعداد کمترین میشوند مالقات جستجوها تمام طولمتمایز کلید n از دنباله یک رسمی، طور به مینامند. ٢ بهینه دودویی جستجوی درخت را ساختار اینساختن هدف و (k١ < k٢ < · · · < kn (یعنی شدهاند داده شده مرتب صورت به K = ⟨k١, k٢, . . . , kn⟩از برخی همچنین میشود. جستجو pi احتمال به ki کلید هر است. کلیدها این روی دودویی جستجوی درخت یککه مقادیری نمایش برای d٠, d١, . . . , dn پوچ کلید n + ١ لذا و باشند نداشته K در مقداری است ممکن جستجوهاتمام dn میدهد، نشان است k١ از کمتر که را مقادیری تمام d٠ دقیقتر، طور به میگیریم. نظر در ندارند وجود K درو ki بین مقادیر di پوچ کلید ،i = ١, ٢, . . . , n − ١ هر ازای به و میدهد نشان است kn از بزرگتر که را مقادیریشود. انجام میشود ختم di به که جستجو یک که دارد وجود qi احتمال یک پوچ کلید هر برای میدهد. نشان را ki+١

رأس یک ki کلید هر میدهد. نشان را کلید n = ۵ از مجموعه یک روی دودویی جستجوی درخت دو ١.۶ شکلکلید (یافتن است ناموفق یا (ki کلید (یافتن است موفق یا جستجو، هر است. برگ یک di پوچ کلید هر و درخت داخلی

داریم لذا و (di پوچ

n∑i=١

pi +

n∑i=٠

qi = ١. (١.۶)

١Red-Black tree٢optimal binary search tree

٣٩

Page 44: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بهینه دودویی جستجوی درختهای .۶ فصل

(ب)(الف)

k۱k۵

d۰ d۱k۴ d۵

k۳ d۴

d۲ d۳

k۱k۴

d۰ d۱ k۳ k۵

d۲ d۳ d۴d۵

زیر: احتماالت با کلید n = ۵ از مجموعه یک برای دودویی جستجوی درخت دو :١.۶ شکل

مورد جستجوی هزینۀ با جستجو درخت یک (الف) .i ٠ ١ ٢ ٣ ۴ ۵pi ٠٫ ١۵ ٠٫ ١٠ ٠٫ ٠۵ ٠٫ ١٠ ٠٫ ٢٠qi ٠٫ ٠۵ ٠٫ ١٠ ٠٫ ٠۵ ٠٫ ٠۵ ٠٫ ٠۵ ٠٫ ١٠

است. بهینه درخت این .٢٫ ٧۵ انتظار مورد جستجوی هزینۀ با جستجو درخت یک (ب) .٢٫ ٨٠ انتظار

درخت یک در جستجو یک انتظار مورد هزینۀ میتوانیم است، شده داده پوچ کلید هر شدن جستجو احتمال چونجستجو روند در که رئوسی تعداد جستجو، یک انجام واقعی هزینۀ کنید فرض کرد. محاسبه را شده داده دودویی جستجویT در جستجو یک انتظار مورد هزینۀ بنابراین باشد. یک، بعالوۀ درخت در شده یافته رأس عمق یعنی شدهاند، بررسی

از است عبارت

E(T در جستجو هزینۀ ) =n∑

i=١(depthT (ki) + ١) · pi +

n∑i=٠

(depthT (di) + ١) · qi

= ١ +

n∑i=١

depthT (ki) · pi +n∑

i=٠depthT (di) · qi (٢.۶)

میشود. حاصل ١.۶ معادلۀ از تساوی آخرین میدهد. نشان را T جستجوی درخت در رأس عمق depthT آن در کهاست: آمده زیر جدول در و شده محاسبه (الف) ١.۶ شکل مثال برای جستجو انتظار مورد هزینۀ

سهم احتمال عمق رأس٠٫ ٣٠ ٠٫ ١۵ ١ k١٠٫ ١٠ ٠٫ ١٠ ٠ k٢٠٫ ١۵ ٠٫ ٠۵ ٢ k٣٠٫ ٢٠ ٠٫ ١٠ ١ k۴٠٫ ۶٠ ٠٫ ٢٠ ٢ k۵٠٫ ١۵ ٠٫ ٠۵ ٢ d٠٠٫ ٣٠ ٠٫ ١٠ ٢ d١٠٫ ٢٠ ٠٫ ٠۵ ٣ d٢٠٫ ٢٠ ٠٫ ٠۵ ٣ d٣٠٫ ٢٠ ٠٫ ٠۵ ٣ d۴٠٫ ۴٠ ٠٫ ١٠ ٣ d۵٢٫ ٨٠ مجموع

۴٠

Page 45: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بهینه دودویی جستجوی درخت ساختار بهینه۶.١. دودویی جستجوی درختهای .۶ فصل

انتظار مورد هزینۀ که گونهای به است دودویی جستجوی درخت یک طراحی هدف باشند، شده داده احتماالت مجموعۀ اگر١.۶(ب) شکل مینامیم. بهینه دودویی جستجوی درخت یک را درخت این باشد. ممکن مقدار کمترین آن در جستجومورد هزینۀ آن در که میدهد بدست شکل توضیحات در شده داده احتماالت برای را بهینه دودویی جستجوی درخت یککمترین با درختی لزوما بهینه دودویی جستجوی درخت یک که میدهد نشان مثال این است. ٢٫ ٧۵ جستجو برای انتظاردر نمیشود. منتهی بهینه درخت یک به لزوما ریشه، در احتمال بیشترین با کلید دادن قرار همچنین نیست. عمق مجموع(کمترین است k٢ کلید بهینه دودویی جستجوی درخت ریشۀ ولی است جستجو احتمال بیشترین دارای k۵ کلید مثال، این

.(٢٫ ٨۵ از است عبارت k۵ ریشۀ با دودویی جستجوی درخت هر برای انتظار مورد هزینۀ

درخت هر رئوس نمیشود. منجر کارا الگوریتم یک به حاالت تمام بررسی ماتریسها، زنجیر ضرب مسألۀ مشابهدودویی جستجوی درخت یک که کرد برچسبگذاری k١, k٢, . . . , kn کلیدهای با گونهای به میتوان را رأس n با دودوییدودویی درختهای تعداد که داد نشان میتوان کرد. اضافه درخت برگهای در را مجازی کلیدهای میتوان سپس و بسازداین قسمت این در دارد. نیاز نمایی زمان به ممکن درختهای تمام بررسی لذا و Ω(۴n/n٣/٢) با است برابر رأس n با

میکنیم. حل پویا برنامهریزی از استفاده با را مسأله

بهینه دودویی جستجوی درخت ساختار :١ مرحله ١.۶

میکنیم. آغاز زیردرختها مورد در مشاهده یک با بهینه دودویی جستجوی درخت یک بهینۀ زیرساختار کردن مشخص برایبه ،ki, . . . , kj مجاور٣ کلیدهای شامل زیردرخت این بگیرید. نظر در را دودویی جستجوی درخت یک درخت زیر یکبا برگهایی شامل همچنین ki, . . . , kj کلیدهای شامل زیردرخت یک این، بر عالوه است. ،١ ≤ i ≤ j ≤ n ازای

است. di−١, . . . , dj مجازی کلیدهایT ′ زیردرخت دارای T بهینه دودویی جستجوی درخت یک اگر میکنیم. بیان را بهینه زیرساختار خاصیت حالپوچ کلیدهای و ki, . . . , kj کلیدهای برای بهینه درخت یک باید T ′ زیردرخت آنگاه باشد ki, . . . , kj کلیدهای شاملT ′′ درخت یک اگر است. استفاده قابل بچسبان و ببر معمول روش خاصیت، این اثبات برای باشد. di−١, . . . , djدرخت یک ،T ′′ با T ′ جایگزینی با آنگاه خلف) (فرض باشد موجود T ′ انتظار مورد هزینۀ از کمتر انتظار مورد هزینۀ با

است. متناقض T درخت بودن بهینه با که میشود حاصل T از کمتر انتظار مورد هزینۀ با دودویی جستجوی

داریم. نیاز زیرمسألهها بهینۀ جواب از استفاده با بهینه جواب یک ساختن برای بهینه زیرساختار خاصیت این به مابهینه زیردرخت یک ریشۀ ،kr(i ≤ r ≤ j) مثال کلیدها، این از یکی و باشند شده داده ki, . . . , kj کلیدهای کنید فرض(di−١, . . . , dr−١ پوچ کلیدهای (و ki, . . . , kr−١ کلیدهای حاوی kr ریشۀ چپ زیردرخت باشد. کلیدها این شاملممکن حالتهای تمام اگر است. (dr, . . . , dj پوچ کلیدهای (و kr+١, . . . , kj کلیدهای حاوی آن راست زیردرخت وجستجوی درخت و ki, . . . , kr−١ شامل بهینه دودویی جستجوی درخت و شوند بررسی ،i ≤ r ≤ j ،kr ریشۀ برایki, . . . , kj برای بهینه دودویی جستجوی درخت یک میتوان آنگاه باشند شده داده kr+١, . . . , kj شامل بهینه دودویی

یافت. را

کلید ،ki, . . . , kj کلیدهای شامل زیردرخت در کنید فرض است. تهی زیردرختهای وضعیت باقیمانده حالت تنهاطبیعی است. ki, . . . , ki−١ کلیدهای حاوی ki چپ زیردرخت درخت، ساختار بنابر شود. انتخاب ریشه عنوان به kiکه کرد تعبیر اینچنین میتوان لذا بودند. نیز پوچ کلید شامل زیردرختها تمام اما است. تهی دنبالهای چنین که استقرینه، به است. di−١ پوچ کلید یک شامل تنها و نیست واقعی کلید هیچ شامل ki, . . . , ki−١ کلیدهای حاوی زیردرختهیچ حاوی لذا و است kj , . . . , kj+١ کلیدهای حاوی آن راست زیردرخت شود، انتخاب درخت ریشۀ عنوان به kj اگر

داراست. را dj پوچ کلید یک تنها و نیست واقعی کلید

٣contiguous

۴١

Page 46: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بهینه دودویی جستجوی درختهای .۶ بازگشتیفصل حل راه یک .٢.۶

بازگشتی حل راه یک :٢ مرحلۀ ٢.۶

شده، گرفته نظر در زیرمسألههای فضای کنیم. ارائه بهینه جواب مقدار یافتن برای بازگشتی حل راه یک تا داریم آمادگی حالj(اگر ≥ i−١ و j ≤ n ،i ≥ ١ آن در که است ki, . . . , kj کلیدهای حاوی بهینه دودویی جستجوی درخت یک یافتنمورد هزینۀ e[i, j] کنید فرض است). موجود di−١ پوچ کلید یک فقط و ندارد وجود واقعی کلید هیچ آنگاه j = i− ١محاسبۀ هدف نهایت در است. ki, . . . , kj کلیدهای حاوی بهینه دودویی جستجوی درخت یک جستجوی برای انتظار

است. e[١, n]e[i, i− ١] = qi−١ حالت این در انتظار مورد هزینۀ لذا و دارد وجود di−١ پوچ کلید یک فقط آنگاه j = i−١ اگرکلیدهای با بهینه دودویی جستجوی سپسیکدرخت و شود انتخاب ki, . . . , kj بین از باید kr ریشۀ ،j ≥ i برای است.زیردرخت در kr+١, . . . , kj کلیدهای با بهینه دودویی جستجوی درخت یک و آن چپ سمت زیردرخت در ki, . . . , kr−١چه میگیرد قرار رأس یک زیردرخت وقتی زیردرخت، یک انتظار مورد جستجوی هزینۀ اما گیرد. قرار آن راست سمتاین انتظار مورد جستجوی هزینۀ ،٢.۶ معادلۀ بنابر میکند. پیدا افزایش واحد یک رأس هر عمق کار، این با میکند؟ تغییری،ki, . . . , kj کلیدهای با زیردرخت یک برای میکند. پیدا افزایش زیردرخت در احتماالت تمام مجموع اندازۀ به زیردرخت

با را احتماالت مجموع

w(i, j) =

j∑ℓ=i

pℓ +

j∑ℓ=i−١

qℓ (٣.۶)

آنگاه باشد ki, . . . , kj کلیدهای حاوی بهینه زیردرخت یک ریشۀ kr اگر بنابراین میدهیم. نمایش

e[i, j] = pr + (e[i, r − ١] + w(i, r − ١)) + (r[r + ١, j] + w(r + ١, j)).داریم w(i, j) = w(i, r − ١) + pr + w(r + ١, j) چون

e[i, j] = e[i, r − ١] + e[r + ١, j] + w(i, j). (۴.۶)

که گونهای به ریشه انتخاب با است. بهینه درخت ریشۀ kr کدام میدانیم که است این بر فرض (۴.۶) بازگشتی رابطۀ درمیآید: بدست زیر صورت به نهایی بازگشتی فرمول دهد، نتیجه را انتظار مورد جستجوی هزینۀ کمترین

e[i, j] =

qi−١ j = i− ١ ,اگر

mini≤r≤je[i, r − ١] + e[r + ١, j] + w(i, j) i ≤ j اگر .(۵.۶)

برای میدهد. بدست را ki, . . . , kj حاوی بهینه دودویی جستجوی درخت در انتظار مورد جستجوی هزینۀ ،e[i, j] مقدارتعریف r اندیس را ،١ ≤ i ≤ j ≤ n ازای به ،root[i, j] مقدار ، بهینه دودویی جستجوی درخت ساخت به کمکمقادیر محاسبۀ روش هرچند است. ki, . . . , kj کلیدهای حاوی بهینه دودویی جستجوی درخت یک ریشۀ kr که میکنیماست شده واگذار خواننده به مقادیر این با بهینه دودویی جستجوی درخت یک ساختن اما شد خواهد ارائه root[i, j]

.(١ تمرین (ر.ک.

دودویی جستجوی درخت یک انتظار مورد جستجوی هزینۀ محاسبۀ :٣ مرحلۀ ٣.۶بهینه

ماتریسها زنجیر ضرب و بهینه دودویی جستجوی درخت مسائل ساختار شباهتهای متوجه است ممکن خواننده اینجا تامسألۀ در آنچه مشابه است. مجاور زیراندیسهای تمام حاوی زیرمسألهها فضای مسأله، دو هر برای باشد. شدهآن جای میشود.به منجر کارا غیر الگوریتم یک به ۵.۶ معادلۀ از مستقیم پیادهسازی یک ماتریسهادیدیم، زنجیر ضرب

۴٢

Page 47: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

انتظار مورد جستجوی هزینۀ محاسبۀ بهینه۶.٣. دودویی جستجوی درختهای .۶ فصل

زیرا است n + ١ تا n جای به آرایه اول اندیس میکنیم. ذخیره e[١ · · ·n + ١, ٠ · · ·n] جدول در را e[i, j] مقادیرe[n+١, n] در و شده محاسبه باید مقدار این صورت این در که باشیم داشته dn پوچ کلید حاوی زیردرختی که دارد امکانباشیم داشته d٠ پوچ کلید حاوی زیردرختی که دارد امکان زیرا میشود شروع ٠ از نیز آرایه اندیس دومین شود. ذخیرهj ≥ i − ١ ازای به e[i, j] مقادیر از فقط ما شود. ذخیره e[١, ٠] در و شده محاسبه باید مقدار این صورت این در کهki, . . . , kj کلیدهای حاوی بهینه زیردرخت ریشۀ کردن ذخیره برای root[i, j] جدول از همچنین کرد. خواهیم استفاده

میکند. استفاده ١ ≤ i ≤ j ≤ n آن در که [i, j] اندیسهای از فقط نیز جدول این لذا میکنیم. استفاده

دارد نیاز زمان Θ(j − i) به w(i, j) مقدار محاسبۀ داریم. نیار کارا الگوریتم یک طراحی برای نیز دیگر جدول یکجدولی در و شده محاسبه قبلی مراحل در که w مقادیر سایر از استفاده با را آن ابتدا، از آن محاسبۀ جای به میتوان اماذخیره w[١ · · ·n + ١, ٠ · · ·n] جدول در و شده محاسبه بار یک w(i, j) هر کار این با کرد. محاسبه شدهاند ذخیرهمقدار ،j ≥ i برای میشوند. محاسبه ١ ≤ i ≤ n ازای به ، w[i, i − ١] = qi−١ مقادیر پایه، حالت برای میشود.

میشود: محاسبه زیر فرمول از استفاده با w[i, j]

w[i, j] = w[i, j − ١] + pi + qj . (۶.۶)

میشود. صرف O(١) زمان w جدول درایۀ Θ(n٢) از یک هر محاسبۀ برای بنابراین

برمیگرداند. را root و e جداول و کرده دریافت را n مقدار و q٠, . . . , qn ،p١, . . . , pn مقادیر ۶.٣.١ الگوریتمحلقۀ در است. ساده تابع این عملیات ،MATRIX-CHAIN-ORDER تابع با تابع این شباهتهای و فوق توضیحات به توجه بااز استفاده با ۵-١٨ خطوط for حلقۀ در میکند. اولیه مقداردهی را w[i, i − ١] و e[i, i − ١] ،١-۴ خطوط در forاستفاده ١ ≤ i ≤ j ≤ n هر ازای به w[i, j] و e[i, j] محاسبۀ برای w[i, i − ١] و e[i, i − ١] از بازگشتی روابطدر میشود. محاسبه i = ١, ٢, . . . , n ازای به w[i, i] و e[i, i] مقادیر ℓ = ١ که هنگامی حلقه تکرار اولین در میکند.میشود محاسبه i = ١, ٢, . . . , n− ١ ازای به w[i, i+ ١] و e[i, i+ ١] مقادیر ،ℓ = ٢ برای ، حلقه تکرار دومینباید kr کلید کدام دهد تشخیص تا میکند بررسی را اندیسها تمام ،١-١٠۶ خطوط ،for حلقۀ داخلیترین در آخر. الی وکه هنگامی for حلقۀ این شود. استفاده ki, . . . , kj کلیدهای حاوی بهینه دودویی جستجوی درخت یک ریشۀ عنوان به

میکند. ذخیره root[i, j] در را آن کند، پیدا ریشه برای r از بهتر کلیدی

۴٣

Page 48: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بهینه دودویی جستجوی درختهای .۶ انتظارفصل مورد جستجوی هزینۀ محاسبۀ .٣.۶

Algorithm 6.3.1: OPTIMAL-BST(p, q, n)Input: p1, . . . , pn, q0, . . . , qn, n.Output: e و root.

1 for i := 1 to n+ 1 do2 e[i, i− 1] := qi−1;3 w[i, i− 1] := qi−1

4 end5 for ℓ := 1 to n do6 for i := 1 to n− ℓ+ 1 do7 j := i+ ℓ− 1;8 e[i, j] :=∞;9 w[i, j] := w[i, j − 1] + pj + qj;

10 for r := i to j do11 t := m[i, r − 1] +m[r + 1, j] + w[i, j];12 if t < e[i, j] then13 e[i, j] := t;14 root[i, j] := r;

15 end

16 end

17 end

18 end19 return e, root;

است شده محاسبه ١.۶ شکل کلیدهای روی OPTIMAL-BST تابع توسط که را root و w ،e جداول ،(٢.۶) شکل درگیرد. قرار افقی صورت به آنها اصلی قطر تا چرخیدهاند جداول ماتریسها، زنجیر ضرب مثال مشابه است. شده داده نشان

میکند. پر سطر هر در راست به چپ از و باال به پایین از را سطرها OPTIMAL-BST تابعقابل سادگی به امر این علت میشود. (n٣)Oاجرا زمان در OPTIMAL-BST تابع ،MATRIX-CHAIN-ORDER تابع مشابهاندیسهای میکند. اختیار را n تا مقادیر حلقه اندیس هر و گرفتهاند قرار تودرتو الیه سه در for حلقههای زیرا است دیدنحداکثر آنها بین اختالف ولی ندارند MATRIX-CHAIN-ORDER تابع حلقههای مشابه کرانههایی OPTIMAL-BST تابع در حلقهدارد. نیاز Ω(n٣) اجرا برای زمان به OPTIMAL-BST تابع ،MATRIX-CHAIN-ORDER تابع مشابه بنابراین است. واحد یک

تمرین

درخت ساختار ،root جدول داشتن دست در با که (CONSTRUCT-OPTIMAL-BST(root)) بنویسید الگوریتمی .١با متناظر زیر صورت به ساختاری باید تابع ،٢.۶ شکل در مثال، عنوان به کند. چاپ را بهینه دودویی جستجوی

کند. چاپ ١.۶(ب) شکل در شده داده نشان بهینه دودویی جستجوی درختاست. ریشه k٢

است. k٢ چپ فرزند k١

است. k١ چپ فرزند d٠است. k١ راست فرزند d١است. k٢ راست فرزند k۵است. k۵ چپ فرزند k۴

۴۴

Page 49: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

انتظار مورد جستجوی هزینۀ محاسبۀ بهینه۶.٣. دودویی جستجوی درختهای .۶ فصل

e w

root

۰

۱

۲

۳

۴

۵۱

۲

۳

۴

۵

۶ ۰

۱

۲

۳

۴

۵ ۱

۲

۳

۴

۵

۶

j i j i

j i

۱

۲

۳

۴

۵ ۱

۲

۳

۴

۵

۲.۷۵

۱.۷۵ ۲.۰۰

۱.۲۵ ۱.۲۰ ۱.۳۰

۰.۹۰ ۰.۷۰ ۰.۶۰ ۰.۹۰

۰.۴۵ ۰.۴۰ ۰.۲۵ ۰.۳۰ ۰.۵۰

۰.۰۵ ۰.۱۰ ۰.۰۵ ۰.۰۵ ۰.۰۵ ۰.۱۰

۱.۰۰

۰.۷۰ ۰.۸۰

۰.۵۵ ۰.۵۰ ۰.۶۰

۰.۴۵ ۰.۳۵ ۰.۳۰ ۰.۵۰

۰.۳۰ ۰.۲۵ ۰.۱۵ ۰.۲۰ ۰.۳۵

۰.۰۵ ۰.۱۰ ۰.۰۵ ۰.۰۵ ۰.۰۵ ۰.۱۰

۲

۲ ۴

۲ ۲ ۵

۱ ۲ ۴ ۵

۱ ۲ ۳ ۴ ۵

است. شده محاسبه ١.۶ شکل کلیدهای روی ۶.٣.١ الگوریتم توسط که root[i, j] و w[i, j] ،e[i, j] جداول :٢.۶ شکل

گیرد. قرار افقی آنها اصلی قطر تا چرخیدهاند جداول

است. k۴ چپ فرزند k٣

است. k٣ چپ فرزند d٢است. k٣ راست فرزند d٣است. k۴ راست فرزند d۴است. k۵ راست فرزند d۵

زیر احتماالت با کلید n = ٧ از مجموعهای برای بهینه دودویی جستجوی درخت یک ساختار و انتظار مورد هزینۀ .٢بیابید. را

i ٠ ١ ٢ ٣ ۴ ۵ ۶ ٧pi ٠٫ ٠۴ ٠٫ ٠۶ ٠٫ ٠٨ ٠٫ ٠٢ ٠٫ ١٠ ٠٫ ١٢ ٠٫ ١۴qi ٠٫ ٠۶ ٠٫ ٠۶ ٠٫ ٠۶ ٠٫ ٠٨ ٠٫ ٠۵ ٠٫ ٠۵ ٠٫ ٠۵ ٠٫ ٠۵

تابع ٩ خط در (٣.۶) معادلۀ از استفاده با مستقیما w[i, j] مقادیر ،w جدول نگهداری جای به کنید فرض .٣اجرای زمان بر تاثیری چه تغییر این شود. استفاده تابع ١١ خط در آن مقدار و شود محاسبه OPTIMAL-BST

دارد؟ OPTIMAL-BST

هر ازای به که قسمی به دارد وجود بهینه زیردرختهای برای ریشهای همواره که است داده نشان [٣] کنوث .۴و کنید استفاده واقعیت این از .root[i, j − ١] ≤ root[i, j] ≤ root[i + ١, j] ،١ ≤ i ≤ j ≤ n

شود. اجرا Θ(n٢) زمان در که دهید تغییر گونهای به را OPTIMAL-BST الگوریتم

۴۵

Page 50: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

بهینه دودویی جستجوی درختهای .۶ انتظارفصل مورد جستجوی هزینۀ محاسبۀ .٣.۶

۴۶

Page 51: (DynamicProgramming) - Yazdcs.yazd.ac.ir/farshi/Teaching/DP3901/DP-Notes.pdf؟ﺖﺴﯿﭼﺎﯾﻮﭘیﺰﯾرﻪﻣﺎﻧﺮﺑ .١.١ ﻪﻣﺪﻘﻣ .١ﻞﺼﻓ ﻪﺟﻮﺗ.(١.١.٣ﻢﺘﯾرﻮﮕﻟا.ک.ر

کتابنامه

[1] T. C. Hu and M. T. Shing. Computation of matrix chain products, part I. SIAMJournal on Computing, 11(2):362–373, 1982.

[2] T. C. Hu and M. T. Shing. Computation of matrix chain products, part II. SIAMJournal on Computing, 13(2):228–251, 1984.

[3] D. E. Knuth. Optimum binary search trees. Acta Informatica, 1:14–25, 1971.

۴٧