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)