کتاب Algorithm Design with Haskell از انتشارات Oxford و چاپ سال 2020 میلادی میباشد. در این کتاب به تشریح تئوریهای مهم طراحی الگوریتم با رویکردی جدید و با استفاده از زبان Haskell (هسکل) پرداخته است. از نکات جالب توجه انتخاب همین زبان برنامهنویسی است. اما باید توجه داشت یکی از قویترین و پراستفادهترین زبانهای برنامهنویسی جهان با ویژگیهای فوقالعاده همین زبان Haskell میباشد. این زبان شیگرا و مناسب برنامهنویسی برای انواع کاربردهای تجاری میباشد.
همچنین در کتاب Algorithm Design with Haskell ابتدا به تشریح تئوریهای مهم طراحی الگوریتم مانند صف، پشته، مرتبسازی، الگوریتمهای حریصانه و چندین و چند الگوریتم مهم دیگر در علم طراحی الگوریتم پرداخته و سپس به صورت تکه کدهایی آنها را پیادهسازی میکند. علاوه بر آن در پایان هر فصل یک سری تمرین نیز برای درک بهتر موضوعات قرار داده شده است و در کل حدود 300 تمرین برای پیادهسازی الگوریتمها به کمک زبان برنامهنویسی Haskell آورده شده است.
خواندن کتاب Algorithm Design with Haskell علاوه بر بینش و درک بر روی الگوریتمهای مهم، به یادگیری زبان برنامهنویسی Haskell نیز تا حدودی کمک میکند.
شما میتوانید برای یادگیری تخصصی طراحی الگوریتم از کتاب Introduction to Algorithms استفاده کنید.
مقدمهای بر کتاب طراحی الگوریتم با زبان Haskell:
هدف کتاب Algorithm Design with Haskell ارائه مقدمهای بر اصول الگوریتم است، استفاده از یک رویکرد کاملاً کاربردی. زبان انتخابی این کتاب Haskell است و تمامی الگوریتمها به وسیله توابع این زبان طراحی و برنامهنویسی شدهاند. هاسکل ویژگیهایی بسیار زیادی را برای اجرای برنامههای کاربردی دارد، اما در این کتاب فقط از زیر مجموعه کوچکی از قابلیتهای این زبان برنامهنویسی استفاده شده است.
استفاده از توابع، به جای حلقهها و عبارات انتساب (Assignment Statement)، برای بیان الگوریتمها همه چیز را تغییر میدهد.
در این کتاب، در ابتدا، یک الگوریتم بیان شده که به عنوان یک تابع، متشکل از سایر توابع اساسیتر است میباشد. این الگوریتم میتواند به طور جداگانه مورد مطالعه قرار گیرد و دوباره استفاده شود.
به عنوان مثال در الگوریتم مرتبسازی برای ساخت یک درخت توابعی ایجاد میشود که بعد با روشهایی دیگر بهبود داده خواهد شد. توابعی که برای ساخت درختها استفاده میشود را میتوان از توابع دیگر جدا نمود.
سادهترین مفهوم درخت در طراحی الگوریتم به گرههای متصل شده توسط لبهها، درخت میگویند.
علاوه بر این، خصوصیات هر یک از این توابع اساسی و ارتباط آنها با دیگر اجزا در گروی خصوصیات ساده و اولیه مفاهیم الگوریتم است. در نتیجه ما میتوانیم در مورد ساختار “عمیق” یک الگوریتم که به راحتی قابل درک نباشد به وسیله کدهای نه چندان پیچیده تصمیمگیری کنیم.
مروری کوتاه بر کتاب طراحی الگوریتم با زبان Haskell:
در سه فصل اول کتاب Algorithm Design with Haskell موارد مورد نیاز برای طراحی یک الگوریتم خوب و کاربردی بررسی میشود. در این فصل با تشریح کارایی زبان Haskell و ارتباط آن با طراحی الگوریتم بررسی میشود. البته هدف این فصل آموزش زبان Haskell نیست بلکه استفاده از آن برای ایجاد توابع و دستورات برای ایجاد الگوریتمها میباشد.
فصل بعدی مربوط به کارایی و به طور خاص زمان اجرای الگوریتمها است. با این تفاوت که از مسأله بهرهوری از فضای حافظه به کلی چشمپوشی شده است.
فصل آخر، برخی از ساختارهای اساسی داده را معرفی میکند. به طور مثال لیستها برای دسترسی تصادفی و همچنین درباره آرایهها توضیحاتی داده میشود. بیشتر بحث در مورد ساختار داده است که برای کارآمدسازی یک الگوریتم لازم است.
سرفصلهای کتاب Algorithm Design with Haskell:
- Basics
- Functional programming
- Timing
- Useful data structures
- Divide and Conquer
- Binary Search
- Sorting
- Selection
- Greedy Algorithms
- Greedy algorithms on lists
- Greedy algorithms on trees
- Greedy algorithms on graphs
- Thinning Algorithms
- Introduction to thinning
- Segments and subsequences
- Partitions
- Dynamic Programming
- Efficient recursions
- Optimum bracketing
- Exhaustive Search
- Ways of searching
- Heuristic search
فایل کتاب Algorithm Design with Haskell را میتوانید پس از پرداخت دانلود کنید.
Woodrow Lang –
Thanks. Very Good.