The Non-deterministic Polynomial (NP) problems were a little harder to understand. In terms of solving a NP problem, the run-time cannot be polynomial. It would be something like O(n!) or something larger.
However, this class of problems are given a specific solution, and checking the solution would have a polynomial run-time.
For example, the Sudoku game.
A problem is said to be NP-Hard, when an algorithm for solving the NP Hard can be translated to solve any NP problem. Then we can say, this problem is at least as hard as any NP problem, but it could be much harder or more complex.
NP-Complete (NPC) problems are those which are present in both the NP and NP-Hard classes. That is NP-Complete problems can be verified in polynomial time and any NP problem can be reduced to this problem in polynomial time.
A problem is in class NPC if it is in NP and is as hard as any problem in NP. A problem is NP-hard if all problems in NP are polynomial time reducible to it, even though it may not be in NP itself.
If a polynomial time algorithm exists for any of these problems, all problems in NP would be polynomial time solvable. These problems are called NP-complete. The phenomenon of NP-completeness is important for both theoretical and practical reasons.
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. Because, note that any NP language can be reduced to an NP-complete language. Use this reduction and the algorithm for the given NP-complete problem to solve any problem in NP. Hence all of them will have polynomial time solutions.
If some NP-complete language is not in P, then this means this language is in NP but not in P, hence this certifies that P and NP are not equal.
Hence P vs. NP can be resolved if some NP-complete problem is proven to either be in P or not in P.