Abstract

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. […]

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call