Algorithm Design
ایدههای الگوریتمی فراگیر هستند و رسیدن آنها به نمونه هایی در علوم کامپیوتر و فراتر از آن مشهود است. برخی از تغییرات عمده در استانداردهای مسیریابی اینترنت را میتوان به عنوان بحث هایی بر روی نواقص یک الگوریتم کوتاهترین مسیر و مزایای نسبی دیگری مشاهده کرد. مفاهیم اساسی که زیست شناسان برای بیان شباهت در بین ژنها و ژنومها استفاده میکنند، نیز تعاریف الگوریتمی دارند. نگرانیهای مطرح شده از سوی اقتصاد دانان مبنی بر امکان سنجی حراجهای ترکیبی در عمل، تا حدی ریشه در این واقعیت دارد که این حراجها شامل مشکلات جستجوی محاسباتی غیرقابل کنترل در موارد خاص هستند؛ و مفاهیم الگوریتمی فقط به مسائل شناخته شده و دیرینه محدود نمیشوند. یک نفر بازتاب این ایدهها را در موضوعات جدیدی که در طیف وسیعی از حوزهها بوجود آمده اند را بطور منظم مشاهده میکند. دانشمندی در Yahoo! که یک روز در موقع ناهار درباره سیستم خودشان برای ارائه تبلیغات به کاربران با ما صحبت میکرد، مجموعه ای از مشکلاتی را توصیف میکرد که در اعماق، میتوانست به عنوان یک مشکل جریان شبکه مدل شود.
نکته این نیست که الگوریتمها کاربردهای زیادی دارند. مسئله عمیقتر این است که موضوع الگوریتمها لنز قدرتمندی هستند که از طریق آن میتوان به طور کلی زمینه علم کامپیوتر را مشاهده کرد. مسائل الگوریتمی قلب علم کامپیوتر را تشکیل میدهند، اما آنها به ندرت به شکل سؤالات دقیق ریاضی و حاضر و آماده ارائه میشوند. در عوض، آنها تمایل دارند که با بسیاری از جزئیات در هم بر هم و با کاربردهای خاصی همراه شوند که برخی از آنها ضروری هستند و برخی از آنها غیر مرتبط. در نتیجه، پروژه الگوریتمی از دو مؤلفه اساسی تشکیل شده است: رسیدن به اصل ریاضی تمیز یک مسئله و سپس شناسایی تکنیکهای طراحی مناسب الگوریتم بر اساس ساختار مسئله.
کتاب طراحی الگوریتم Jon Kleinberg و Eva Tardos، الگوریتمها را با نگاهی در مسائل موجود در دنیای واقعی و ایجاد انگیزه برای بررسی آنها معرفی میکند. این کتاب طیف وسیعی از تکنیکهای طراحی و تجزیه و تحلیل را برای مشکلاتی که در برنامههای محاسباتی بوجود میآیند را به دانشجویان آموزش میدهد. این کتاب، درک روند طراحی الگوریتم و تقدیر از نقش الگوریتمها در زمینه گستردهتر علوم کامپیوتر را تشویق میکند.