This preview shows pages 1–3. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
Unformatted text preview: Chapter 9 Coping with NPcompleteness You are the junior member of a seasoned project team. Your current task is to write code for solving a simplelooking problem involving graphs and numbers. What are you supposed to do? If you are very lucky, your problem will be among the halfdozen problems concerning graphs with weights (shortest path, minimum spanning tree, maximum flow, etc.), that we have solved in this book. Even if this is the case, recognizing such a problem in its natural habitatgrungy and obscured by reality and contextrequires practice and skill. It is more likely that you will need to reduce your problem to one of these lucky onesor to solve it using dynamic programming or linear programming. But chances are that nothing like this will happen. The world of search problems is a bleak landscape. There are a few spots of lightbrilliant algorithmic ideaseach illuminating a small area around it (the problems that reduce to it; two of these areas, linear and dynamic programming, are in fact decently large). But the remaining vast expanse is pitch dark: NP complete. What are you to do? You can start by proving that your problem is actually NPcomplete. Often a proof by generalization (recall the discussion on page 270 and Exercise 8.10) is all that you need; and sometimes a simple reduction from 3 SAT or ZOE is not too difficult to find. This sounds like a theoretical exercise, but, if carried out successfully, it does bring some tangible rewards: now your status in the team has been elevated, you are no longer the kid who cant do, and you have become the noble knight with the impossible quest. But, unfortunately, a problem does not go away when proved NPcomplete. The real ques tion is, What do you do next? This is the subject of the present chapter and also the inspiration for some of the most important modern research on algorithms and complexity. NPcompleteness is not a death certificateit is only the beginning of a fascinating adventure. Your problems NPcompleteness proof probably constructs graphs that are complicated and weird, very much unlike those that come up in your application. For example, even though SAT is NPcomplete, satisfying assignments for HORN SAT (the instances of SAT that come up in logic programming) can be found efficiently (recall Section 5.3). Or, suppose the graphs that arise in your application are trees. In this case, many NPcomplete problems, 283 284 Algorithms such as INDEPENDENT SET , can be solved in linear time by dynamic programming (recall Section 6.7). Unfortunately, this approach does not always work. For example, we know that 3 SAT is NPcomplete. And the INDEPENDENT SET problem, along with many other NPcomplete problems, remains so even for planar graphs (graphs that can be drawn in the plane without crossing edges). Moreover, often you cannot neatly characterize the instances that come up in your application. Instead, you will have to rely on some form of intelligent exponential...
View
Full
Document
This note was uploaded on 12/15/2009 for the course CS 473 taught by Professor Viswanathan during the Spring '08 term at University of Illinois at Urbana–Champaign.
 Spring '08
 Viswanathan

Click to edit the document details