Proofs by reduction are a fundamental technique in computational complexity theory used to establish the undecidability of a problem. This technique involves transforming an instance of a known undecidable problem into an instance of the problem under investigation, thereby demonstrating that the problem under investigation is also undecidable. The general logic behind proofs by reduction lies in the concept of reducibility, which allows us to map instances of one problem to instances of another problem in a way that preserves the solution.
To understand how proofs by reduction work, it is essential to grasp the notion of decidability. In computational complexity theory, a problem is said to be decidable if there exists an algorithm that can determine the correct answer for every instance of the problem. Conversely, a problem is undecidable if there is no algorithm that can always provide the correct answer for every instance of the problem.
In the context of proofs by reduction, we start with a known undecidable problem, denoted as problem A. We then aim to show that another problem, denoted as problem B, is also undecidable. To do this, we assume that problem B is decidable and construct a reduction from problem A to problem B. This reduction maps instances of problem A to instances of problem B in such a way that the solution to problem A can be determined by examining the solution to problem B.
The reduction is typically achieved by constructing a computable function, called a reduction function, that transforms instances of problem A into instances of problem B. The reduction function should satisfy two key properties:
1. Correctness: The reduction function should preserve the solution. That is, if an instance of problem A has a positive (or negative) answer, the corresponding instance of problem B should also have a positive (or negative) answer.
2. Computability: The reduction function should be computable, meaning that it can be implemented by an algorithm that halts for every input.
By assuming the decidability of problem B and constructing a reduction from problem A to problem B, we obtain a contradiction. If problem B were decidable, then problem A would also be decidable, which contradicts the initial assumption that problem A is undecidable. Therefore, we conclude that problem B must also be undecidable.
To illustrate this technique, let's consider the famous example of the halting problem, which is known to be undecidable. Suppose we want to prove the undecidability of problem C. We assume that problem C is decidable and construct a reduction from the halting problem (problem A) to problem C (problem B). We define a reduction function that takes as input a Turing machine M and an input string w and constructs an instance of problem C.
The reduction function works as follows: Given M and w, it simulates the execution of M on w. If M halts on w, the reduction function constructs an instance of problem C that has a positive answer. If M does not halt on w, the reduction function constructs an instance of problem C that has a negative answer.
By assuming the decidability of problem C and constructing a reduction from the halting problem to problem C, we obtain a contradiction. Since the halting problem is known to be undecidable, we conclude that problem C must also be undecidable.
Proofs by reduction in computational complexity theory are based on the concept of reducibility. By assuming the decidability of a problem and constructing a reduction from a known undecidable problem, we can demonstrate that the problem under investigation is also undecidable.
Other recent questions and answers regarding Examination review:
- Give an example of how reduction can be used to solve a complex problem by reducing it to an easier problem.
- How does the technique of reduction work in the context of proving undecidability?
- Explain the concept of reducibility and its role in proving undecidability.
- What is the technique used to prove the undecidability of certain problems in the field of cybersecurity?

