In this chapter we expand more broadly on the idea of using a subroutine for one problem in order to efficiently solve another problem. By doing so, we make precise the notion that the complexity of a problem B is related to the complexity of A—that there is an algorithm to efficiently accept B relative to an algorithm to efficiently decide A. As in Section 3.9, this should mean that an acceptor for B can be written as a program that contains subroutine calls of the form “x ∈ A,” which returns True if the Boolean test is true and returns False otherwise. Recall that the algorithm for accepting B is called a reduction procedure and the set A is called an oracle. The reduction procedure is polynomial time-bounded if the algorithm runs in polynomial time when we stipulate that only one unit of time is to be charged for the execution of each subroutine call. Placing faith in our modified Church’s thesis and in Cobham’s thesis, these ideas, once again, are made precise via the oracle Turing machine.
KeywordsPolynomial Time Turing Machine Vertex Cover Boolean Formula Complete Problem
Unable to display preview. Download preview PDF.