DEV Community

loading...

Discussion on: What is NP hardness?

Collapse
ahferroin7 profile image
Austin S. Hemmelgarn

Adding to this, an NP-hard problem is a problem that is known to be at least as difficult to solve as the most difficult to solve problems in the NP complexity class.

A good example of this is traveling salesman problem is a good example of such a problem, at least when what you care about is optimization of the route. Additionally, it also has an NP-complete version (given a length L, determine if a given graph has a tour that is no longer than L, known as the decision version of the traveling salesman problem).

Collapse
patarapolw profile image
Pacharapol Withayasakpunt Author • Edited

I see. There is also NP completeness.

However, I am not sure what non-deterministic means. (Non-deterministic Turing Machine? -- found YouTube, but will take some time to watch.)

A common misconception is that the NP in "NP-hard" stands for "non-polynomial" when in fact it stands for "non-deterministic polynomial acceptable problems".[4] It is suspected that there are no polynomial-time algorithms for NP-hard problems, but that has not been proven.[5] Moreover, the class P, in which all problems can be solved in polynomial time, is contained in the NP class.[6]

So, how to prove something is NP complete? Or, even NP in the first place?

Thread Thread
phantas0s profile image
Matthieu Cneude

I don't know ;) but you should continue to ask that many questions. Keep it up!

Thread Thread
ahferroin7 profile image
Austin S. Hemmelgarn

Yes, the 'nondeterministic' in the name of NP refers to a nondeterministic Turing machine (NTM). Problems that are in NP can be solved in polynomial time on an NTM. This also includes problems in P, which are solvable in polynomial time on a deterministic Turing machine.

NP complete problems are, formally, problems in NP for which every other problem in NP is reducible to that problem in polynomial time. In other words, if an algorithm is found for solving an NP complete problem, you can use that algorithm to solve any other problem in NP by combining it with another algorithm that translates from the problem to be solved to the NP-complete problem (and probably make a very large amount of money by doing so, as many important optimization problems are in NP).