To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
Did you know that any straight-line drawing on paper can be folded so that the complete drawing can be cut out with one straight scissors cut? That there is a planar linkage that can trace out any algebraic curve, or even 'sign your name'? Or that a 'Latin cross' unfolding of a cube can be refolded to 23 different convex polyhedra? Over the past decade, there has been a surge of interest in such problems, with applications ranging from robotics to protein folding. With an emphasis on algorithmic or computational aspects, this treatment gives hundreds of results and over 60 unsolved 'open problems' to inspire further research. The authors cover one-dimensional (1D) objects (linkages), 2D objects (paper), and 3D objects (polyhedra). Aimed at advanced undergraduate and graduate students in mathematics or computer science, this lavishly illustrated book will fascinate a broad audience, from school students to researchers.
Let k ≥ 1 be an integer, and let H be a graph with no isolated vertices embedded in the projective plane, such that every homotopically non-trivial closed curve intersects H at least k times, and the deletion and contraction of any edge in this embedding results in an embedding that no longer has this property. Let G be the planar double cover of H obtained by lifting G into the universal covering space of the projective plane, the sphere. We prove that G is minor-minimal of branch-width 2k. We also exhibit examples of minor-minimal planar graphs of branch-width 6 that do not arise in this way.
We consider the following process for generating large random cubic graphs. Starting with a given graph, repeatedly add edges that join the midpoints of two randomly chosen edges. We show that the growing graph asymptotically almost surely has logarithmic diameter. This process is motivated by a particular type of peer-to-peer network. Our method extends to similar processes that generate regular graphs of higher degree.
The paper presents yet another way to reformulate the Four Colour Conjecture as a statement concerning conditional probabilities of certain events involving planar graphs.
This book starts by providing the relevant background on computability theory, which is the setting in which Complexity theoretic questions are being studied. Most importantly, this preliminary chapter (i.e., Chapter 1) provides a treatment of central notions, such as search and decision problems, algorithms that solve such problems, and their complexity. Special attention is given to the notion of a universal algorithm.
The main part of this book (i.e., Chapters 2–5) focuses on the P-vs-NP Question and on the theory of NP-completeness. Additional topics covered in this part include the general notion of an efficient reduction (with a special emphasis on reductions of search problems to corresponding decision problems), the existence of problems in NP that are neither NP-complete nor in P, the class coNP, optimal search algorithms, and promise problems. A brief overview of this main part follows.
The P-vs-NP Question. Loosely speaking, the P-vs-NP Question refers to search problems for which the correctness of solutions can be efficiently checked (i.e., there is an efficient algorithm that given a solution to a given instance determines whether or not the solution is correct). Such search problems correspond to the class NP, and the P-vs-NP Question corresponds to whether or not all these search problems can be solved efficiently (i.e., is there an efficient algorithm that given an instance finds a correct solution). Thus, the P-vs-NP Question can be phrased as asking whether finding solutions is harder than checking the correctness of solutions.
Overview: In light of the difficulty of settling the P-vs-NP Question, when faced with a hard problem H in NP, we cannot expect to prove that H is not in P (unconditionally), because this would imply P ≠ NP. The best we can expect is a conditional proof that H is not in P, based on the assumption that NP is different from P. The contrapositive is proving that if H is in P, then so is any problem in NP (i.e., NP equals P). One possible way of proving such an assertion is showing that any problem in NP is polynomial-time reducible to H. This is the essence of the theory of NP-completeness.
In this chapter we prove the existence of NP-complete problems, that is, the existence of individual problems that “effectively encode” a wide class of seemingly unrelated problems (i.e., all problems in NP). We also prove that deciding the satisfiability of a given Boolean formula is NP-complete. Other NP-complete problems include deciding whether a given graph is 3-colorable and deciding whether a given graph contains a clique of a given size. The core of establishing the NP-completeness of these problems is showing that each of them can encode any other problem in NP. Thus, these demonstrations provide a method of encoding instances of any NP problem as instances of the target NP-complete problem.
Organization. We start by defining NP-complete problems (see Section 4.1) and demonstrating their existence (see Section 4.2). […]
The following brief overview is intended to give a flavor of the questions addressed by Complexity Theory. It includes a brief review of the contents of the current book, as well as a brief overview of several more advanced topics. The latter overview is quite vague, and is merely meant as a teaser toward further study (cf., e.g., [13]).
Absolute Goals and Relative Results
Complexity Theory is concerned with the study of the intrinsic complexity of computational tasks. Its “final” goals include the determination of the complexity of any well-defined task. Additional goals include obtaining an understanding of the relations between various computational phenomena (e.g., relating one fact regarding Computational Complexity to another). Indeed, we may say that the former type of goals is concerned with absolute answers regarding specific computational phenomena, whereas the latter type is concerned with questions regarding the relation between computational phenomena.
Interestingly, so far Complexity Theory has been more successful in coping with goals of the latter (“relative”) type. In fact, the failure to resolve questions of the “absolute” type led to the flourishing of methods for coping with questions of the “relative” type. Musing for a moment, let us say that, in general, the difficulty of obtaining absolute answers may naturally lead to a search for conditional answers, which may in turn reveal interesting relations between phenomena. Furthermore, the lack of absolute understanding of individual phenomena seems to facilitate the development of methods for relating different phenomena. Anyhow, this is what happened in Complexity Theory.
Overview: Reductions are procedures that use “functionally specified” subroutines. That is, the functionality of the subroutine is specified, but its operation remains unspecified and its running time is counted at unit cost. Thus, a reduction solves one computational problem by using oracle (or subroutine) calls to another computational problem. Analogously to our focus on efficient (i.e., polynomial-time) algorithms, here we focus on efficient (i.e., polynomial-time) reductions.
We present a general notion of (polynomial-time) reductions among computational problems, and view the notion of a “Karp-reduction” (also known as “many-to-one reduction”) as an important special case that suffices (and is more convenient) in many cases. Reductions play a key role in the theory of NP-completeness, which is the topic of Chapter 4.
In the current chapter, we stress the fundamental nature of the notion of a reduction per se and highlight two specific applications: reducing search problems and optimization problems to decision problems. Furthermore, in these applications, it will be important to use the general notion of a reduction (i.e., “Cook-reduction” rather than “Karp-reduction”). We comment that the aforementioned reductions of search and optimization problems to decision problems further justify the common focus on the study of the decision problems.
Organization. We start by presenting the general notion of a polynomial-time reduction and important special cases of it (see Section 3.1). In Section 3.2, we present the notion of optimization problems and reduce such problems to corresponding search problems. […]
In this chapter we discuss three relatively advanced topics. The first topic, which was alluded to in previous chapters, is the notion of promise problems (Section 5.1). Next, we present an optimal algorithm for solving (“candid”) NP-search problems (Section 5.2). Finally, in Section 5.3, we briefly discuss the class (denoted coNP) of sets that are complements of sets in NP.
Teaching Notes
Typically, the foregoing topics are not mentioned in a basic course on complexity. Still, we believe that these topics deserve at least a mention in such a course. This holds especially with respect to the notion of promise problems. Furthermore, depending on time constraints, we recommend presenting all three topics in class (at least at an overview level).
We comment that the notion of promise problems was originally introduced in the context of decision problems, and is typically used only in that context. However, given the importance that we attach to an explicit study of search problems, we extend the formulation of promise problems to search problems as well. In that context, it is also natural to introduce the notion of a “candid search problem” (see Definition 5.2).
Promise Problems
Promise problems are natural generalizations of search and decision problems. These generalizations are obtained by explicitly considering a set of legitimate instances (rather than considering any string as a legitimate instance). As noted previously, this generalization provides a more adequate formulation of natural computational problems (and, indeed, this formulation is used in all informal discussions).
Although we view specific (natural) computational problems as secondary to (natural) complexity classes, we do use the former for clarification and illustration of the latter. This appendix provides definitions of such computational problems, grouped according to the type of objects to which they refer (i.e., graphs and Boolean formula).
We start by addressing the central issue of the representation of the various objects that are referred to in the aforementioned computational problems. The general principle is that elements of all sets are “compactly” represented as binary strings (without much redundancy). For example, the elements of a finite set S (e.g., the set of vertices in a graph or the set of variables appearing in a Boolean formula) will be represented as binary strings of length log2 |S|.
Graphs
Graph theory has long become recognized as one of the more useful mathematical subjects for the computer science student to master. The approach which is natural in computer science is the algorithmic one; our interest is not so much in existence proofs or enumeration techniques, as it is in finding efficient algorithms for solving relevant problems, or alternatively showing evidence that no such algorithms exist. Although algorithmic graph theory was started by Euler, if not earlier, its development in the last ten years has been dramatic and revolutionary.
Shimon Even, Graph Algorithms [8]
A simple graph G=(V,E) consists of a finite set of vertices V and a finite set of edges E, where each edge is an unordered pair of vertices; that is, E ⊆ {{u, v} : u, v∈V ∧ u≠v}.
According to a common opinion, the most important aspect of a scientific work is the technical result that it achieves, whereas explanations and motivations are merely redundancy introduced for the sake of “error correction” and/or comfort. It is further believed that, as with a work of art, the interpretation of the work should be left to the reader.
The author strongly disagrees with the aforementioned opinions, and argues that there is a fundamental difference between art and science, and that this difference refers exactly to the meaning of a piece of work. Science is concerned with meaning (and not with form), and in its quest for truth and/or understanding, science follows philosophy (and not art). The author holds the opinion that the most important aspects of a scientific work are the intuitive question that it addresses, the reason that it addresses this question, the way it phrases the question, the approach that underlies its answer, and the ideas that are embedded in the answer. Following this view, it is important to communicate these aspects of the work.
The foregoing issues are even more acute when it comes to Complexity Theory, firstly because conceptual considerations seem to play an even more central role in Complexity Theory than in other scientific fields. Secondly (and even more importantly), Complexity Theory is extremely rich in conceptual content. Thus, communicating this content is of primary importance, and failing to do so misses the most important aspects of Complexity Theory.
Overview: We assume that the reader is familiar with computing devices but may associate the notion of computation with specific incarnations of it. Our first goal is to promote viewing computation as a general phenomenon, which may capture both artificial and natural processes. Loosely speaking, a computation is a process that modifies a relatively large environment via repeated applications of a simple and predetermined rule. Although each application of the rule has a very limited effect, the effect of many applications of the rule may be very complex.
We are interested in the transformation of the environment effected by the computational process (or computation), where the computation rule is designed to achieve a desired effect. Typically, the initial environment to which the computation is applied encodes an input string, and the end environment (i.e., at termination of the computation) encodes an output string. Thus, the computation defines a mapping from inputs to outputs, and such amapping can be viewed as solving a search problem (i.e., given an instance x find a solution y that relates to x in some predetermined way) or a decision problem (i.e., given an instance x determine whether or not x has some predetermined property).
Indeed, our focus will be on solving computational tasks (mostly search and decision problems), where a computational task refers to an infinite set of instances such that each instance is associated with a set of valid solutions.