This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: Algorithms Lecture 30: NP-Hard Problems [ Fa’10 ] The wonderful thing about standards is that there are so many of them to choose from. — Real Admiral Grace Murray Hopper If a problem has no solution, it may not be a problem, but a fact — not to be solved, but to be coped with over time. — Shimon Peres 30 NP-Hard Problems 30.1 ‘Efficient’ Problems A generally-accepted minimum requirement for an algorithm to be considered ‘efficient’ is that its running time is polynomial: O ( n c ) for some constant c , where n is the size of the input. 1 Researchers recognized early on that not all problems can be solved this quickly, but we had a hard time figuring out exactly which ones could and which ones couldn’t. there are several so-called NP-hard problems, which most people believe cannot be solved in polynomial time, even though nobody can prove a super-polynomial lower bound. Circuit satisfiability is a good example of a problem that we don’t know how to solve in polynomial time. In this problem, the input is a boolean circuit : a collection of A ND, OR, and NOT gates connected by wires. We will assume that there are no loops in the circuit (so no delay lines or flip-flops). The input to the circuit is a set of m boolean (T RUE / F ALSE) values x 1 ,..., x m . The output is a single boolean value. Given specific input values, we can calculate the output of the circuit in polynomial (actually, linear ) time using depth-first-search, since we can compute the output of a k-input gate in O ( k ) time. x y x x y x ∨ y x ∧ y ¬x An A ND gate, an O R gate, and a N OT gate. x 1 x 2 x 3 x 4 x 5 A boolean circuit. inputs enter from the left, and the output leaves to the right. The circuit satisfiability problem asks, given a circuit, whether there is an input that makes the circuit output T RUE, or conversely, whether the circuit always outputs F ALSE. Nobody knows how to solve 1 This notion of efficiency was independently formalized by Alan Cobham (The intrinsic computational difficulty of functions. Logic, Methodology, and Philosophy of Science (Proc. Int. Congress) , 24–30, 1965), Jack Edmonds (Paths, trees, and flowers. Canadian Journal of Mathematics 17:449–467, 1965), and Michael Rabin (Mathematical theory of automata. Proceedings of the 19th ACM Symposium in Applied Mathematics , 153–175, 1966), although similar notions were considered more than a decade earlier by Kurt Gödel and John von Neumann. © Copyright 2010 Jeff Erickson. Released under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License ( http://creativecommons.org/licenses/by-nc-sa/3.0/ ). Free distribution is strongly encouraged; commercial distribution is expressly forbidden. See http://www.cs.uiuc.edu/~jeffe/teaching/algorithms/ for the most recent revision....
View Full Document
- Fall '08
- Algorithms, Computational complexity theory, independent set, NP-Hard problems