آموزش الگوریتم – بخش دوم(5 ویدئو) 2,269 بازدید بدون دیدگاه معمولاً برای حل یک مسئله، روشها و الگوریتمهای گوناگونی وجود دارند؛ یک الگوریتم ممکن است عمل مورد نظر را با دستورهای مختلف در مدت زمان و یا کار کمتر یا بیشتری نسبت به الگوریتم دیگر انجام دهد. به همین دلیل، انتخاب الگوریتم مناسب و کارا اهمیت زیادی در موفق بودن و کارایی برنامه رایانهای دارد. الگوریتمها به عنوان یک فناوری مطرح هستند و دانشمندان آنها را طراحی، تحلیل، و مطالعه میکنند. مطالعه الگوریتمها زمینههای متعددی را در بر میگیرد. در زیر به چند نمونه اشاره میکنیم که میتوان آنها را چرخه حیات یک الگوریتم نامید. الف) طراحی الگوریتمها: روشهای مختلفی برای طراحی الگوریتمها وجود دارد که عبارتند از:روشهای تقسیم و غلبه، روشهای حریصانه، روشهای برنامه نویسی پویا، روشهای پسگرد و روشهای انشعاب و تحدید. ب) معتبر سازی یا اثبات درستی الگوریتمها:بعد از طراحی باید اثبات شود که الگوریتم مزبور درست است. الگوریتمی درست است که به ازای هر ورودی مناسب خروجی صحیحی بدهد. اثبات درستی الگوریتمها به اثبات قضایا در ریاضی میماند و مرحله بسیار مهمی در زمینه مطالعه الگوریتمها است پ) تحلیل الگوریتمها (تحلیل مقدم، ارزیابی کارایی الگوریتمها):یک الگوریتم در زمان اجرا از cpuی رایانه برای اجرای دستورالعملها و از حافظه برای ذخیرهسازی برنامه و دادهها استفاده میکند تحلیل یک الگوریتم مشخص میکند که الگوریتم در زمان اجرا چه مدت زمان از cpuبرای اجرای دستورالعمل (پیچیدگی زمانی) و چه مقدار از حافظه (چه اصلی و چه جانبی) برای ذخیرهسازی برنامه و دادهها (پیچیدگی فضایی) نیاز دارد. ت) پیادهسازی الگوریتمها:پیادهسازی یک الگوریتم نوشتن آن به زبان برنامه نویسی خاص است که معمولاً بعد از تحلیل مقدم آن صورت میگیرد و نام برنامه به آن اطلاق میشود. ث) تست برنامه:تست یک برنامه شامل۱:اشکال زدایی و ۲:تحلیل مؤخر (اندازهگیری کارایی) است. اندازهگیری کارایی عبارت است از فرایند اجرای الگوریتم صحیح بر روی دادههای نمونه گیری شده برای به دست آوردن زمان و حافظه مورد نیاز توسط کامپایلر. زمان اجرای یک الگوریتم به پارامترهای مختلفی بستگی دارد که از جمله میتوان به نوع دستورالعملها (دستورالعملهای جمع، ضرب، نوشتن، خواندن، شرطی و…)کامپایلر مورد استفاده، زبان برنامه نویسی، سختافزار به کار رفته و پارامتری مثل nکه میتواند معرف تعداد ورودیها و خروجیها و یا هر دو باشد اشاره کرد. آموزش الگوریتم عقبگرد(backtracking) آموزش الگوریتم جستجوی اول عرض(bfs) آموزش الگوریتم مرتب سازی ادغامی(merge sort) آموزش الگوریتم هافمن(huffman) آموزش الگوریتم بلمن-فورد(Bellman-Ford)