توضیحاتی در مورد کتاب :
تئوری محاسبات و پیچیدگی باید برای متخصصان و همچنین نظریه پردازان مورد توجه قرار گیرد. با این حال، متأسفانه، این میدان به دلیل نفوذ ناپذیری خود شناخته شده است. هدف نیل جونز به عنوان یک معلم و نویسنده، ایجاد پلی بین تئوری محاسبه پذیری و پیچیدگی و سایر حوزه های علوم کامپیوتر، به ویژه برنامه نویسی است. جونز با دور شدن از رویکردهای کلاسیک مبتنی بر عدد تورینگ و اعداد گودل، از مفاهیم آشنا از زبان های برنامه نویسی استفاده می کند تا محاسبات و پیچیدگی را برای دانشمندان کامپیوتر قابل دسترس تر کند و برای مسائل برنامه نویسی عملی کاربرد بیشتری داشته باشد. به گفته جونز، زمینه های محاسبه پذیری و نظریه پیچیدگی، و همچنین زبان های برنامه نویسی و معناشناسی، چیزهای زیادی برای ارائه به یکدیگر دارند. تئوری محاسبات و پیچیدگی وسعت، عمق و عمومیت دارد که اغلب در زبان های برنامه نویسی دیده نمی شود. در همین حال، جامعه زبان برنامه نویسی، درک محکمی از طراحی، ارائه و پیاده سازی الگوریتم دارد. علاوه بر این، زبانهای برنامهنویسی گاهی اوقات مدلهای محاسباتی را ارائه میکنند که در برخی جنبههای حیاتی واقعیتر از مدلهای سنتی هستند. نتایج جدید در این کتاب شامل اثباتی است مبنی بر اینکه عوامل زمان ثابت برای مدل محاسبات برنامهنویسی آن اهمیت دارند. (در مقابل، ماشینهای تورینگ دارای یک خاصیت «سرعت ثابت» ضد شهودی هستند: اینکه تقریباً هر برنامهای را میتوان با هر مقداری سریعتر اجرا کرد. کلاس های پیچیدگی PTIME و LOGSPACE، و یک رویکرد جدید برای تکمیل مشکلات برای NLOGSPACE، PTIME، NPTIME، و PSPACE، به طور یکنواخت بر اساس برنامه های Boolean.
فهرست مطالب :
Cover......Page 1
Copyright......Page 2
Contents......Page 3
Preface......Page 5
List of Notations......Page 13
1 Introduction......Page 14
2 The While Language......Page 38
3 Programs as Data Objects......Page 57
4 Self-Interpretation: Universal Programs for WHILE and I......Page 77
5 Elements of Computability Theory......Page 83
6 Metaprogramming, Self-Application, and Compiler Generation......Page 97
7 Other Sequential Models of Computation......Page 119
8 Robustness of Computability......Page 134
9 Computability by Functional Languages......Page 144
10 Some Natural Unsolvable Problems......Page 158
11 Hilbert's Tenth Problem......Page 172
12 Inference Systems and Godel's Incompleteness Theorem......Page 191
13 Computability Theory Based on Numbers......Page 209
14 More Abstract Approaches to Computability......Page 218
15 Overview of Complexity Theory......Page 241
16 Measuring Time Usage......Page 251
17 Time Usage of Tree-Manipulating Programs......Page 263
18 Robustness of Time-Bounded Computation......Page 273
19 Linear and Other Time Hierarchies for WHILE Programs......Page 287
20 The Existence of Optimal Algorithms......Page 298
21 Space-Bounded Computations......Page 316
22 Nondeterministic Computations......Page 332
23 A Structure for Classifying the Complexity of Various Problems......Page 335
24 Characterizations of LOGSPACE and PTIME by GOTO Programs......Page 348
25 Completeness and Reduction of One Problem to Another......Page 362
26 Complete Problems for PTIME......Page 379
27 Complete Problems for NPTIME......Page 393
28 Complete Problems for PSPACE......Page 402
Appendix......Page 412
Bibliography......Page 441
Index......Page 450
توضیحاتی در مورد کتاب به زبان اصلی :
Computability and complexity theory should be of central concern to practitioners as well as theorists. Unfortunately, however, the field is known for its impenetrability. Neil Jones's goal as an educator and author is to build a bridge between computability and complexity theory and other areas of computer science, especially programming. In a shift away from the Turing machine- and Gödel number-oriented classical approaches, Jones uses concepts familiar from programming languages to make computability and complexity more accessible to computer scientists and more applicable to practical programming problems. According to Jones, the fields of computability and complexity theory, as well as programming languages and semantics, have a great deal to offer each other. Computability and complexity theory have a breadth, depth, and generality not often seen in programming languages. The programming language community, meanwhile, has a firm grasp of algorithm design, presentation, and implementation. In addition, programming languages sometimes provide computational models that are more realistic in certain crucial aspects than traditional models. New results in the book include a proof that constant time factors do matter for its programming-oriented model of computation. (In contrast, Turing machines have a counterintuitive "constant speedup" property: that almost any program can be made to run faster, by any amount. Its proof involves techniques irrelevant to practice.) Further results include simple characterizations in programming terms of the central complexity classes PTIME and LOGSPACE, and a new approach to complete problems for NLOGSPACE, PTIME, NPTIME, and PSPACE, uniformly based on Boolean programs.