کتاب Techniques for Designing and Analyzing Algorithms (تکنیکهای طراحی و تحلیل الگوریتمها) در 9 فصل به شرح طراحی الگوریتم و مبانی مربوط به آن خواهد پرداخت.
در ادامه مقدمهای از کتاب Techniques for Designing and Analyzing Algorithms را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Techniques for Designing and Analyzing Algorithms:
تدریس دروس طراحی و تحلیل الگوریتمها را از اوایل دهه 1980 شروع کردم. در آن زمان تنها یک کتاب درسی با عنوان مبانی الگوریتمهای کامپیوتری توسط هوروویتز و صحنی موجود بود. من یادداشتهای درسی خود را تایپ کردم و کتاب کوتاهی با عنوان مقدمهای بر طراحی و تحلیل الگوریتمها در سال 1985 منتشر کردم. ناشر مرکز تحقیقات چارلز بابیج بود، یک ناشر کوچک داخلی در دانشگاه مانیتوبا که توسط رالف استانتون مدیریت میشد. تعدادی از افراد در دانشگاه های مختلف در طول سال ها از این کتاب در دوره های خود استفاده کردند، اما در نهایت چاپ نشد.
فکر میکنم کتاب من یکی از نمونههای قبلی انتشار رومیزی باشد. من کتاب را روی کامپیوتر جدیدم (در آن زمان) Macintosh 512K آماده کردم. به این دلیل که مقدار RAM از 128K (در نسخه اصلی) به 512K افزایش یافته بود، عموماً به عنوان “Fat Mac” شناخته میشد. نرمافزار حروفچینی در آن زمان کاملاً ابتدایی بود و به یاد میآورم که معادلات ریاضی را به عنوان اشیاء گرافیکی آماده میکردم و آنها را در مکانهای مناسب در سند میچسبانم.
بیشتر بخوانید: کتاب Algorithms For Dummies
پس از سالها تدریس این مطالب و توسعه نسخههای مختلف اسلایدها و یادداشتهای دوره، تصمیم گرفتم کتاب درسی به روز شدهای در این زمینه بنویسم. البته در طول 35 سال گذشته پیشرفتهای زیادی در الگوریتمها صورت گرفته است، اما بسیاری از نظریههای پایه در دورههای مدرن بسیار شبیه به مطالبی است که در دورههای آن دوره پوشش داده میشود. با این حال، هدف من نوشتن یک کتاب درسی بهروز بوده که شامل پیشرفتهای مختلف جدید و مناسب برای یک کتاب درسی مقدماتی باشد.
کتاب Techniques for Designing and Analyzing Algorithms بر اساس برنامه درسی درس الگوریتمهای سال سوم است که در دانشکده علوم کامپیوتر دیوید آر چریتون در دانشگاه واترلو تدریس میشود. در واترلو، دانشجویان علوم کامپیوتر یک دوره سال دوم در ساختار داده و مدیریت داده میگذرانند.
در دوره دوم، دانشآموزان با نشانهگذاری و تجزیه و تحلیل پیچیدگی ترتیب و همچنین مقدار قابل توجهی از مطالب در مورد ساختارهای داده پایه و پیشرفته، از جمله پشتهها، صفها، صف های اولویت، درختان جستجو و غیره آشنا میشوند.
الگوریتمهای مرتبسازی مختلف نیز مورد مطالعه قرار میگیرند. و تحلیل کرد. امیدوارم اکثر دانشآموزانی که از کتاب Techniques for Designing and Analyzing Algorithms استفاده میکنند با بسیاری از مطالب پیشزمینه ذکر شده در بالا آشنا باشند.
با این حال، از آنجایی که توالی دروس مختلفی در الگوریتمها وجود دارد، سه فصل اول کتاب Techniques for Designing and Analyzing Algorithms به بررسی پیشینه ریاضی، تحلیل الگوریتم پایه و ساختار دادهها میپردازد. این برای بسیاری از دانش آموزان بررسی خواهد شد، اما همچنان باید به عنوان یک مرجع مفید باشد. برای دانشآموزانی که قبلاً این مطالب را پوشش ندادهاند، مطالعه این فصلها مقدمهای را فراهم میکند که برای بقیه کتاب مناسب است.
در اینجا خلاصهای از مطالب ارائه شده در کتاب Techniques for Designing and Analyzing Algorithms آمده است.
• فصل 1 موضوعات مختلف ریاضی، مانند نشانهگذاری ترتیب، فرمولهای ریاضی مرتبط، نظریه احتمالات و متغیرهای تصادفی را ارائه میکند.
• فصل 2 به بررسی تکنیکهای مختلف تحلیل الگوریتم، از جمله تحلیل حلقه میپردازد. ما همچنین کاهشهایی را معرفی میکنیم که دوباره در فصل 9 مورد بررسی قرار میگیرند. در نهایت، نمونههایی از تحلیل دقیق را در این فصل ارائه میکنیم.
• فصل 3 مفاهیم اساسی مختلف در ساختارهای داده، از جمله پشتهها، صفها، صفهای اولویت، درختهای جستجوی باینری و جداول هش را مورد بحث قرار میدهد.
• فصل 4 به الگوریتمهای تقسیم کن و حکومت کن میپردازد. این فصل همچنین شامل بحث نسبتاً مفصلی در مورد روابط عود است.
• فصل 5 ارائه الگوریتمهای مختلف حریصانه است.
• فصل 6 برنامه نویسی پویا و یادداشت را پوشش میدهد.
• فصل 7 الگوریتمهای گراف مختلف، از جمله جستجوی عرض اول و عمق، حداقل درختان پوشا و الگوریتمهای کوتاهترین مسیر را شرح میدهد.
• مبحث فصل 8 الگوریتمهای عقب گرد، از جمله تکنیکهای هرس و شاخه و کران است. این موضوعی است که اغلب در کتابهای درسی طراحی و تحلیل الگوریتمها یافت نمیشود.
• فصل 9 نظریه اساسی کامل بودن NP، شامل کلاسهای پیچیدگی P و NP، و مسائل NP-hard را ارائه میکند. الگوریتمهای تقریب معرفی شدهاند و ما همچنین یک درمان مختصر از تصمیمناپذیری ارائه میدهیم.
کتابهای درسی زیادی در مورد الگوریتمها وجود دارد که حاوی بیش از 1000 صفحه مطالب است. من عمداً کتاب کوتاهتری نوشتهام که در آن سعی کردهام با انتخاب نمونهای از الگوریتمهای مفید برای نشان دادن مهمترین تکنیکهای طراحی، مفاهیم اساسی موضوع را بررسی کنم. من دقت کردهام که توضیحات شبه کدهای دقیق الگوریتمها را همراه با الگوریتمهای گویا ارائه کنم. در صورت لزوم، مدارک صحت الگوریتمها نیز درج میشود. در نهایت سعی کرده ام تمام مطالب کتاب را با دقت ریاضی مناسب ارائه کنم.
طراحی و تجزیه و تحلیل الگوریتمها به دلیل ماهیت گاهی انتزاعی و استفاده از طیف گسترده ای از ابزارهای ریاضی میتواند موضوعی دشوار برای دانش آموزان باشد. فلسفه من همیشه این است که سعی کنم موضوع را تا حد امکان ساده کنم. در حالت ایدهآل، پس از خواندن و درک مطالب در کتاب Techniques for Designing and Analyzing Algorithms، دانشآموزان میتوانند اصول اولیه طراحی را در مسائل مختلف دنیای واقعی که ممکن است در حرفههای حرفهای آینده خود با آنها مواجه شوند، اعمال کنند.
بازخورد مفیدی در رابطه با محتوای کتاب Techniques for Designing and Analyzing Algorithms از افراد مختلف دریافت کردهام. به ویژه، مایلم از مایکل دینیتز، کی. گوپالاکریشنان و دان کرهر برای نظراتشان تشکر کنم. همچنین در طول سالها از همکاران مختلفی که با آنها این مطالب را آموزش داده ام، توصیههای مفید زیادی کسب کرده ام.
سرفصلهای کتاب Techniques for Designing and Analyzing Algorithms:
- Cover
- Half Title
- Series Page
- Title Page
- Copyright Page
- Dedication
- Contents
- Preface
- 1. Introduction and Mathematical Background
- 2. Algorithm Analysis and Reductions
- 3. Data Structures
- 4. Divide-and-Conquer Algorithms
- 5. Greedy Algorithms
- 6. Dynamic Programming Algorithms
- 7. Graph Algorithms
- 8. Backtracking Algorithms
- 9. Intractability and Undecidability
- Bibliography
- Index
جهت دانلود کتاب Techniques for Designing and Analyzing Algorithms میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.