skip to main content
Skip header Section
P, NP, and NP-Completeness: The Basics of Computational ComplexityAugust 2010
Publisher:
  • Cambridge University Press
  • 40 W. 20 St. New York, NY
  • United States
ISBN:978-0-521-12254-2
Published:16 August 2010
Pages:
216
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

The focus of this book is the P-versus-NP Question and the theory of NP-completeness. It also provides adequate preliminaries regarding computational problems and computational models. The P-versus-NP Question asks whether or not finding solutions is harder than checking the correctness of solutions. An alternative formulation asks whether or not discovering proofs is harder than verifying their correctness. It is widely believed that the answer to these equivalent formulations is positive, and this is captured by saying that P is different from NP. Although the P-versus-NP Question remains unresolved, the theory of NP-completeness offers evidence for the intractability of specific problems in NP by showing that they are universal for the entire class. Amazingly enough, NP-complete problems exist, and furthermore hundreds of natural computational problems arising in many different areas of mathematics and science are NP-complete.

Contributors
  • Weizmann Institute of Science Israel

Recommendations

Haris Aziz

Complexity theory-the study of the intrinsic requirement of computational resources to solve algorithmic problems-is a fundamental pillar of theoretical computer science (CS). This book is not only a basic textbook on computational complexity; it also introduces readers to the most central question of theoretical CS: the P versus NP question. Informally, the question asks whether finding a solution to a computational problem is intrinsically harder than verifying the solution. To put it slightly more formally: for the P class of problems, the solution can be found in polynomial time; for the NP class of problems, the solution can be verified in polynomial time. The P versus NP question asks whether or not P is equivalent to NP. There are a number of textbooks on the subject, from both the previous decade [1,2] and more recent years [3,4]. In fact, this book is an introductory version of a more advanced book by the same author [4]. The book is divided into five main chapters. Chapter 1 presents representations of computational problems and models of computation. Chapter 2 presents the P versus NP question. Chapter 3 describes the idea of polynomial-time reductions from one problem to another. Chapter 4 gives an overview of NP completeness, which is the class of hardest problems in the class NP. The final chapter presents slightly more advanced topics: promise problems (for which a solution is guaranteed to exist), optimal search algorithms for problems in NP, and the class coNP (a set of problems for which the nonmembership of a solution can be verified in polynomial time). The author's very intuitive account of the most fundamental issues in complexity theory makes the book suitable for a first-year computational complexity class. To the author's credit, rigor and formality are not compromised for this accessibility. In this sense, the book successfully brings the P versus NP question to a wider audience. Online Computing Reviews Service

Paul Cull

The P = NP question is a central question in computer science. Its importance is evinced by the million-dollar prize for its solution. So, it's a real pleasure when an expert tries to explain this problem and its relevance to beginners and undergraduates. Goldreich is an expert and the author of a tome on computational complexity [1]. In fact, this short book is a reworking of Computational complexity 's chapter 2 [1]. The reworking includes fuller explanations and various asides on teaching this material. The book is organized into five chapters. Chapter 1 fills in the needed background on computation and the meaning of computational complexity. Chapter 2 explains P and NP in terms of search problems and decision problems, and includes a discussion of the equivalence of the definitions in terms of nondeterminism and verification. Chapter 3 covers several notions of polynomial time reduction, including those of Cook, Karp, and Levin. Chapter 4, on NP-completeness, shows that several well-known problems are NP-complete, discusses positive and negative applications of NP-completeness, and shows that there are NP problems that are not NP-complete if P and NP are distinct. Chapter 5 deals with promise problems, an optimal search algorithm for NP, and the class co-NP. One of the pleasures of reading a book by an expert is being exposed to opinions that may not be universally accepted. For example, Goldreich opines that search problems are more important than decision problems, and that computational complexity rather than computability should be taught to undergraduates. What's not in this book__?__ A long list of NP-complete problems is missing. Of course, Garey and Johnson's classic [2] has such a list, and there are long lists available on the Web. There is little discussion about how to deal with NP-complete problems. Approximation algorithms and heuristics are absent, and there is only a mention of randomized algorithms. There is also no discussion of pragmatics. After reading this book, I think that one would be surprised to learn that several-hundred-city traveling salesman problems (TSPs) and large instances of SAT are routinely solved. (The cover picture, a sliding tile puzzle, is not mentioned in the text.) Is this a book for beginners__?__ I'm afraid not. Things that are obvious to the author may not be obvious to neophytes. In spite of the author's attempt to make the book user-friendly, the writing is still at the terseness level of a mathematical tract. For a really intuitive introduction to NP, check out Harel's easy-to-read book [3]; for undergraduates, there are more accessible texts out there [4,5]. In conclusion, while this book is probably too hard for undergraduates, it is ideal for graduate students who are preparing for exams. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.