1 / 11

Limits to Computation

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.

hiero
Download Presentation

Limits to Computation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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).

  2. 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).

  3. 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.

  4. 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.

  5. 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.

  6. NP- Complete Problems • Traveling Salesman • K-Clique : given an arbitrary undirected graph, is there a complete subgraph of at least k vertices.

  7. 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.

  8. 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.

  9. 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

  10. 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

  11. 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.

More Related