The
concept of NP-Hard is, as its
name suggests, kind of
hard to
grasp. Here's the
idea: some problems are
reduceable to other
problems. For instance, solving a
linear equation like ax + b = 0 is reduceable to the problem of solving
quadratic equations by stating the problem as 0x
2 + ax + b = 0.
A given problem is NP-Hard if it takes at least as long as every other problem in the NP complexity class. That means that you can reduce any problem in NP (which stands for "nondeterministic polynomial time") to the original problem in polynomial time.
NP-Hard is not the same as NP-Complete. For a problem to be NP-Complete, it must be NP-Hard and be verifiable in polynomial time. That is, if you are given a possible answer, you can use an algorithm that takes O(nk) steps to determine if the answer is correct. The NP-Complete node has a little more thorough explanation if your mind's not blown already.