160 likes | 383 Views
Limits to Computation. How do you analyze a new algorithm? Put it in the form of existing algorithms that you know the analysis. For example, given 2 arrays, pair the smallest in each array, the next smallest, etc. Can be done by sorting each array and pairing first, second, etc.
E N D
Limits to Computation • How do you analyze a new algorithm? • Put it in the form of existing algorithms that you know the analysis. • For example, given 2 arrays, pair the smallest in each array, the next smallest, etc. • Can be done by sorting each array and pairing first, second, etc. • No worse than O(n log n).
Algorithm Reduction • But is is possible to do pairings faster than O(n log n)? • Look at using pairings for sorting (without using sorting) • The second item of the paired results from pairing will tell us the position of the first item when it is sorted. • If we had a pairing algorithm that was faster than n log n, then we could take an arbitrary array, use an array of the integers 1,.., n • So if there is a pairing algorithm of O(n) we can do sorting in O(n). There is a proof that this cannot be done. So pairing must take at least O(n log n).
Hard Problems • A hard problem is a problem whose best know algorithm to solve it takes exponential time. • A “Hard” Algorithm is a problem that runs in exponential time. • It takes (cn) for some c>1, where n is the problem size.
NP Problems • Assume you have a computer that finds solutions by “guessing” the answer and checks to see if that answer is correct. • Could be a super parallel computer that can test all possible solutions simultaneously. • If the answer cannot be checked in polynomial time (such as the towers of Hanoi), it is not an NP problem.
NP - Completeness • The algorithm using guessing is a nondeterministic algorithm. • Hence NP : Nondeterministic polynomial. • Some NP problems do not have known efficient deterministic solutions. • Every problem in this set reduces to every other problem in this set. • If can solve one in polynomial time, can solve them all in polynomial time.
NP- Complete Problems • Traveling Salesman • K-Clique : given an arbitrary undirected graph, is there a complete subgraph of at least k vertices.
Why know about NP-complete • If the best algorithm you can find for your problem is exponential then you may try to find a reduction into a problem that is NP-complete. • If you can, then you have shown that whereas your solution has not been shown to be the best, it is very difficult (and maybe impossible) to find a polynomial algorithm.
Heuristic • What to do when you must find a solution to an NP-complete problem? • Solve small problems • Solve special cases • Find an approximate solution; one that is good, but not necessarily the best. (I.e., find a short path for the traveling salesman, not necessarily the shortest). • Go the to next closest city.
Impossible Problems • The halting problem : given an arbitrary program P and the data D, determine (in finite time) if the program P will halt on data D. • Can prove that such a program cannot be written
Halting Problem Proof • Assume you have a halting program • bool halt(P,D); • Write a new program • bool selfhalt(P), calls halt(P, P) • This program will tell if the program P will halt when the input is the program P • P is restricted to programs that take programs as data
Final Step • Now write a function : • bool contrary(P){if selfhalt(P) while(TRUE);} • What happens when we do • contrary(contrary)? • Either contrary • 1. Halts, but then it does not halt • 2. Does not halt, but then it halts. • Contradiction; so cannot write halt.