07.01.2013 Views

Dietzfelbinger M. Primality testing in polynomial time ... - tiera.ru

Dietzfelbinger M. Primality testing in polynomial time ... - tiera.ru

Dietzfelbinger M. Primality testing in polynomial time ... - tiera.ru

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6 1. Introduction: Efficient <strong>Primality</strong> Test<strong>in</strong>g<br />

to situations where the length of the numbers that can be treated is already<br />

severely restricted — with (log n) 9 operations we may deal with one 7-digit<br />

number <strong>in</strong> 1 second; treat<strong>in</strong>g a s<strong>in</strong>gle 50-digit number takes years. Bounds<br />

f7(log n) =(logn) 2lnlnn , f8(log n) =c · 2 √ log n ,andf9(log n) =c √ n exceed<br />

any <strong>polynomial</strong> <strong>in</strong> log n for sufficiently large n. For numbers with small b<strong>in</strong>ary<br />

length log n, however, some of these super<strong>polynomial</strong> bounds may still be<br />

smaller than high-degree <strong>polynomial</strong> bounds, as the comparison between f6,<br />

f7, andf8 shows. In particular, note that for log n = 180,000 (correspond<strong>in</strong>g<br />

to a 60,000-digit number) we have 2 ln ln(log n) < 5, so f7(log n) < (log n) 5 .<br />

The bound f9(log n) =c √ n, which belongs to the trial division method,<br />

is extremely bad; only very short <strong>in</strong>puts can be treated.<br />

Summ<strong>in</strong>g up, we see that algorithms with a <strong>polynomial</strong> bound with a t<strong>ru</strong>ly<br />

small exponent are useful even for larger numbers. Algorithms with <strong>polynomial</strong><br />

<strong>time</strong> bounds with larger exponents may become impossible to carry out<br />

even for moderately large numbers. If the <strong>time</strong> bound is super<strong>polynomial</strong>,<br />

treat<strong>in</strong>g really large <strong>in</strong>puts is usually out of the question. From a theoretical<br />

perspective, it has turned out to be useful to draw a l<strong>in</strong>e between computational<br />

problems that admit algorithms with a <strong>polynomial</strong> operation bound<br />

and problems that do not have such algorithms, s<strong>in</strong>ce for large enough n,<br />

every <strong>polynomial</strong> bound will be smaller than every super<strong>polynomial</strong> bound.<br />

This is why the class P, to be discussed next, is of such prom<strong>in</strong>ent importance<br />

<strong>in</strong> computational complexity theory.<br />

1.3 Is PRIMES <strong>in</strong> P?<br />

In order to formulate what exactly the question “Is PRIMES <strong>in</strong> P?” means,<br />

we must sketch some concepts from computational complexity theory. Traditionally,<br />

the objects of study of complexity theory are “languages” and<br />

“functions”. A nonempty f<strong>in</strong>ite set Σ is regarded as an alphabet, andone<br />

considers the set Σ ∗ of all f<strong>in</strong>ite sequences or words over Σ.Themostimportant<br />

alphabet is the b<strong>in</strong>ary alphabet {0, 1}, whereΣ ∗ comprises the words<br />

ε (the empty word), 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101,... .<br />

Note that natural numbers can be represented as b<strong>in</strong>ary words, e.g., by means<br />

of the b<strong>in</strong>ary representation: b<strong>in</strong>(n) denotes the b<strong>in</strong>ary representation of n.<br />

Now decision problems for numbers can be expressed as sets of words over<br />

{0, 1}, e.g.<br />

SQUARE = {b<strong>in</strong>(n) | n ≥ 0isasquare}<br />

= {0, 1, 100, 1001, 10000, 11001, 100100, 110001, 1000000,...}<br />

codes the problem “Given n, decide whether n is a square of some number”,<br />

while

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!