180 likes | 196 Views
Chapter 1: Introduction. What is the course all about? Problems, Instances and Algorithms Running Time v.s. Computational Complexity. What is this Course About?. Particular Topics: NP-completeness NP-hardness Heuristics PSPACE-completeness The polynomial hierarchy, etc. Generally:
E N D
Chapter 1: Introduction • What is the course all about? • Problems, Instances and Algorithms • Running Time v.s. Computational Complexity
What is this Course About? • Particular Topics: • NP-completeness • NP-hardness • Heuristics • PSPACE-completeness • The polynomial hierarchy, etc. • Generally: • Computational complexity • Intractability “The inherent computational complexity of problems”
Problems, Instances and Algorithms • A problem is a general question to be answered that consists of: • Some number of parameters • A statement of what properties a solution possesses • A problem instance is a collection of specific values for all of a problems parameters. • An algorithm is a general, step-by-step procedure for solving a specific problem, e.g., a computer program. • An algorithm is said to solve a problem if that algorithm can be applied to any instance of the problem and is guaranteed to always produce a solution for that instance.
The Traveling Salesman Problem (TSP) TRAVELING SALEMSAN INSTANCE: Set C of m cities, distance d(ci, cj) Z+ for each pair of cities ci, cj C positive integer B. QUESTION: Is there a tour of C having length B or less, I.e., a permutation <c(1) , c(2),…, c(m)> of C such that: *See the books appendix for a list of over 300 well know/studies problems.
TSP Instance C = {c1, c2, c3, c4} D(c1,c2) = 10 D(c1,c3) = 5 D(c1,c4) = 9 D(c2,c3) = 6 D(c2,c4) = 9 D(c3,c4) = 3 B = 27 • Let denote a problem. Then the parameters for define a “space” (or collection) of instances referred to as D.
Running Time v.s. Complexity • We will distinguish between the running time of a specific algorithms v.s. the computational complexity of a particular problem. • Example: Matrix Multiplication INSTANCE: Two n x n matrices A and B SOLUTION: One n x n matrix C = A x B • Running times of specific algorithms: • Simple row/column algorithm - O(n3) • Strassen’s algorithm - O(n2.81) • Somebody else’s algorithm - O(n2.43) • Statement on the inherent computational complexity of matrix multiplication: • Any algorithm for matrix multiplication requires (n2)in the worst case, i.e, O(n2) is the best any algorithm could possibly do (this is an information theoretic argument).
Running Time v.s. Complexity • Example: Sorting INSTANCE: List of n integers. SOLUTION: The list of integers in non-decreasing order. • Running times of specific algorithms: • Real dumb algorithm - O(n3) • Bubble sort - O(n2) • Merge sort - O(nlogn) • Statement on the inherent computational complexity of sorting: • Any comparison-based sorting algorithm requires (nlogn) operations in the worst case, i.e, O(nlogn) is the best any algorithm could possibly do. • Is this just lower bound theory? • Yes, in a sense, but we are not concerned with specific running times, but rather polynomial v.s. exponential.
The Satisfiability Problem (SAT) SATISFIABILITY INSTANCE: Set U of variables and a collection C of clauses over U. QUESTION: Is there a satisfying truth assignment for C? • Example #1: U = {u1, u2} C = {{ u1, u2}, { u1, u2}} Answer is “yes” - satisfiable by make both variables T • Example #2: U = {u1, u2} C = {{ u1, u2}, { u1, u2}, { u1 }} Answer is “no”
Satisfiability, Cont. • What would be a simple algorithm for SAT? • Build a truth table • Running time would be O(n2m) • m is the number of variables • n is the length of the expression • see pages 7 and 8 from the book • Is a more efficient algorithm possible? • probably… • How about one with polynomial running time? • Come see me if you find one! • A live white turkey and a Stanford job awaits…
General Points • We are interested in the “border” between exponential and polynomial. • Given a problem, is there a polynomial time algorithm for it, or are all algorithms for it exponential in running time? • We are not interested in what the specific polynomial or exponential is, “per se.” • Although the theory can be modified/refined to consider these. => Simplistically and inaccurately speaking, saying that a problem is “NP-complete” or “NP-hard” is essentially saying that there is no (deterministic) polynomial time algorithm for that problem.
General Points, Cont. • Polynomial time does not necessarily imply practical. • O(n1000) • O(n2) could be 10,000,000n2 • NP-complete/NP-hard/intractible does not necessarily imply that their aren’t useful, practical algorithms. • Our measures are worst-case, and average case may not be all that bad, e.g., quicksort is O(n2) worst case, but O(nlogn) on average. • In theory, an algorithm could have worst-case running time O(2n) because of one case, and O(n2) average • Simplex algorithm for linear programming • Branch-and-bound algorithm for knapsack problem. • isn’t all that bad.
General Points, Cont. • Proving a problem is NP-complete or NP-hard is just the beginning: • Heuristic development and analysis (the problem doesn’t go away) • Special cases of the problem may be solvable in polynomial time • Sub-exponential time algorithms may exist.
NP General Description of the Theory • We will describe a class of (decision) problems called NP. • NP consists of those decision problems that can be solved in Non-deterministic Polynomial time • Holy cow! What is that, and how could it be possibly be important? • Why decision problems? • Simplicity • Convenience • No loss of generality in doing so
NP P General Description of the Theory • We will define a subset of NP called P. • P consists of those problems from NP that can (also) be solved in (deterministic) polynomial time • Why is deterministic in parenthasis? • A very big, important question is P = NP? • i.e., can all problems in NP be solved in (deterministic) polynomial time? • The answer to this question appears to be no, i.e., there exist problems in NP for which there is no known (deterministic) polynomial time algorithm.
General Description of the Theory • This last point will lead us to define another subset of problems in NP called NP-complete. • The above diagram implies several relationships • P and NP-complete are proper subsets of NP • P and NP-complete do not intersect • Note that none of these has been shown to be true, however, both are widely believed to be true. • Henceforth, “polynomial time” will be used as short for “deterministic polynomial time.” NP NP-complete P
NP NP-complete P Facts about NP-complete Problems Suppose is an NP-complete problem • There are no known polynomial time algorithms for • All known algorithms require exponential time, e.g., exhaustive search • If P then P = NP • If any NP-complete problem can be solved in polynomial time, then so can all problems in NP. • It is not known for certain whether requires exponential time or not. • All NP-complete problems appear to require exponential time, but only because no polynomial time algorithm has been found for any of them. • Give a problem , we would like to know if P or NP-complete.
Facts about NP-complete Problems • The second observation suggests why showing an NP-complete problem is important: since NP contains many very practical problems that people have tried (and failed) to come up with polynomial time algorithms for, it is highly unlikely that any NP-complete problem can be solved in polynomial time.
More Sample Problems DIVISIBILITY BY 2 INSTANCE: Integer k. QUESTION: Is k even? CLIQUE INSTANCE: A Graph G = (V, E) and a positive integer J <= |V|. QUESTION: Does G contain a clique of size J or more? GRAPH K-COLORABILITY INSTANCE: A Graph G = (V, E) and a positive integer K <= |V|. QUESTION: Is the graph GK-colorable?