الگوریتمستان
برنامهنویسی، طراحی الگوریتم و حل مسئلههای الگوریتمی
یکی از تیمهای لیگ برتر فوتبال (جام خلیج فارس) امسال نتایج خیلی بدی گرفته است. هیئت مدیرهی باشگاه برای اخراج مربی تحت فشار هستند. اما این مربی از سوی طرفداران تیم به عنوان یک قهرمان محبوب حمایت میشود. به همین دلیل تصمیم میگیرند یک فرصت دیگر به مربی بدهند. سخنگوی باشگاه به رسانهها اعلام میکند که هیئت مدیرهی باشگاه تنها زمانی از مربی حمایت میکنند که بتواند در 5 بازی آینده 11 امتیاز برای تیمشان کسب کند. مربی میخواهد بداند چقدر احتمال دارد به این موفقیت دست پیدا کند و از شما کمک میخواهد.فرض کنید احتمال کسب برد، باخت و تساوی در مسابقههای بعدی از روی مسابقات انجام شده تا به حال به دست میآید. به عنوان مثال اگر این تیم از 10 بازی انجام دادهی قبلی 3 برد داشته باشد، احتمال برد در آینده 30% خواهد بود.
علاقهمندان به مباحث مختلف طراحی الگوریتم و همینطور شرکتکنندگان مسابقات برنامهنویسی به خوبی میدانند که یکی از مهمترین پارامترهای طراحی موفقیتآمیز یک الگوریتم، شیوهی صحیح فکر کردن روی حل مسئله است. حل انواع سوالات الگوریتمی به ما کمک میکند ذهن خودمان را برای حل مسائل پیچیدهتر آماده کنیم.
مسئلهی برج هانوی (Tower of Hanoi) یکی از مسائل تاریخی مشهور است که در مباحث طراحی الگوریتم نیز به آن پرداخته میشود.
به شکل زیر توجه کنید:
یکی از مسائل جالب طراحی الگوریتم مسئلهی کاشیکاری یا فرش کردن زمین با موزاییک است.
فرض کنید قطعه زمین مربعی شکل با ابعادی از توان عدد دو داریم. مثلا با ابعاد 16 متر:
هدف فرش کردن این قطعه زمین با استفاده از موزاییکهایی با شکلهای زیر است: