Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Relating NP-Complete problems to real world problems

I have a decent grasp of NP Complete problems; that's not the issue. What I don't have is a good sense of where they turn up in "real" programming. Some (like knapsack and traveling salesman) are obvious, but others don't seem obviously connected to "real" problems.

I've had the experience several times of struggling with a difficult problem only to realize it is a well known NP Complete problem that has been researched extensively. If I had recognized the connection more quickly I could have saved quite a bit of time researching existing solutions to my specific problem.

Are there any resources (online or print) that specifically connect NP Complete to real world instances?

Edit: For example, I was working on a program that tried to divide students into groups based on age, grade, and school of origin, which is essentially a graph partitioning problem. It took me a while to realize the connection.

like image 551
terru Avatar asked Mar 08 '10 19:03

terru


People also ask

Why do we categorize the scheduling problems for real time systems as NP-complete problems?

NP-complete problems are the hardest problems in the NP set. A decision problem L is NP-complete if: 1) L is in NP (Any given solution for NP-complete problems can be verified quickly, but there is no efficient known solution). 2) Every problem in NP is reducible to L in polynomial time (Reduction is defined below).

Why are NP-complete problems important?

NP-complete languages are significant because all NP-complete languages are thought of having similar hardness, in that process solving one implies that others are solved as well. If some NP-complete languages are proven to be in P, then all of NPs are proven to be in P.

Do NP-complete problems exist?

However, many important problems have been shown to be NP-complete, and no fast algorithm for any of them is known.


2 Answers

I have found that Computers and Intractability is the definitive reference on this topic.

like image 114
i_am_jorf Avatar answered Nov 02 '22 21:11

i_am_jorf


Usually the connection you are talking about must be extracted with a so-called reduction, for example you reduce 3-SAT to the problem you are working with and then you can conclude that your problem has the same complexity of it.

This passage is not trivial, since you have to prove that you can turn every problem instance l of a known NP-Hard problem L into an instance c of your problem C using a deterministic polinomyal algorithms.

So, except from learning basical correlations of common NP-Hard problems using your memory, there's no way to be sure if a problem is similar to another NP-Hard without first trying to guessing and then proving it, you have to be smart.

like image 28
Jack Avatar answered Nov 02 '22 22:11

Jack