1 / 45

فصل اول

درس طراحی الگوریتم ها. فصل اول. کارایی ، تحلیل و مرتبه الگوریتم ها. مدرس: سید محمد بیدکی. زمستان 1391. هدف از مطالعه درس طراحی الگوریتم. به طور معمول برای حل یک مسئله مشخص بیش از یک الگوریتم وجود دارد. مثال: یافتن معنی کلمه الگوریتم در فرهنگ لغت

Download Presentation

فصل اول

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. درس طراحی الگوریتم ها فصل اول کارایی ، تحلیل و مرتبه الگوریتم ها مدرس: سید محمد بیدکی زمستان 1391

  2. هدف از مطالعه درس طراحی الگوریتم • به طور معمول برای حل یک مسئله مشخص بیش از یک الگوریتم وجود دارد. • مثال: یافتن معنی کلمه الگوریتم در فرهنگ لغت • برخی از این الگوریتم ها از بقیه کاراتر می باشند. • الگوریتمی انتخاب می شود که بیشترین کارایی را داشته باشد. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  3. هدف از مطالعه درس طراحی الگوریتم • پرسش های مطرح شده: • آیا الگوریتمی که ارائه می شود درست است یا خیر؟ • چگونه الگوریتم های مربوط به یک مسئله مقایسه می شوند؟ • کارایی (efficiency) هر الگوریتم چگونه تعیین می شود؟ • برای این کار نیاز به تحلیل الگوریتم ها داریم. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  4. تفاوت دروس طراحی الگوریتم و ساختمان داده ها • مروری بر درس ساختمان داده ها • یادآوری مفاهیم اولیه ریاضیات ( سری ∑، لگاریتم log و ... ) درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  5. تعریف الگوریتم • دنباله ای از دستورات که با اجرای مرحله به مرحله آنها می توان به نتیجه مورد نظر دست یافت. • خصوصیات هر الگوریتم: • داراي ورودي است. • داراي خروجي است. • داراي ترتيب (توالي) است. • واضح و صريح است. ( بدون ابهام مي باشد). • محدود است. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  6. تعریف مسئله پارامترهای مسئله • مسئله: سؤالی که به دنبال پاسخ آن هستیم. 1. مرتب سازی یک لیست S متشکل از n عدد به ترتیب غیر نزولی. پاسخ دنباله مرتب از n عدد می باشد. 2. تعیین اینکه آیا عدد x در لیست S متشکل از n عدد وجود دارد یا خیر. در صورت وجود پاسخ ”بله“ و در غیر این صورت پاسخ برابر با ”خیر“ خواهد بود. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  7. تعریف نمونه مسئله • مسائلي كه شامل پارامترها هستند بيانگر كلاسي از مسائلمي باشند. • نمونه مسئله: هر انتساب خاصي از مقادير به پارامترها • راه حل يك نمونه مسأله: پاسخ سؤال پرسيده شده توسط مسأله در آن نمونه مسئله • نمونه مسئله 1: n = 6 , S = {8 , 13, 5, 11, 7, 10} • راه حل: {5, 7, 8, 10, 11,13} درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  8. الگوریتم درست/نادرست چنانچه الگوریتمی بتواند برای هر نمونه از ورودی، خروجی درست را تولید کند و متوقف شود، آن الگوریتم درست (correct)است. چناچه نرخ خطای الگوریتم های نادرست قابل کنترل باشد می توان از آنها نیز استفاده کرد. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  9. حل مسئله • حل مسئله فرایندیست شامل 3 بخش: • تعیین پارامترهای مسئله • بیان الگوریتم • پاسخ مسئله • الگوریتم می تواند به زبان طبیعی، به صورت برنامه کامپیوتری (توسط زبان برنامه نویسی) یا طراحی سخت افزاری مشخص شود. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  10. بیان الگوریتم • يك الگوريتم براي مسأله 2 (جستجو): • با شروع از اولین عنصر S به ترتیب x را با هر یک از عناصر S مقایسه کن تا اینکه x را پیدا کنی یا به انتهای لیست برسی. اگر x پیدا شد پاسخ ”بله“ و در غیر این صورت پاسخ ”خیر“ را تولید کن. • معایب نوشتن الگوریتم ها به زبان طبیعی • مشکل بودن نوشتن و درک الگوریتم های پیچیده • مشکل بودن ترجمه آن به یک زبان برنامه نویسی • لذا الگوریتم ها را توسط شبه کدهایی از یک زبان برنامه نویسی بیان می کنیم. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  11. شبه کد • بیان الگوریتم جستجوی ترتیبی به صورت شبه کد: • ساختار كنترلي غير استاندارد: • repeat ( n times) { • … • } • در شبه كد هر گاه بتوانيم مراحل را با وضوح بيشتر با استفاده از روابط رياضي و توضيحات انگليسي نشان مي دهيم. • if ( low ≤ x ≤ high ) { • … • { • exchange x and y ; درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  12. تمرین در کلاس • توجه: برای هر الگوریتم ورودی و خروجی را تعیین کنید. • الگوریتم جمع عناصر یک آرایه • الگوریتم ضرب ماتریسها • الگوریتم مرتب سازی عناصر به ترتیب غیر نزولی ( exchange sort- مرتب سازی تعویضی) درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  13. پاسخ درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  14. اهمیت توسعه الگوریتم های کارا چرا؟ كارآيي الگوريتم ها همواره و بدون در نظر گرفتن افزايش سرعت كامپيوترها و كاهش قيمت حافظه، بايد مد نظر باشد. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  15. الگوریتم جستجوی ترتیبی Void seqsearch ( intn, constkeytypeS[ ], keytypex, index &location) { location = 1; while (location <= n && S[location] ! = x) location++; if (location > n ) location = 0 ; } درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  16. الگوریتم جستجوی دودویی • Binary search • شرط انجام این جستجو داشتن یک آرایه مرتب است. • تقسیم آرایه به دو نیمه و مقایسه با عنصر میانی درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  17. مقایسه دو الگوریتم[1] • با فرض داشتن آرایه 32 عنصری • Linear search: 32 مقایسه در بدترین حالت • Binary search: درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  18. الگوریتم دنباله فیبوناچی محاسبه جمله nام فیبوناچی (بازگشتی) محاسبه جمله nام فیبوناچی (تکراری) محاسبه بیش از جمله محاسبه n+1 جمله درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  19. الگوریتم جمله nاُم فیبوناچی (بازگشتی) • با رسم درخت بازگشتی واضح است که این الگوریتم بسیار ناکارآمد می باشد. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  20. الگوریتم جمله nاُم فیبوناچی (بازگشتی) ... درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی T(n) : تعداد جملات محاسبه شده در درخت بازگشتی با افزودن 2 واحد به n، تعداد جملات درخت بیش از 2 برابر می شود. T(n) > 2 × T(n-2) > 2 × 2 × T(n-4) > 2 × 2 × 2 × T(n-6) . . > 2 × 2 × 2 × … × 2 ×T(0)  T(n) > 2n/2

  21. الگوریتم جملهn اُم فیبوناچی (تکراری) • الگوریتمی کارآمد • برای تعیین جملهn-اُم دنباله، هر یک از (n-1) جمله نخست را فقط یک بار محاسبه می کند. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  22. مقایسه دو الگوریتم [2] • با فرض محاسبه هر جمله در مدت 1 نانوثانیه • Note: 1 μs = 10-6 s • 1 ns = 10-9 s درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  23. تحلیل الگوریتم ها • Time complexity • Space complexity در الگوریتم های مختلف تاثیر ثابت دارند • هدف از تحليل الگوريتم ها: • بررسي رفتار الگوريتم از نظر زمان اجرا و مقدار حافظه مصرفي قبل از پياده سازي • مقايسه الگوريتم ها از نظر كارآيي • عوامل موثر در زمان اجراي يك برنامه : • سرعت سخت افزار • نوع كامپايلر ( بهينگي كد مقصد) • برنامه نويس ( بهينگي كد منبع) • اندازه ورودي • تركيب داده هاي ورودي • پيچيدگي الگوريتم • ... • مهمترين عامل، پيچيدگي الگوريتم مي باشد كه خود تابعي از اندازه ورودي است. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  24. تحلیل الگوریتم ها • چنانچه اندازه داده ها را 10 میلیون عدد در نظر بگیریم: • مرتب سازی درجی به طور تقریبی 2.3 روز • مرتب سازی ادغامی 20 دقیقه زمان لازم دارد. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  25. تحلیل الگوریتم ها • تحلیل پیچیدگی زمانی • محاسبه كارآيي بر حسب زمان • هدف تعیین تعداد سیکل های cpu نیست چون در ماشینهای مختلف، متفاوت است. • مستقل از كامپيوتر، زبان برنامه نويسي و برنامه نويس • تحلیل پیچیدگی زمانی یک الگوریتم، تعیین تعداد دفعاتی است که عمليات اصلي الگوریتم( مقايسه، جمع، ضرب و ...)بر حسب اندازه ورودي انجام می شود. • برای تحلیل پیچیدگی یک الگوریتم تابعی به نام T(n) در نظر میگیریم که در آن n اندازه ورودی می باشد. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  26. اندازه ورودی • در بسياري از الگوريتم ها يافتن ميزاني منطقي از اندازه ورودي آسان است • مثال: • جستجوي ترتيبي • محاسبه مجموع عناصر آرايه • مرتب سازي تعويضي • جستجوي دودوي • ضرب ماتريس ها • در برخي از الگوريتم ها بهتر است اندازه ورودي را برحسب دو عدد بسنجيم: • اگر ورودي الگوريتم يك گراف باشد، اندازه وروي را برحسب تعداد رئوس و تعداد يال ها می سنجیم. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  27. عملیات اصلی • عمل اصلي • دستور يا مجموعه اي از دستورات به طوري كه كل كار انجام شده توسط الگوريتم، تقريبا متناسب با تعداد دفعات اجراي اين دستور يا مجموعه دستورات باشد. • مثال: جستجوي ترتيبي و جستجوي دودويي لیستی به طول n عنصر • در هر بار گذر از حلقه عنصر x با یک عنصر از S مقايسه مي شود. • با تعيين اينكه هر يك از اين الگوريتم ها چند بار اين عمل اصلي را انجام مي دهند، مي توان كارآيي اين دو الگوریتم را به ازاي هر مقدار از nمقايسه نمود. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  28. تحلیل پیچیدگی در حالات مختلف T(n): تعداد دفعاتي كه الگوريتم عمل اصلي را به ازای يك نمونه با اندازه ورودی n انجام می دهد. • در برخي موارد مانند الگوريتم مجموع عناصر آرایه، عمل اصلي همواره به ازاي يك نمونه با اندازه ورودی n به يك ميزان انجام مي شود • در برخي موارد ديگر، تعداد دفعات اجراي عمل اصلي نه تنها به اندازه ورودي بلكه به ترکیب و چیدمان مقادير ورودي نيز بستگي دارد. • مثال: در جستجوي ترتيبي (با اندازه ورودی برابر با n) • اگر x در اولين مكان آرايه باشد: تعداد مقايسه ها = 1 • اگر x در آرايه نباشد: تعداد مقايسه ها = n درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  29. تحلیل پیچیدگی در حالات مختلف • بهترین حالت B(n) • حالتی که الگوریتم می تواند سریعترین زمان اجرا را داشته باشد. • کران پایین زمان اجرا است. • بدترین حالت W(n) • حالتی که زمان اجرای الگوریتم هرگز از آن بیشتر نخواهد شد. • کران بالای زمان اجرا است. • جهت مقایسه منصفانه بین الگوریتم ها به طورمعمول از این تابع استفاده می شود • حالت میانگینA(n) • برای تحلیل آن نیاز به در نظر گرفتن توزیع های مختلف مقادیر ورودی می باشد. • محاسبه آن مشکل است. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  30. مثال • محاسبه هزینه جستجوی خطی (linear search) • عمل اصلی: تعداد مقایسه • اندازه ورودی: تعداد عناصر آرایه n • بهترین حالت: وقتی که عنصر مورد نظر در اولین خانه باشد • بدترین حالت: وقتی که عنصر مورد نظر در آرایه موجود نباشد • حالت متوسط: • احتمال وجود عنصر مورد نظر در آرایه برابر با p • احتمال وجود آن در خانه kام برابر با p/n است. • احتمال عدم وجود عنصر در آرایه 1- p درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  31. حالت متوسط تعداد گذر(وجود) تعداد گذر(عدم وجود) محاسبه هزینه در حالت متوسط درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  32. مرتبه الگوریتم درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی • مرتبه یک الگوریتم با بزرگترین جمله تابع پیچیدگی زمانی آن تعیین می شود. • الگوریتم هایی با پیچیدگی زمانی ازقبیل n و100n را الگوریتم های زمانی خطی می گویند. • مجموعه کامل توابع پیچیدگی را که با توابع درجه دوم محض قابل دسته بندی باشند، n²)(θمی گویند. • تابعی که عضو مجموعه n²)(θباشد، از مرتبه n2 است.

  33. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی مجموعه ای ازتوابع پیچیدگی که با توابع درجه سوم محض قابل دسته بندی باشند، n³)(θنامیده می شوند. برخی از گروه های پیچیدگی متداول در زیر داده شده است: θ(lg n)< θ (n) < θ (n lg n) < θ (n²) < θ (n³) <θ (2ⁿ)

  34. زمان اجرا برای الگوریتم هایی با پیچیدگی زمانی مختلف درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  35. سرعت رشد برخی توابع پیچیدگی درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  36. آشنایی بیشتر بامرتبه الگوریتم ها درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی برای یک تابع پیچیدگی مفروض ƒ(n) ،O (ƒ (n))”O بزرگ“ مجموعه ای از توابع پیچیدگی g(n) است که برای آن ها یک ثابت حقیقی مثبت c و یک عدد صحیح غیر منفی N وجود دارد به قسمی که به ازای همه ی N=< n داریم: g (n) <= c × ƒ (n)

  37. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی برای یک تابع پیچیدگی مفروض ƒ(n)، Ω (ƒ(n))مجموعه ای از توابع پیچیدگی g (n) است که برای آن ها یک عدد ثابت حقیقی مثبت c و یک عدد صحیح غیر منفی N وجود دارد به قسمی که به ازای همه ی N=< n داریم: g (n) >= c × ƒ (n)

  38. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی برای یک تابع پیچیدگی مفروض ƒ(n)، داریم: θ (ƒ(n)) = O (ƒ(n)) ∩ Ω (ƒ(n)) یعنی θ(ƒ(n)) مجموعه ای از توابع پیچیدگی g (n) است که برای آن ها ثابت های حقیقی مثبت cو dو عدد صحیح غیر منفی N وجود دارد به قسمی که : c × ƒ (n) <= g(n) <= d × ƒ(n) • اگر تابع پیچیدگی زمانی الگوریتمی عضو مجموعه θ (ƒ(n)) باشد، می گوییم از مرتبه f(n) است.

  39. نمایشی از O، Ω و θ درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  40. مثالی از مجموعه های O(n2)، Ω(n2)و θ(n2) درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی

  41. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی برای یک تابع پیچیدگی ƒ(n)مفروض،o(ƒ(n))”o کوچک” عبارت ازمجموعه کلیه توابع پیچیدگیg(n) است که این شرط را برآورده می سازند : به ازای هر ثابت حقیقی مثبت c ،یک عدد صحیح غیر منفی N وجود دارد به قسمی که به ازای N=< n داریم: g (n) <= c × ƒ (n)

  42. ویژگی های مرتبه درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی 1-O (ƒ(n))Єg (n) اگروفقط اگر.ƒ (n) ЄΩ (g(n)) 2-(ƒ(n))θЄg (n) اگروفقط اگرƒ (n) Єθ (g (n)). 3- اگر b >1و a > 1، در آن صورت: loga n Єθ (logb n) 4- اگر b > a > 0،در آن صورت: aⁿЄ o (bⁿ)

  43. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی 5- به ازای همه ی مقادیر a > 0داریم : aⁿЄ o (n!) 6- اگرc >= 0، d >0، g (n) ЄO (ƒ(n)) و h(n) Є θ(ƒ(n))باشد، درآن صورت: c × g(n) + d × h (n) Єθ (ƒ(n))

  44. درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی 7- ترتیب دسته های پیچیدگی زیر را در نظربگیرید: θ (lg n) θ(n) θ(n lg n) θ(n²) θ(nj) θ (nk) θ(aⁿ) θ(bⁿ) θ(n!) که در آن k > j > 2و b > a > 1است. اگر تابع پیچیدگیg (n) در دسته ای واقع در طرف چپ دسته ی حاوی ƒ (n)باشد، در آن صورت: g (n) Є o (ƒ(n))

  45. استفاده از حد برای تعیین مرتبه درس طراحی الگوریتم ها - فصل اول - کارائی، تحلیل و مرتبه الگوریتم ها- مدرس: بیدکی قضیه

More Related