Transcript Document
اهداف
درس این جلسه
(1شناخت تحلیل پیچیدگی الگوریتم
تحلیل پیچیدگی در حالت معمول ،بهترین ،بدترین و میانگین
(2شناخت مرتبه پیچیدگی الگوریتم از جنبههای مختلف
ج) تحلیل پیچیدگی زمانی الگوریتمها
عبارت است از
تعداد دفعاتی که عمل اصلی به ازای هر مقدار از اندازه ورودی انجام میشود.
انتخاب عمل اصلی بر اساس تجربه صورت میپذیرد
)1پیچیدگی زمانی الگوریتم در حالت معمول
مانند ضرب ماتریسCm×k=Am×n×Bn×k :
T(m,n,k)=m×n×k
و یا برای سادگی میگوییمT(n)=n3 :
ج) تحلیل پیچیدگی زمانی الگوریتمها
)2پیچیدگی زمانی الگوریتم در بدترین حالت
مانند جستجوی ترتیبی
W(n)=n
)3پیچیدگی زمانی الگوریتم در بهترین حالت
مانند جستجوی ترتیبی
B(n)=1
ج) تحلیل پیچیدگی زمانی الگوریتمها
)4پیچیدگی زمانی الگوریتم در حالت میانگین
توجه :یک مقدار میانگین را فقط زمانی میتوان معمولی خواند که حالتهای واقعی
از میانگین انحراف زیادی نداشته باشد.
مثال :جستجوی ترتیبی
حالت x :1همواره در آرایه هست
ج) تحلیل پیچیدگی زمانی الگوریتمها
حالت x :2ممکن است در آرایه نباشد .احتمال وجود xرا در آرایه pدرنظر میگیریم.
ج) تحلیل پیچیدگی زمانی الگوریتمها
در تحلیل پیچیدگی الگوریتمها ،پیچیدگی حافظه نیز قابل بحث است
تمرین) الگوریتم ،fib2دارای پیچیدگی حافظه nاست ،آن را به گونهای تغییر
دهیدکه پیچیدگی حافظه آن کمتر شود .برای این منظور تابعی با نام fib3بنویسید.
پیچیدگی زمانی × پیچیدگی حافظه = هزینه الگوریتم
د) مرتبه الگوریتم
تعریف ) O
برای یک تابع پیچیدگی مفروض ) ، f(nمانند ،log n ،n
مجموعهای از توابع پیچیدگی ) g(nاست که برای آنها
به ازای یک ثابت حقیقی مثبت c
آنگاه یک عدد صحیح غیر منفی Nوجود دارد
به قسمی که به ازای همه n≥Nداریم )g(n) ≤c×f(n
روش نمایشg(n) ϵ O(f(n)) :
د) مرتبه الگوریتم
نمایش به صورت دیاگرام:
د) مرتبه الگوریتم
Although n2 + 10n is initially above 2n2 in that figure, for n ≤10
د) مرتبه الگوریتم
We show that 5n2 ∊ O(n2).
Because, for n ≤ 0,
we can take c = 5 and N = 0 to obtain our desired result
We show that n2 + 10n ∊ O(n2).
Because, for n ≥ 1,
we can take c = 11 and N = 1 to obtain our result.
We show that n ∊ (n 2).
Because, for n ≥ 1,
we can take c = 1 and N = 1
د) مرتبه الگوریتم
د) مرتبه الگوریتم
تعریف )Omega( Ω
برای یک تابع پیچیدگی مفروض ) ، f(nمانند log n ،n
مجموعهای از توابع پیچیدگی ) g(nاست که برای آنها
به ازای یک ثابت حقیقی مثبت c
آنگاه یک عدد صحیح غیر منفی Nوجود دارد
به قسمی که به ازای همه n≥Nداریم )g(n) ≥c×f(n
روش نمایشg(n) ϵ Ω(f(n) :
د) مرتبه الگوریتم
نمایش به صورت دیاگرام:
د) مرتبه الگوریتم
We show that n2 + 10n ∊ Ω (n2).
Because, for n ≥ 0,
we can take c = 1 and N = 0 to obtain our result.
We show that n3 ∊ Ω(n2).
Because, if n ≥ 1,
we can take c = 1 and N = 1 to obtain our result.
د) مرتبه الگوریتم
د) مرتبه الگوریتم
تعریف )Theta( Θ
برای یک تابع پیچیدگی مفروض ) ، f(nمانند log n ،n
مجموعهای از توابع پیچیدگی ) g(nاست که برای آنها
به ازای ثابتهای حقیقی مثبت cو d
آنگاه یک عدد صحیح غیر منفی Nوجود دارد
به قسمی که به ازای همه n≥Nداریم:
)d×f(n) ≥g(n) ≥c×f(n
روش نمایشg(n) ϵ Θ(f(n)) :
د) مرتبه الگوریتم
به عبارتی دیگر:
)g(n) ϵ O(f(n)) AND Ω(f(n
یعنی:
د) مرتبه الگوریتم
نمایش بهصورت دیاگرام:
نمایش بهصورت مجموعهای:
د) مرتبه الگوریتم
پرسشهای
درس این جلسه
(1
تحلیل پیچیدگی زمانی الگوریتمها به چه معنا میباشد؟
پیچیدگی زمانی الگوریتمها در حالت معمول ،بهترین ،بدترین و میانگین با چه نمادهایی نمایش داده
میشوند؟
تحلیل پیچیدگی زمانی الگوریتمها در حالت میانگین چه تفاوتی با حالت معمول دارد؟
پیچیدگی زمانی جستجوی ترتیبی را در حالت میانگین برای حالتی که xهمواره در آرایه هست را
محاسبه نموده و با نماد مناسب آن را نشان دهید.
پیچیدگی زمانی جستجوی ترتیبی را در حالت میانگین برای حالتی که xبا احتمال pدر آرایه هست را
محاسبه نموده و با نماد مناسب آن را نشان دهید.
تعریفی برای Oارائه دهید و ویژگی آن را بهصورت عضویت در مجموعه نمایش دهید.
(7
تعریفی برای Ωارائه دهید و ویژگی آن را بهصورت عضویت در مجموعه نمایش دهید.
تعریفی برای Θارائه دهید و ویژگی آن را بهصورت عضویت در مجموعه نمایش دهید.
(2
(3
(4
(5
(6
(8
پرسشهای
درس این جلسه
Show directly that f(n) = n2 + 3n3 ∊ Θ(n3). That is, use the definitions of O
and Ω to show that f(n) is in both O(n3) and Ω (n3).
10) Using the definitions of O and Ω, show that
9)