مقدمه‏ ایی بر طراحی و تحلیل الگوریتم‏ ها (جلد اول)

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

پیشگفتار مترجم. ز‌


پیشگفتار مؤلف.. غ‌


1     مقدمه. 1


1.1   الگوریتم چیست؟. 4


تمرینات 1.1 14


2.1   مبانی حل الگوریتمی مسأله. 16


فهمیدن مسأله. 16


اطمینان از قابلیت‌های وسیله رایانشی.. 19


تصمیم‌گیری درباره حل دقیق یا حل تقریبی مسأله. 20


فنون طراحی الگوریتم‌. 21


طراحی الگوریتم و ساختارداده‌ها 22


روش‌های توصیف الگوریتم‌. 23


اثبات درستی الگوریتم‌. 25


تحلیل الگوریتم‌. 25


پیاده‌سازی الگوریتم‌. 27


تمرینات 2.1 31


3.1   انواع مسائل مهم. 33


مرتب‌سازی.. 33


جستجو. 35


مسائل پردازش رشته. 36


مسائل گراف.. 38


مسائل ترکیبیاتی.. 39


مسائل هندسی.. 41


مسائل عددی.. 42


تمرینات 3.1 45


4.1   ساختارداده‌های پایه‌ای.. 47


ساختارداده‌های خطی.. 49


مجموعه‌ها و لغتنامه‌ها 52


[آرایه‌ها] 54


[لیست‌های پیوندی] 56


[پشته‌ها] 64


[صف‌ها] 68


[صف‌های اولویت] 71


[لغتنامه‌ها] 73


[مجموعه‌ها] 74


گراف‌ها 75


درخت‌ها 81


[چندجمله‌ای‌ها، ماتریس‌ها، چندضلعی‌ها و رشته‌ها] 89


تمرینات 4.1 94


خلاصه. 95


[یادداشت‌های پایانی] 97


2     مبانی تحلیل کارایی الگوریتم‌ها 113


1.2   چارچوب تحلیل کارایی الگوریتم‌ها 114


اندازه‌گیری ورودی الگوریتم‌ها 115


واحدهای اندازه‌گیری زمان اجرای الگوریتم‌ها 117


مرتبه‌های رشد توابع. 119


کارایی‌های بدترین حالت، بهترین حالت و میانگین حالت الگوریتم‌ها 121


جمع‌بندی چارچوب تحلیل کارایی الگوریتم‌ها 127


تمرینات 1.2. 127


2.2   نمادهای مجانبی و رده‌های کارایی اصلی.. 129


تعریف ساده نمادها 130


نماد مجانبی . 131


نماد مجانبی .. 132


نماد مجانبی . 133


یک ویژگی مفید نمادهای مجانبی.. 134


استفاده از حد برای مقایسه مرتبه‌های رشد توابع. 135


رده‌های کارایی پایه‌ای الگوریتم‌ها 137


تمرینات 2.2. 139


3.2   تحلیل ریاضی الگوریتم‌های غیربازگشتی.. 141


تمرینات 3.2. 150


4.2   تحلیل ریاضی الگوریتم‌های بازگشتی.. 153


تمرینات 4.2. 164


5.2   مثال: محاسبه   اُمین عدد فیبوناچی.. 168


تمرینات 5.2. 175


6.2   تحلیل تجربی الگوریتم‌ها 176


تمرینات 6.2. 184


7.2   توصیف تصویری الگوریتم‌ها 186


خلاصه. 190


[یادداشت‌های پایانی] 192


3     ساده‌اندیشی و جستجوی کامل. 211


1.3   مرتب‌سازی انتخابی و مرتب‌سازی حبابی.. 213


مرتب‌سازی انتخابی.. 213


مرتب‌سازی حبابی.. 215


تمرینات 1.3. 218


2.3   جستجوی ترتیبی و تطابق رشتۀ ساده‌اندیشانه. 220


جستجوی ترتیبی.. 220


تطابق رشتۀ ساده‌اندیشانه. 221


تمرینات 2.3. 224


3.3   الگوریتم‌های ساده‌اندیشانه برای مسائل نزدیک‌ترین زوج و پوسته محدب.. 226


مسأله نزدیک‌ترین زوج. 226


مسأله پوسته محدب.. 230


تمرینات 3.3. 234


4.3   جستجوی کامل.. 237


مسأله فروشنده دوره‌گرد. 239


مسأله کوله‌پشتی.. 241


مسأله تخصیص... 243


تمرینات 4.3. 245


5.3   پیمایش عمقی و پیمایش سطحی.. 247


پیمایش عمقی.. 248


پیمایش سطحی.. 256


تمرینات 5.3. 261


خلاصه. 263


[یادداشت‌های پایانی] 265


4    تقلیل و حل. 303


1.4   مرتب‌سازی درجی.. 308


تمرینات 1.4. 313


2.4   مرتب‌سازی مکانی.. 315


[الگوریتم حذف منبع] 319


تمرینات 2.4. 321


3.4   الگوریتم‌هایی برای تولید اشیاء ترکیبیاتی.. 323


تولید جایگشت‌ها 325


تولید زیرمجموعه‌ها 328


تمرینات 3.4. 332


4.4   الگوریتم‌هایی از گونه تقلیل با نسبت ثابت.. 334


جستجوی دودویی.. 334


مسأله سکه تقلبی.. 337


ضرب کشاورز روسی.. 338


مسأله جوزفوس.. 339


تمرینات 4.4. 342


5.4   الگوریتم‌هایی از گونه تقلیل با اندازه متغیر. 344


تعیین میانه و مسأله انتخاب.. 344


جستجوی درونیابی.. 350


جستجو و درج در درخت دودویی جستجو. 353


بازی نیم. 360


تمرینات 5.4. 364


خلاصه. 366


[یادداشت‌های پایانی] 367


5    تقسیم و حل. 391


1.5   مرتب‌سازی ادغامی.. 396


تمرینات 1.5. 401


2.5   مرتب‌سازی سریع. 402


تمرینات 2.5. 411


3.5   پیمایش‌های درخت‌های دودویی و موضوعات مرتبط.. 412


[پیمایش‌های درخت] 415


تمرینات 3.5. 417


4.5   ضرب اعداد صحیح بزرگ و ضرب ماتریسی اشتراسن.. 419


ضرب اعداد صحیح بزرگ.. 419


ضرب ماتریسی اشتراسن. 423


تمرینات 4.5. 429


5.5   الگوریتم‌های تقسیم‌وحل برای مسائل نزدیک‌ترین زوج و پوسته محدب.. 430


مسأله نزدیک‌ترین زوج. 430


مسأله پوسته محدب.. 433


تمرینات 5.5. 437


خلاصه. 438


[یادداشت‌های پایانی] 440


6    تبدیل ‌و حل. 459


1.6   پیش‌مرتب‌سازی.. 462


تمرینات 1.6. 466


2.6   الگوریتم گاوس... 469


تجزیه . 476


محاسبه معکوس ماتریس... 478


محاسبه دترمینان ماتریس... 480


تمرینات 2.6. 482


3.6   درخت‌های جستجوی متوازن. 484


درخت‌های ای.وی.ال. 486


درخت‌های 3-2. 496


تمرینات 3.6. 500


4.6   هرم‌ها و مرتب‌سازی هرمی.. 501


مفهوم هرم. 502


[الگوریتم‌های ساخت هرم] 504


[الگوریتم حذف] 509


مرتب‌سازی هرمی.. 511


تمرینات 4.6. 513


5.6   قاعده هُرنر و به‌توان‌رسانی دودویی.. 515


قاعده هُرنر. 515


به‌توان‌رسانی دودویی.. 519


تمرینات 5.6. 522


6.6   تبدیل مسأله. 524


محاسبه کوچک‌ترین مضرب مشترک.. 526


شمارش مسیرها در یک گراف.. 527


تبدیل مسائل بهینه‌سازی به یکدیگر. 528


برنامه‌ریزی خطی.. 530


تبدیل به مسائل گراف.. 534


تمرینات 6.6. 536


خلاصه. 538


[یادداشت‌های پایانی] 541


7    تقابل فضا و زمان. 579


1.7   مرتب‌سازی با شمارش... 582


[مرتب‌سازی شمارشی توزیعی] 584


تمرینات 1.7. 587


2.7   تطابق رشته با غنی‌سازی ورودی.. 589


الگوریتم هرسپول. 589


الگوریتم بویر- مور 594


تمرینات 2.7. 599


3.7   درهم‌سازی.. 601


درهم‌سازی باز (زنجیره‌سازی مجزا) 605


درهم‌سازی بسته (نشانی‌دهی باز) 610


تمرینات 3.7. 619


4.7   درخت‌های بی.. 621


[الگوریتم جستجو] 625


[الگوریتم درج] 627


[الگوریتم حذف] 630


[تحلیل کارایی الگوریتم‌های درخت بی] 632


تمرینات 4.7. 635


خلاصه. 636


[یادداشت‌های پایانی] 638