17.1 Introduction17.2 Upper and Lower Bounds17.2.1 Algorithmic gap17.3 Efficiency and Tractability17.3.1 Problem description17.3.2 A quick and operating definition of NP-complete problems17.3.3 Some known NP-complete problems17.3.4 What is a certificate?17.3.5 Non-deterministic algorithms17.4 NP-Completeness17.5 Polynomial Time Reductions17.6 Problem Classes P, NP, and Others17.7 Bounded Halting is in NPC17.8 Cook’s Theorem17.8.1 An example reduction to SAT17.8.2 Examples of problems in different classes17.9 Is P = NP?17.9.1 NP-completeness17.9.2 How to prove NP-completeness in practice17.9.3 Primality test17.10 Approximate Solutions to NPC Problems17.11 Provably Intractable Problems17.11.1 Example—an intractable SAT17.12 Even Harder Problems17.13 Unreasonable Requirements of Memory17.14 Complexity Classes and Intractability17.15 Non-Computability and Undecidability17.16 Algorithmic Program Verification17.16.1 Halting Problem (HP)17.17 Partially and Highly Undecidable Problems17.18 The Four Levels of Algorithmic BehaviourSummaryKey TermsWeb Resources