Jeff Edmonds

#Algorithms
#Loop
#Recursion
#Invariants
#Optimization
🧩 با این کتاب درسی بازنگریشده و کاربرپسند، الگوریتمها و شیوهٔ طراحی آنها را عمیقتر درک کنید.
برخلاف بسیاری از کتابهای الگوریتم، این کتاب رویکردی ساده، قابلفهم و آموزنده دارد. روشهای توضیحدادهشده در آن روشن هستند و بینشهای ارزشمندی ارائه میکنند. بدون نیاز به اثباتهای پیچیده و ریاضیمحور، دانشجویان میتوانند از روشهای گامبهگام برای توسعه الگوریتمها، راهنماییهای تخصصی در مورد اشتباهات رایج، و دیدگاهی جامعتر نسبت به طراحی بهرهمند شوند.
📘 ویژگیهای نسخه دوم:
در این نسخه بازبینیشده، فصل جدیدی درباره الگوریتمهای یادگیری ماشین افزوده شده است. همچنین خلاصههای مفهومی در انتهای هر بخش برای مرور سریع آمدهاند. بیش از ۱۵۰ تمرین تازه نیز به آن اضافه شده است؛ برخی تمرینها همراه با پاسخ برای بررسی پیشرفت دانشجو ارائه شدهاند و راهنمای کامل پاسخها برای مدرسان بهصورت آنلاین در دسترس است. هیچ متن دیگری مفاهیم دشوری چون «ناوردای حلقه» را به این روشنی توضیح نمیدهد، و همین امر به دانشجویان کمک میکند تا تفکر انتزاعی بیاموزند و توان طراحی راهحلهای خلاقانه را در خود پرورش دهند.
📚 فهرست مطالب
بخش اول: الگوریتمهای تکراری و ناوردای حلقه
بخش دوم: بازگشت (Recursion)
11. مفاهیم، روشها و نظریه
12. نمونههایی ساده از الگوریتمهای بازگشتی
13. بازگشت در درختها
14. تصاویر بازگشتی
15. تجزیه نحوی با گرامرهای مستقل از متن
16. خلاصه مفاهیم کلیدی: بازگشت
17. تمرینهای تکمیلی: بخش دوم
18. پاسخهای جزئی به تمرینهای تکمیلی: بخش دوم
بخش سوم: مسائل بهینهسازی
19. تعریف مسائل بهینهسازی
20. الگوریتمهای جستوجو در گراف
21. جریانهای شبکه و برنامهریزی خطی
22. الگوریتمهای حریصانه
23. بازگشت به عقب (Backtracking)
24. الگوریتمهای برنامهریزی پویا
25. طراحی الگوریتمهای برنامهریزی پویا از طریق کاهش (Reduction)
26. بازی زندگی (Game of Life)
27. راهحل بهصورت درخت
28. کاهشها و کاملبودن NP
29. الگوریتمهای تصادفی
30. یادگیری ماشین
31. خلاصه مفاهیم کلیدی: الگوریتمهای حریصانه و برنامهریزی پویا
32. تمرینهای تکمیلی: بخش سوم
33. پاسخهای جزئی به تمرینهای تکمیلی: بخش سوم
بخش چهارم: مباحث تکمیلی
34. کوانتورهای وجودی و کلی
35. پیچیدگی زمانی
36. لگاریتمها و توانها
37. رشد مجانبی
38. تقریبهای سادهسازیشده برای محاسبات
39. روابط بازگشتی
40. اثبات رسمی درستی الگوریتم
41. تمرینهای تکمیلی: بخش چهارم
42. پاسخهای جزئی به تمرینهای تکمیلی: بخش چهارم
💬 نقد و بررسیها
«کتاب How to Think about Algorithms اثر Jeff Edmonds دیدگاهی تازه ارائه میدهد؛ با تمرکز بر اصول طراحی سیستماتیک اما شهودی مانند پیششرطها، پسشرطها، ناورداییها و درستی شفاف. این کتاب همچون مراقبهای راهنما در دنیای وسیع الگوریتمهاست که ذهن خواننده را به هستهی هر بینش معطوف میسازد، و با مثالهای متعادل، تشبیهات هوشمندانه و تمرینهای انگیزهبخش ذهن را فعال نگه میدارد.»
— Nathan Chenette، مؤسسه فناوری Rose-Hulman
«با کتابی خوب مانند این، یادگیری الگوریتمها و ساخت برنامههای کارآمد هم سرگرمکننده است و هم توانمندساز. هر کسی که میخواهد برنامهنویس خوبی باشد، از این کتاب روان و جذاب بسیار بهره خواهد برد. رویکردش برای مطالعهی فردی عالی است، زیرا بدون ریاضیات سنگین، آموزش الگوریتمها را لذتبخش میسازد. تمرینهای ارزشمندی دارد و از همه مهمتر، واقعاً به شما یاد میدهد چگونه درباره الگوریتمها فکر کنید. این توانایی، درک و مهارتی به شما میدهد تا سیستمها را سریعتر و مطمئنتر بسازید. همچنین برای دورههای دانشگاهی مناسب است، چون محتوایی منسجم و خودکفا ارائه میکند و مهمتر از همه، دانشجویان را به تفکر مستقل تشویق میکند.»
— Harold Thimbleby، دانشگاه Swansea
📖 توضیح کتاب
کتابی استثنائاً کاربرپسند، با بیش از ۱۵۰ تمرین تازه، خلاصه مفاهیم کلیدی و فصلی جدید درباره الگوریتمهای یادگیری ماشین.
👨🏫 درباره نویسنده
Jeff Edmonds استاد مهندسی برق و علوم کامپیوتر در دانشگاه York کانادا است.
Understand algorithms and their design with this revised student-friendly textbook. Unlike other algorithms books, this one is approachable, the methods it explains are straightforward, and the insights it provides are numerous and valuable. Without grinding through lots of formal proof, students will benefit from step-by-step methods for developing algorithms, expert guidance on common pitfalls, and an appreciation of the bigger picture. Revised and updated, this second edition includes a new chapter on machine learning algorithms, and concise key concept summaries at the end of each part for quick reference. Also new to this edition are more than 150 new exercises: selected solutions are included to let students check their progress, while a full solutions manual is available online for instructors. No other text explains complex topics such as loop invariants as clearly, helping students to think abstractly and preparing them for creating their own innovative ways to solve problems.
Table of Contents
Part I Iterative Algorithms and Loop Invariants
1 Iterative Algorithms: Measures of Progress and Loop Invariants
2 Examples Using More-of-the-Input Loop Invariants
3 Abstract Data Types
4 Narrowing the Search Space: Binary Search
5 Iterative Sorting Algorithms
6 More Iterative Algorithms
7 The Loop Invariant for Lower Bounds
8 Key Concepts Summary: Loop Invariants and Iterative Algorithms
9 Additional Exercises: Part I
10 Partial Solutions to Additional Exercises: Part I
Part II Recursion
11 Abstractions, Techniques, and Theory
12 Some Simple Examples of Recursive Algorithms
13 Recursion on Trees
14 Recursive Images
15 Parsing with Context-Free Grammars
16 Key Concepts Summary: Recursion
17 Additional Exercises: Part II
18 Partial Solutions to Additional Exercises: Part II
Part Ill Optimization Problems
19 Definition of Optimization Problems
20 Graph Search Algorithms
21 Network Flows and Linear Programming
22 Greedy Algorithms
23 Recursive Backtracking
24 Dynamic Programming Algorithms
25 Designing Dynamic Programming Algorithms via Reductions
26 The Game of Life
27 Solution Is a Tree
28 Reductions and NP-Completeness
29 Randomized Algorithms
30 Machine Learning
31 Key Concepts Summary: Greedy Algorithms and Dynamic Programming
32 Additional Exercises: Part Ill
33 Partial Solutions to Additional Exercises: Part III
I 33 Partial Solutions to Additional Exercises: Part Ill
Part IV Additional Topics
34 Existential and Universal Quantifiers
35 Time Complexity
36 Logarithms and Exponentials
37 Asymptotic Growth
38 Adding-Made-Easy Approximations
39 Recurrence Relations
40 A Formal Proof of Correctness
41 Additional Exercises: Part IV
42 Partial Solutions to Additional Exercises: Part IV
Exercise Solutions
‘Jeff Edmonds’ How to Think about Algorithms offers a fresh perspective, placing methodical but intuitive design principles (pre- and post-conditions, invariants, ‘transparent’ correctness) as the bedrock on which to build and practice algorithmic thinking. The book reads like an epic guided meditation on the vast universe of algorithms, directing the reader’s attention to the core of each insight, while stimulating the mind through well-paced examples, playful but concise analogies, and thought-provoking exercises.’ Nathan Chenette, Rose-Hulman Institute of Technology
‘With a good book like this in your hands, learning about algorithms and getting programs to work well will be fun and empowering. Anybody who wants to be a good programmer will get a great deal from this surprisingly readable book. Its approach makes it perfect for reading on your own if you want to enjoy learning about algorithms without being distracted by heavy maths. It has lots of exercises that are worth doing. Most importantly, How to Think about Algorithms does just that: it shows you how to think about algorithms and become a better programmer. Knowing how to think about algorithms gives you the insights and skills to make computers do anything more reliably and faster. The book is also ideal for any taught university course, because it is self-contained and systematically sets out the essential material, but most importantly because it empowers students to think for themselves.’ Harold Thimbleby, Swansea University
Exceptionally student-friendly, now with over 150 new exercises, key concept summaries, and a new chapter on machine learning algorithms.
Jeff Edmonds is Professor in the Department of Electrical Engineering and Computer Science at York University, Canada.









