الگوریتم‌ها، بنیاد دانش کامپیوتر
الگوریتم‌ها پایه و اساس دانش کامپیوتر و برنامه‌نویسی هستند. آن‌ها مجموعه دستورات ساده و روشنی هستند که برای حل یک مسئله ریاضی یا بررسی داده‌ها و استخراج نتیجه از آن‌ها به کار می‌روند. در واقع الگوریتم‌ پایه و اساس هر زبان برنامه‌نویسی است. در رشته کامپیوتر، الگورتیم نقطه اتصال علم ریاضی، قوه منطق انسانی و نرم‌افزارهای کامپیوتر است و جایگاه علمی ویژه‌ای در محافل آکادمیک دارد...

اهمیت الگوریتم‌ها در علم ریاضیات آن است که بعضی از مسائل که تنها به‌وسیله یک فرمول ریاضی قابل حل نیستند، به کمک الگوریتم‌هایی که حاوی دستورات تکرارشونده مشخصی هستند، قابل حل می‌شوند. الگوریتم‌ها در علوم کامپیوتر اصل و اساس هوش‌ مصنوعی، کار با پایگاه داده‌ها، محاسبات نجومی و مالی و بسیاری از شاخه‌های دیگر علمی مانند هواشناسی، فیزیک کوانتوم و علم مهندسی ژنتیک هستند. علم مطالعه، تجزیه و تحلیل و طراحی الگورتیم‌ها شاخه مهمی از دانش کامپیوتر است که دانشجویان تمام رشته‌های کامپیوتر در ابتدای تحصیلات خود با آن آشنا می‌شوند.

یک الگوریتم خوش‌مزه

این یک بازی و ریاضی قدیمی است که تا به حال سه بار در طول 42 سال گذشته حل شده است. الگوریتم مرتب کردن پن ‌کیک‌های نامرتب اولین بار در سال 1975 در یک نشریه ریاضی در امریکا توسط یک ریاضیدان به‌نام جاکوب گودمن مطرح شد و خودش نیز ساده‌ترین جواب را به دست آورد. چهار سال بعد بیل گیتس در دوران دانشجویی‌ خود در دانشگاه هاروارد به همراه یک دانشجوی دیگر به‌نام کریستوس پاپادیمیتریو پاسخ بهینه‌تری برای این معما پیدا کرد. آخرین بار در سال 2008 یعنی 30 سال بعد از راه حل بیل گیتس، تیمی از دانشمندان در دانشگاه دالاس جواب بهتری برای آن یافتند. شما هم می‌توانید قوه خلاقیتتان را بیازمایید و ببینید آیا می‌توانید جواب بهتری پیدا کنید یا نه.
معما چنین است: گارسون یک کافه کپه‌ای از چند پن کیک نامرتب در اختیار دارد و می‌خواهد آن‌ها را مرتب کند. قانون کار این است که فقط می‌تواند کفگیرش را زیر یکی از پن کیک‌ها بزند و از آن قسمت، مجموعه پن کیک‌هایی که بالای کفگیرش قرار می‌گیرند را پشت و رو کند. (شکل 1) 

شکل 1

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

شکل 2

اگر مایلید جواب بهتر بیل گیتس و بهترین جواب معما تاکنون (دانشگاه دالاس) را پیدا کنید، صفحه Pancake sorting در ویکی‌پدیا را
نگاه کنید.

الگوریتمی برای اصلاح ژنتیکی

مثال بالا یک بازى ریاضى است و براى تفریح ذهن کاربرد داشت. اما امروزه از الگورتیم‌ها در علومی غیر از کامپیوتر نیز به‌وفور استفاده می‌شود. یک مثال ساده از کاربرد آن‌ها در علم ژنتیک، پیدا کردن الگوی ژن‌ها برای اصلاح ژنتیکی و مقابله با بیماری‌ها و نارسایی‌های خطرناک است. از الگوریتم‌های مختلف یافتن الگو می‌توان برای پیدا کردن ژن‌های معیوب استفاده کرد. اساس روش کار این الگوریتم‌ها مشابه فرمان Find در نرم‌افزار پردازش متن (مانند Microsoft Word) است. همان طور که با فرمان Find می‌توانید یک کلمه را میان انبوهی از کلمات یک مقاله بیابید، با استفاده از الگورتیم‌های مشخصی می‌توان الگوی ژن‌های سالم و معیوب را پیدا کرد.
دانشمندان علم ژنتیک از یک نقشه کلی از ژن‌های انسان استفاده می‌کنند که ژنوم انسان نام دارد. این مجموعه از زنجیره تقریباً از 3.5 میلیارد نوکلئوتید تشکیل شده است. نوکلئوتیدها ملکول‌های آلی هستند که ترکیب DNA و RNA را می‌سازند. هریک از این نوکلئوتید‌ها از یکی از انواع چهارگانه A، C، T و G هستند.
زنجیره این نکلئوتیدها مجموعه حدود 25 هزار ژن را در بدن انسان تشکیل می‌دهند و این ژن‌ها تمام خصوصیات ریز و درشت هر فرد را
 ـ از رنگ پوست، مو و چشم گرفته تا پیچیده‌ترین خصوصیات شخصیتی‌ـ  تحت تأثیر قرار می‌دهند. هر ژن به‌تنهایی از چند هزار نوکلئوتید تشکیل شده است و معمولاً دانشمندان کل زنجیره آن را نمی‌شناسند، اما تقریباً می‌دانند بعضی از بخش‌های کوچک‌تر یک ژن مثلاً زنجیره چند صد نوکلئوتید چه شکلی است. به این بخش‌های کوچک‌تر و شناخته شده یک ژن اصطلاحاً پروب (به معنای کاوشگر) می‌گویند. مثلاً فرض کنید جایی از زنجیره یک ژن به‌ صورت شکل 3 است. وقتی دانشمندان یک پروب معین را در ژنوم پیدا می‌کنند، به ‌ترتیب نوکلئوتید‌های قبل و بعد آن دقت می‌کنند تا مطمئن شوند ژن مطلوب را یافته‌اند. سپس آن ژن را به‌دقت مطالعه می‌کنند تا ببینند آیا نقصان یا کاستی دارد یا نه. علم مهندسی ژنتیک در تلاش است تا روزی بتواند همچون فرمان Find & Replace در نرم‌‌افزار Word یک زنجیره معیوب در ژنوم را با زنجیره صحیح آن جایگزین کند و از این طریق اصلاح ژنتیکی انجام دهد. تمام این مکانیسم باید توسط الگوریتم‌هایی انجام شود که مانند فرمان Find عمل می‌کنند.

شکل 3

یاد گرفتن طراحی و تحلیل الگوریتم‌ها کار آسانی نیست، اما خبر خوب این است که منابع آموزشی بسیار خوبی برای کمک به علاقه‌مندان وجود دارد. مقاله «دوره‌های آنلاین آشنایی با الگوریتم‌ها» فهرستی از جذاب‌ترین دروس آنلاین را در اختیارتان می‌گذارد. حتماً نگاهی به آن‌ها بیاندازید. اغلب آن‌ها توسط دانشگاه‌ها یا اساتید برجسته دانشگاه تدریس و ارائه شده‌اند.

برچسب: