Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Hedman. A First Course in Logic, 2004 (Oxford)

.pdf
Скачиваний:
139
Добавлен:
10.08.2013
Размер:
7.17 Mб
Скачать

330 Computability and complexity

Proof First, we show that recursive implies recursively enumerable. Let g(x) be any recursive function having 1 in its domain, but not 0. If A is a recursive set, then the composition g(χA(x)) is a recursive function. This function

has domain A. By the

previous proposition,

A is recursively enumerable.

 

¯

¯

Moreover, if A is recursive, then so is A, whence both A and A are recursively

enumerable.

¯

 

 

 

Conversely, suppose that both A and A are recursively enumerable. Then

1

¯

1

A is the domain of ϕe(x) and A is the domain of ϕd(x) for some e and d. Let

f (x) = usn(pf (e, line(e, x, n)) · pf (d, line(e, x, n))). That is f (x) is the number of steps it takes for either Pe or Pd to halt on input x. Since each x is either in

¯

A or A, the function f (x) is total.

We have χA(x) = 1 − pf (e, line(e, x, f (x)). Since this function is recursive, so is the set A.

We next state without proof a most remarkable characterization of the recursively enumerable sets.

Definition 7.45 A set A of non-negative integers is said to be Diophantine if there exists a polynomial p(x, y1, . . . , yn) having integer coe cients such that A = {x| there exist non-negative integers a1, . . . ,an such that p(x, a1, . . . , an) = 0}.

Theorem 7.46 (Matiyasevich) A set is recursively enumerable if and only if it is Diophantine.

Prior to its proof, this theorem was known as Davis’ conjecture. Yuri Matiyasevich proved this theorem in 1970 following the work on this conjecture by Martin Davis, Hilary Putnam, and Julia Robinson. To understand why this theorem is remarkable, let us consider some examples of Diophantine sets:

The set of even numbers is Diophantine (let p(x, y) = x − 2y).

The set of perfect squares is Diophantine (let p(x, y) = x − y2).

The set of composite numbers (numbers that are not prime) is Diophantine (let p(x, y1, y2) = x − (y1 + 2)(y2 + 2)).

It is far more di cult to show that the following sets are Diophantine:

The set {2, 4, 8, 16, 32, . . .} of powers of 2.

The set of prime numbers.

The set of palindromes {1221, 343, 11, 82628, 1010101, 8, 747, . . .}.

Computability and complexity

331

There is no obvious polynomial p(x, y1, . . . , yn) that works for any of these three sets. Prior to Matiyasevich’s proof, the question of whether or not these sets are Diophantine was an open question. In particular, Alfred Tarski posed the question of whether or not the powers of 2 form a Diophantine set. Matiyasevich’s theorem answers this and many other questions in the a rmative. Since the function f (n) = 2n is easily shown to be primitive recursive, the range of this function is recursively enumerable and, therefore, Diophantine. Likewise, since the prime numbers form a primitive recursive set, this set, too, is Diophantine. A number written in base 10 is a palindrome if it represents the same number when written backwards. It is not di cult to show that this set is recursive. By Matiyasevich’s theorem the set of palindromes and countless other sets are necessarily Diophantine.

Matiyasevich’s theorem equates the number theoretic concept of Diophantine set with the concept of a computability generated set. In proving this theorem, Matiyasevich showed that the class of Diophantine sets is far more extensive than its definition suggests. This theorem also resolved a famous open problem of mathematics known as Hilbert’s 10th Problem. This is one of the 23 problems selected by David Hilbert as the most important mathematical problems at the turn of the twentieth century. The 10th problem is one of the more succinctly stated of Hilbert’s problems:

Hilbert’s 10th Problem Given a Diophantine equation with any number of unknown quantities and with rational integral numerical coe cients: to devise a process according to which it can be determined by a finite number of operations whether the equation is solvable in rational integers.

There is no loss of generality in replacing the “rational integers” in this problem with integers. Phrased this way, the problem is to find a method for determining whether p(x1, . . . , xn) = 0 has integer solutions where px) is a given polynomial having integer coe cients. As stated, the problem is not to determine whether such a process exists, but rather to find such a process. The implied optimism of this statement underestimates the complexity of the integers and reflects misconceptions that were commonly held at the time. These misconceptions were dispelled by G¨odel’s Incompleteness theorems that are the subject of our next chapter. The First Incompleteness theorem shows that the integers are extraordinarily complex in the following sense: the first-order theory of the natural numbers (in a vocabulary containing both multiplication and addition) is undecidable.

The subject of computability began with G¨odel’s results and the work of Kleene, Post, Turing, and others that followed. This subject made Hilbert’s 10th Problem precise by providing a formal definition for the “process” described in

332

Computability and complexity

the problem. It became apparent that Hilbert’s 10th Problem may be unsolvable. This idea motivated the work of Davis, Putnam, Robinson, and others that culminated in Matiyasevich’s theorem. Matiyasevich’s theorem resolves Hilbert’s 10th Problem by showing that an algorithmic process as described in the problem cannot exist. This follows from Matiyasevich’s theorem because there exist well known recursively enumerable sets that are not computable. These sets are the topic of the next section. For more on Matiyasevich’s theorem, the reader is referred to Matiyasevich’s book [31].

7.6 Undecidable decision problems

In this section, we view some sets that lie beyond the brink of computability.

7.6.1 Nonrecursive sets. Let Wi be the domain of the function ϕ1e(x). By Proposition 7.43, the list

W0, W1, W2, W3, W4, . . . .

includes every recursively enumerable set. Let J = {x | x Wx}. If this set is recursively enumerable, then J = We for some e. But then we have e We if and only if e We (by the definition of J). This is contradictory. We conclude that J must be di erent from We for each e and so J is not recursively enumerable. It follows that the characteristic function of J, although it is a well-defined function, is not computable.

Now consider the set K = {x | x Wx}.

Proposition 7.47 K is recursively enumerable, but not recursive.

Proof If K is recursive, then so is the complement of K in the non-negative integers. The complement of K is J. Since, J is not recursive, neither is K. Moreover, K is recursively enumerable since it is the range of the function U2(x, x) from Proposition 7.36.

Let H1 be the set of ordered pairs (e, x) such that x We. That is, (e, x) is in H1 if and only if x is in the domain of the function ϕ1e computed by the program Pe. To determine whether or not a given pair (e, x) is in H1 is to determine whether or not the program Pe halts given input x. Likewise, we define Hk as the set of (k + 1)-tuples (e, x¯) such that Pe halts given input x¯. Let H = {e |(e, 0) H1}. To determine whether or not e is in H is to determine

Computability and complexity

333

whether or not Pe halts on input 0. This decision problem is known as the Halting Problem. The problem corresponding to Hk is the Halting Problem on k-tuples. These problems are undecidable.

Proposition 7.48 H is not recursive.

Proof We first show that H1 is not recursive. Note that K = {x |(x, x) H1}. If we could determine whether or not a given pair is in H1, then we could determine whether or not a given element is in K. Since K is not recursive, neither is H1.

We now show that H is not recursive. Given program Pe and input x, let Pd be the program obtained by adding as a prefix x copies of the command Add B1 to the program Pe. Running Pd with input 0 has the same outcome as running Pe with input x. So d H if and only if (e, x) H1. Since H1 is not recursive, neither is H.

We have now demonstrated that J, K, and H are three examples of nonrecursive sets. We have also demonstrated our primary tool for showing that a given set is not recursive. To show that K is not recursive, we reduced K to J. That is, we showed that if K is recursive, then so is J. Similarly, we reduced H to K (by way of H1).

Definition 7.49 Let A and B be two sets of non-negative integers. We say that A is recursively reducible to B, denoted A ≤r B, if there exists a recursive unary function f such that x A if and only if f (x) B.

Proposition 7.50 If B is recursive and A ≤r B, then A is also recursive.

Proof If A ≤r B, then x A if and only if f (x) B for some recursive function f . It follows that the characteristic function of A is the composition χB (f (x)).

Conversely, if A ≤r B and A is not recursive, then B is not recursive. We exploit this fact to provide many examples of nonrecursive sets. The set J is not recursive by its definition. Each of the other nonrecursive sets we define can be reduced to J. Rather than considering each set one-by-one, we prove Rice’s theorem. This theorem provides a plethora of nonrecursive sets. Rice’s theorem states that any nontrivial index set is not recursive.

Definition 7.51 A set of non-negative integers A is said to be an index set if the following holds. If x A and ϕ1x $ ϕ1y, then y A.

For example, both J and K are index sets (they are defined in terms of the indices i of the sets Wi). Likewise, the set of all x such that Wx contains the number 5 is an index set. For a nonexample, consider the set

GOTO 12 = {x : Px is the program (1) GOTO 12 }.

334

Computability and complexity

Recall that, by default, any number such as 42 that does not code a T ++ program is in this set. Let y be the code for the program (1) GOTO 23. Then ϕ1y, like ϕ142, is the identity function. But whereas 42 GOT O 12, y GOT O 12. So this set is not an index set. Note that this set is primitive recursive and, therefore, decidable. The following theorem states that this is not the case for any nontrivial index set.

Theorem 7.52 (Rice) Let A be an index set. If A is neither nor N {0}, then A is not recursive.

Proof Let A be a proper subset of N{0}. Let c be the code for the program:

(1)Add 1

(2)RmvP 1.

Since this program never halts ϕ1c (x) is undefined for all x.

Claim If c A, then K ≤r ¯

.

A

Proof By Proposition 7.47, K is recursively enumerable. It follows that the following function is recursive:

1

x K

hK (x) = undefined

otherwise.

¯

 

Since A is not N, there exists e A.

 

Since hK (x) is recursive, so is the function

ϕe(y)

hK (x) = 1

g(x, y) = undefined

otherwise.

By Lemma 7.37, there exists a recursive function f (x) such that, for each x, ϕf(x)(y) $ g(x, y).

Note that if x K, then ϕf(x)(y) $ ϕe. Otherwise, ϕf(x) $ ϕc. Since A is

 

 

¯

an index set and c A and e A, we have x K if and only if f (x) A. So

¯

¯

¯

K ≤r A as claimed.

So if c A, then A is not recursive by the claim. If A is not recursive, then

¯

neither is A. If c A, then applying the claim to A yields K r A. Either way, A is not recursive.

1 if it has the form x, y) for some ∆0

Computability and complexity

335

Rice’s theorem provides an uncountable supply of nonrecursive sets. For example, consider the following:

ID = {x | ϕ1x is the identity function }

SQU ARE = {x | ϕ1x(y) $ y2}

F IN = {x | Wx is finite}

IN F = {x | Wx is infinite}

COF = {x | Wx is co-infinite}

T OT = {x : ϕx is total}

REC = {x : Wx is recursive}.

Since each of these is a nontrivial index set, each is nonrecursive by Rice’s theorem. In fact, none of these sets is recursively enumerable. Whereas each of these sets is recursively reducible to K (and, therefore, to J as well), K is not reducible to any of these sets. In this sense, each of the above sets is more complicated than K.

The notion of recursive reducibility, as the notation r suggests, imposes an order on the subsets of N {0}. Each set is ranked in a hierarchy according to this order. For example, IN F ≤r COF (Exercise 7.25). Intuitively, this means that the decision problem corresponding to COF is at least as di cult as the decision problem for IN F . If we had some way of determining whether or not a given number is in COF (which we do not), then we could use this procedure to determine whether or not a given number is in IN F . Since both of these problems are undecidable, this may seem like hairsplitting. There are two reasons that we consider the hierarchy of undecidable decision problems. One reason is that it serves as a precursor to the classification of decidable decision problems that is the topic of the final two sections of this chapter. Another reason is that this hierarchy relates concepts from computability to the first-order logic of the previous chapters.

7.6.2 The arithmetic hierarchy. The definable subsets of N0 are called arithmetic sets. The arithmetic hierarchy is the classification of these sets according to the syntax of the formulas that define the set. Recall the definition of a ∆0 formula from Section 7.2.

Definition 7.53 A Var-formula is said to be Π1 if it has the form x, y) for

some ∆0 formula ϕx, y).

A Var-formula is said to be formula ϕx, y).

336

 

 

Computability and complexity

 

 

 

 

 

An arithmetic set is said to be Π1 if there exists a Π1 formula that defines

the set. The

1 sets are defined analogously.

 

 

 

 

 

 

 

At the

bottom of the arithmetic hierarchy we have the primitive recursive

 

 

 

 

 

 

 

 

 

 

 

 

1

 

sets. These are precisely the sets definable by ∆

0

formulas.

The

sets

correspond to recursively enumerable sets.

 

 

 

 

 

Proposition 7.54 If a set is

, then it is recursively enumerable.

 

}

where ϕ(x, y) is ∆0. By

 

 

 

 

 

 

 

{

|

0 |

 

Proof Suppose that A is

.1 Let

 

(x, y) be a

Var

-formula that defines A,

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

Proposition 7.28, the set B =

 

(x, y) N = ϕ(x, y) is

primitive recursive. Let f (x) = usy(1 − χB (x, y)). Then f is a recursive function having domain A and A is recursively enumerable.

Corollary 7.55 If a set is both

 

1 and Π1, then it is recursive.

 

 

Proof The negation of a Π

formula is a

 

formula. The corollary follows from

 

 

 

1

Propositions 7.44 and 7.54.1

 

 

 

 

 

 

 

The converses of these statements also hold. The

1 sets are precisely the

recursively enumerable sets and the recursive sets are

those in both

 

and Π .

 

1

1

This is proved as Corollary 8.15 of the next chapter.

 

 

 

Likewise, we classify every definable subset of N0.

Definition 7.56 Let n be a natural number.

A Var-formula is said to be Πn+1 if it has the form x, y) for some ∆n

 

formula ϕx, y).

 

 

 

 

A Var-formula is said to be

n+1 if it has the form x, y) for some ∆n

formula ϕx, y).

 

 

 

 

A Var-formula is said to be ∆n+1

if it both a Πn+1 formula and a

n+1

formula.

 

 

 

 

An arithmetic set A is said to be Π

n, n, or ∆n according to the formulas that

define A.

 

Note that every Πn set is n+1 and every n set is Πn+1 for each n N. Since each first-order formula is equivalent to a formula in prenex normal form, the arithmetic hierarchy includes every arithmetic set. Moreover, there exist arithmetic sets at each of the denumerably many levels of the hierarchy. For

each n N, there exist sets that are

n but not Πn and vice versa. This is the

Hierarchy theorem. We leave the

proof of this as Exercises 7.29 and 7.30.

 

 

In this section, not only have we demonstrated examples of nonrecursive sets, but we have also presented a vast hierarchy of such sets. Each of these sets corresponds to both an undecidable decision problem and a noncomputable function (namely, its characteristic function). Based on the results of Section 2.5, we made the initial observation that, since there are uncountably many sets

Computability and complexity

337

and countably many recursive sets, most sets are not recursive. Likewise, most decision problems are not decidable and most functions are not computable. In this section, we have shown more than this. We have shown that, even among the countably many definable subsets of N0, the recursive sets are the exceptions and not the rule. Just as viewing the heavens puts earth into perspective, viewing the plethora of nonrecursive sets puts the recursive sets and decidable decision problems into proper perspective. We now return to earth and consider decidable decision problems. For those who would like to pursue the study of nonrecursive sets further, [48] is recommended.

7.7 Decidable decision problems

The previous sections of this chapter have concerned the distinction between decision problems that are decidable and those that are not. We now focus on the distinction between those problems that are decidable and those that are really decidable. By definition, a decision problem is decidable if it can be resolved by some algorithm. There is nothing in this definition that requires the algorithm to be practical. A decision problem is said to be feasible if it can be resolved by an algorithm using a reasonable amount of time and space. This is an intuitive notion that will not be precisely defined. This notion depends not only on our perception of “reasonable,” but also on our technological capabilities. Algorithms that are not feasible today may become feasible with quantum computers or other potential technologies of the future.

Rather than considering the vague notion of feasibility, we focus on precisely defined complexity classes. In particular, we consider the class of polynomialtime decision problems P and the class of nondeterministic polynomial-time problems NP that contains P. The class P was defined in the Preliminaries prior to Chapter 1. We repeat the definition.

Definition 7.57 An algorithm is polynomial-time if there exists a k N such that, given any input of length n > 2, the algorithm halts in fewer than nk steps. A decision problem is polynomial-time if it can be decided by a polynomial-time algorithm. The set of polynomial-time decision problems is denoted P.

If a decision problem is not in P, then it is certainly not feasible. The converse is not true. If an algorithm halts in fewer than n1,000,000 steps (given input of length n), then it is polynomial-time but not necessarily feasible. So the set of polynomial-time algorithms contains the set of feasible algorithms as a proper subset.

To make the above definition of polynomial-time precise, we must specify both how the “length” of the input is to be measured and what constitutes a “step” of an algorithm. The length of the input is the number of digits. For example, the length of 8427 is 4. The length of the ordered triple (17, 8, 109) is 6.

338

Computability and complexity

More generally, the length of a natural number x is "log(x)# + 1, where "log(x)# denotes the greatest integer less than log(x). The length of zero is 1. The length of a k-tuple of numbers is the sum of each of the k lengths. We assume that numbers are presented in the usual base 10 notation, in which case log is the common base 10 logarithm.

To define a “step” of an algorithm, we must first define the notion of an algorithm. We provide this definition in the second part of this section. The formal definition of an algorithm yields natural measures of computational time and space. In addition to the class of polynomial-time decision problems P, we also define the classes of polynomial-space (PSPACE) and logarithmic space (L). In the third and final part of this section, we define the notion of a nondeterministic algorithm and make precise the class NP. We discuss the relationship between these various complexity classes. We begin with some examples.

7.7.1 Examples. We present several examples of decidable decision problems. For each problem, we informally describe an algorithm (using either English prose or pseudo-code) to verify that the problem is decidable. For some problems, we also provide (again, informally) a nondeterministic algorithm. An algorithm is a step-by-step procedure. At any stage of the algorithm, the next step is completely determined. In contrast, a nondeterministic algorithm may have more than one possible “next step” at a given stage. Essentially, in a nondeterministic algorithm, we are allowed to guess. One purpose of this subsection is to illustrate the complexity classes P, NP, and coNP. The “N” in NP and coNP indicates that these classes are defined in terms of nondeterministic algorithms. Both NP and coNP contain P as a subset.

Although we have not yet defined a “step” of an algorithm, we can verify that certain problems are in P. We use the fact that any feasible algorithm is polynomial-time. So tasks such as multiplying or dividing numbers that are clearly feasible must be polynomial-time. We assume that if the input has length n, then it can be read in at most n steps. So, in polynomial-time, we can repeatedly read the input 1000 times, n times, or 3n5 times, but not 2n times. We also use the fortunate fact that the composition of polynomials is again a polynomial. If we write an algorithm that uses a certain polynomialtime algorithm as a subroutine a polynomial number of times, then the resulting algorithm, too, is polynomial-time.

For future reference, each decision problem is given a short name. To avoid ambiguity, this name shall be written in capital letters.

The evens problem (EVENS)

The evens problem corresponds to the set of even natural numbers. Since we can determine whether or not a given number is even merely by looking at its

Computability and complexity

339

last digit, EVENS is not only decidable, it is feasible. In contrast, consider the problem PRIMES of determining whether or not a given natural number is prime.

The primes problem (PRIMES)

The prime problem corresponds to the set of prime numbers. Since this set is primitive recursive, we know that PRIMES, like the EVENS, is decidable. The following algorithm, written in pseudo-code, resolves this problem:

Given: natural number n

if n = 1 then output “not prime” and halt

if n = 2 then output “prime” and halt

else for k = 2, . . . ,n1 do:

divide n by k

if remainder is 0 then output “not prime” and halt

end for

output “prime”

halt

This algorithm outputs “prime” if and only if the input is a prime number.

Given input n, the algorithm checks each k between 1 and n to see if k divides n.

√ √

In fact, we only need to check this for k between 1 and n (if n = a · b and a > n,

then b < n). This observation o ers a more e cient algorithm. Now, suppose we actually want to use this algorithm to determine whether or not a given

number n is prime. If n is a three-digit number, then 100 ≤ n ≤ 999. To execute

our algorithm, we must divide n by at most 32 numbers (since 32 > 999). We can easily do this on a computer. But suppose n is 23 digits long. Then n is

between 1022 1 and 1023. If n happens to be prime, then it will take at least

1022 computations for the algorithm to arrive at the output “prime.” If your computer can do this, then take a prime number 45 digits long. The algorithm will take 1022 steps. Compared to the length of the input, the algorithm takes exponentially long. This algorithm is not polynomial-time.

The composites problem (COMP)

A natural number n is composite if n = a · b for natural numbers a and b both smaller than n. Put another way n is composite if it is neither 1 nor prime. So the above algorithm for P RIM ES can be altered slightly to produce an algorithm