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

15,200,000 ریالریال 19,000,000

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

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


 


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


 


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