قضیه اصلی (تحلیل الگوریتمها)
در تحلیل الگوریتمها، قضیه اصلی برای تحلیل مجانبی بسیاری از الگوریتمهای تقسیم و حل استفاده میشود. در این نوع از الگوریتمها معمولاً میتوان یک رابطهٔ بازگشتی برای توصیف زمان اجرای آنها پیدا کرد. برای توصیف پیچیدگی چنین رابطهای (به کمک نماد ) از این قضیه استفاده میشود.
البته نمیتوان هر رابطهٔ بازگشتی را به کمک این قضیه حل کرد. روش اکرا-بازی تعمیمی از این قضیه است. این قضیه با کتاب معروف مقدمهای بر الگوریتمها به شهرت رسید.
شکل کلی
[ویرایش]قضیه اصلی یک روش سرراست برای حل روابط بازگشتی به فرم زیر ارائه میکند:
با فرض این که و و باشند.
این رابطهٔ بازگشتی زمان اجرای الگوریتمی را توصیف میکند که مسألهای به اندازهٔ را به زیرمسأله (همگی به اندازهٔ تقریبی ) تقسیم میکند. همچنین هزینهٔ تقسیم و ترکیب زیرمسائل است.
مقدار توان بحرانی را به صورت تعریف میکنیم. در این صورت قضیه اصلی بیان میکند که:[۱]
حالت | شرط | شرح قضیه |
---|---|---|
۱ | اگر | آنگاه خواهد بود. |
۲ | اگر باشد | در آن صورت میشود. |
۳ | اگر و همچین شرط حالت طبیعی زیر برقرار باشد | میشود. |
توجه کنید این سه حالت بعضی حالتهای ممکن برای را پوشش نمیدهند. یک شکاف بین حالت ۲ و ۳ (و همچنین بین حالات ۱ و ۲) وجود دارد. به عنوان مثال بین حالات ۲ و ۳ قرار میگیرد (یا بین ۱ و ۲). این شکاف زمانی پیش میآید که از بزرگتر (یا کوچکتر) باشد ولی مقدار بزرگتر (یا کوچکتر) بودنش به صورت چندجملهای نباشد. در این صورت گاهی میتوان از یک تعمیم کوچک برای حالت ۲ استفاده کرد:[۲]
حالت | شرط | شرط | شرح قضیه |
---|---|---|---|
۲ الف | اگر باشد | به ازای هر | آنگاه خواهد بود. |
۲ ب | و باشد | در آن صورت میشود. | |
۲ ج | به شرط | میشود. |
مثال
[ویرایش]برای پیدا کردن پیچیدگی جستجوی دودویی یا مرتبسازی ادغامی و بسیاری از الگوریتمهای دیگر میتوان از این قضیه استفاده کرد.
حالت ۱
[ویرایش]
همان طور که در فرمول فوق دیده میشود، متغیرها دارای مقادیر زیر هستند:
، ، ،
حال باید برقراری معادلهٔ زیر را بررسی کنیم:
اگر مقادیر متغیرها را در این رابطه جایگزین کنیم، خواهیم داشت:
با انتخاب داریم:
از آن جایی که معادلهٔ بالا برقرار است، حالت اول قضیهٔ اصلی را برای رابطهٔ بازگشتی به کار میبریم و از نتیجهٔ زیر استفاده میکنیم:
اگر مقادیر فوق را در رابطهٔ بالا قرار دهیم، در نهایت خواهیم داشت:
از این رو رابطهٔ بازگشتی داده شده (T(n از(Θ(n³ است.
(راه حل دقیق رابطهٔ بازگشتی نیز این نتیجه را تأیید میکند، که در آن ، بافرض است.)
حالت ۲
[ویرایش]
همان طور که در فرمول فوق مشاهده میشود، متغیرها مقادیر زیر را اختیار میکنند:
، ، ، ،
حال میبایست برقراری رابطهٔ زیر را بررسی کنیم (در حالتی که k=۰ باشد):
اگر مفادیر متغیرها را،از رابطهٔ بالا در این رابطه جایگزین کنیم، خواهیم داشت:
از آن جایی که این رابطه برقرار است، حالت دوم قضیهٔ اصلی را برای رابطهٔ بازگشنی به کار میبریم و از نتیجهٔ زیر استفاده میکنیم:
با جایگزین کردن مقادیر فوق در این رابطه در نهایت خواهیم داشت:
از این رو رابطهٔ بازگشتی داده شدهٔ (T(n از (Θ(n log n است.
(راه حل دقیق رابطهٔ بازگشتی نیز این نتیجه را تأیید میکند، که در آن ، بافرض است.)
حالت ۳
[ویرایش]
همان طور که در فرمول فوق دیده میشود، متغیرها مقادیر زیر را اختیار میکنند:
، ، ،
حال میبایست برقراری معادلهٔ زیر را مورد بررسی قرار دهیم:
اگر مقادیر متغیرها را طبق روابط بالا قرار دهیم و مقدار را انتخاب کنیم، خواهیم داشت:
از آن جایی که معادلهٔ فوق برقرار است، حال باید شرط دوم را مورد بررسی قرار دهیم. به عبارت دیگر باید درستی رابطهٔ زیر را مورد بررسی قرار دهیم:
اگر بار دیگر مقادیر متغیرها را طبق روابط بالا قرار دهیم، خواهیم داشت:
اگر را برگزینیم، آن گاه:
پس خواهیم داشت:
اگر بار دیگر مقادیر لازم را قرار دهیم، رابطهٔ زیر به دست میآید:
از این رو رابطهٔ بازگشتی داده شده (T(n از (Θ(n² است.
(راه حل دقیق رابطهٔ بازگشتی نیز این نتیجه را تأیید میکند، که در آن ، بافرض است.)
در روش درخت بازگشتی ، کل کارهای انجام شده را محاسبه می کنیم. اگر کارهایی که در برگها انجام می شود چند جمله ای بیشتری است ، پس برگها قسمت اصلی هستند و نتیجه ما به کارهایی که در برگها انجام می شود تبدیل می شود (حالت 1). اگر کارهایی که در برگ و ریشه انجام می شود به صورت یکسان باشد ، نتیجه کار ما با کارهایی که در هر سطح انجام می شود ضرب می شود (حالت 2). اگر کارهایی که در ریشه انجام می شوند بیشتر از لحاظ غیرمتعارف باشند ، نتیجه ما به کارهایی در ریشه انجام می شود (حالت 3).
حالتهای ناپذیرفتنی
[ویرایش]معادلات زیر را نمیتوان با استفاده از قضیهٔ اصلی حل کرد:
a مقدار ثابت نیست.
اختلاف بین (f(n و غیر چندجملهای است.
a<۱ است درحالی که نمیتوان کم تر از یک زیر مسئله داشت.
:
(f(n مثبت نیست.
صحت قضیه اصلی
[ویرایش]نشان دادن درست بودن این قضیه در حالت کلی کار ساده ای نیست اما در ادامه صحت این قضیه را برای یک حالت خاص بررسی می کنیم.
فرض می کنیم (f(n تابعی از مرتبه چندجمله ای باشد یعنی (f(n) = Θ(nd آنگاه :
پس داریم :
logb a > d −→ T(n) = Θ(nlogbb a)
logb a = d −→ T(n) = Θ(nlog a)
logb a < d −→ T(n) = Θ(nd)
میخواهیم مجموع هزینه ها را به دست بیاوریم پس درخت بازگشت آن را رسم میکنیم. برای هر سطح در درخت هزینه های زیر را داریم :
هزینه ی رأسها در سطح ۱:
هزینه ی رأسها در سطح ۲:
...
هزینه ی رأسها در سطحi :
برای محاسبه هزینه کل ، هزینه های هر سطح را با هم جمع میزنیم.( تحلیل سرشکن )
مقدار رأس ریشه در درخت برابرnd است. به جز راسهای برگ ، هر رأس در این درختa فرزند دارد که مقدار هرکدامb )-d ) برابر مقدار پدرش است؛ یعنی به عنوان مثال فرزندان ریشه مقداری برابر دارند. و هزینهی هر برگc است.
با محاسبه جمع مقادیر سطوح مختلف درخت به مجموع کل میرسیم:
که این مقدار هزینهی متناظر با ریشه (T(n است را تعیین میکند.
قضیه اصلی برای تفریق و حل بازگشتی
[ویرایش]قضیه اصلی واکاوی الگوریتمها برای تعیین کارکردهای دارای محدودیت بالایی Big - O استفاده می شود ، که می تواند در مسایل فرعی شکسته شود.قضیه اصلی برای تکرار تفریق و تقسیم:بگذارید T (n) تابعی باشد که مطابق شکل زیر در n مثبت نشان داده شده است:[۳]
قضیه اصلی برای تفریق و حل بازگشتی:
فرض کنید T (n) تابعی باشد که مطابق شکل در n مثبت نشان داده شده است:
1. If a<1 then T(n) = O(nk)
2. If a=1 then T(n) = O(nk+1)
3. if a>1 then T(n) = O(nkan/b)
جستارهای وابسته
[ویرایش]منابع
[ویرایش]- ↑ Introduction to Algorithms (CLRS) (3rd edition). به کوشش Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, Clifford Stein.
- ↑ A real elementary approach to the master recurrence and generalizations. به کوشش Chee Yap. ص. ۱۴–۲۶.
- ↑ Yash Singla (5/16/2020). "Master Theorem For Subtract and Conquer Recurrences". www.geeksforgeeks.org (به انگلیسی).
{{cite web}}
: Check date values in:|تاریخ=
(help)
- Michael T. Goodrich and Roberto Tamassia. Algorithm Design: Foundation, Analysis, and Internet Examples. Wiley, 2002. ISBN 0-471-38365-1. The master theorem (including the version of Case 2 included here, which is stronger than the one from CLRS) is on pp. 268–270.
- مشارکتکنندگان ویکیپدیا. «Master theorem». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۳ می ۲۰۱۱.