Theory of Computing Lecture 16 MAS 714 Hartmut Klauck
Problems that are not in P EXP: class of all L that can be decided by Turing machines that run in time at most exp(p(n)) for some polynomial p We will show later that EXP is not equal to P – i.e., there are problems that can be solved in exponential time, but not in polynomial time – These problems tend to be less interesting
Problems that are not in P? Definition: – Given an undirected graph, a clique is a set of vertices S µ V, such that all u,v 2 S are connected – The language MaxClique is the set of all G,k, such that G has a clique of size k (or more) Simple Algorithm: enumerate all subsets of size k, test if they form a clique Time O(n k ¢ poly(k)) Since k is not constant this is not a polynomial time algorithm
Clique MaxClique is in P if and only if thousands of other interesting problems are We don’t know an efficient algorithm for any of them Widely believed: there is no such algorithm
Fun Piece of Information A random graph is a graph generated by putting each possible edge into G with probability ½ The largest clique in G has size d r(n) e or b r(n) c for an explicit r(n) that is around (2+o(1)) log(n) With probability approaching 1 Hence on random graphs the max clique can be found in sub-exponential time
The class NP NP: nondeterministic polynomial time NP is the class of problems where a `solution’ or proof can be verified in polynomial time Example: Given a set S of k vertices in G we can check in time O(k 2 ) if S is a clique
NP Guess and check definition: A language L is in NP, if there is a language R 2 P such that for all x: [There is a poly(|x|) length string y s.t. x#y 2 R], x 2 L y is called proof or witness
Example Max Flow: – Given a flow we can check that the flow is maximal in linear time – But then we can find the max flow in polynomial time anyway Clique: – We can check a clique easily – Don’t know how to find a maximum clique fast
Example Non-Primality: – Given a natural number x, is it NOT a prime? – Any a,b such that ab=x prove that x is no prime as long as a,b are not 1 How can we find a,b? – It is not known how to factor numbers efficiently Note: Checking primality/non-primality is even known to be in P (but not easy to see this)
Original definition of NP Definition: A nondeterministic Turing machine is defined like a Turing machine, but the transition function can now map to several successors – I.e., ± (q,a) is a subset of Q £ ¡ £ {left,stay,right} Interpretation: on input x there are many computations of the machine – At each step the computation can branch out – The machine accepts if there is at least one accepting computation/branch – The machine `guesses’ a good computation
Nondeterministic TM The language L M accepted by a nondeterministic TM is the set of inputs x for which there is an accepting computation of M on x A language L µ ¡ * is accepted by a nondeterministic TM M if L M =L
Time The time used by an NTM M on x is the minimum number of steps M performs on x during any accepting computation on x – Time on inputs x not in L is not defined Time complexity of M: as before Nondeterministic time complexity of L upper bounded by g(n): as before
NP Definition: NP is the set of languages that are accepted by some nondeterministic Turing machine with polynomial time complexity Note: Both definitions [guess and check/NTM] are equivalent
Notes on NP Nondeterministic Turing machines are not a realistic model of computation They are interesting because NP contains many interesting problems Furthermore they formalize proof systems – NP is the set of languages L for which the statement x 2 L can be verified efficiently – I.e., there is a powerful prover P, while the verifier V is a polynomial time Turing machine. The prover provides a proof y – x 2 L iff there is a proof y such that x#y is accepted by V
P vs. NP P µ NP by definition Are there problems in NP that are not in P? 10 6 dollar reward from the Clay Math Institute Most researchers believe P NP There is a large class of problems in NP that are believed to be hard – NP-complete problems
P, NP, EXP P is a subset of NP by definition NP is a subset of EXP: – Use guess and check definition – Enumerate all witnesses y and check – Time: There are exp(poly(n)) many witnesses. Checking each is time poly(n)
NP Completeness We will identify a class of problems that capture the hardness of NP P=NP if and only if one of these problems is in P – None are known to be in P These are the problems L in NP, such that every problem in NP can be solved by a deterministic polynomial time TM given a free subroutine that solves L
NP Completeness Informally, L reduces to S, if, given an `oracle’ that decides S for free, we can compute L in polynomial time (deterministically) NP-complete: L is in NP and all S in NP reduce to L (in polynomial time) – This means L is hardest in NP
Coping with hard problems Suppose we try to find an algorithm for a problem Maybe it is NP-complete? – Reduce some known NP-complete problem to it – Then we know it’s hopeless If so, we can try – approximation – heuristics Don’t have to waste our time searching for an algorithm that (probably) does not exist