In the same way your program or toolbox should include lots of different design

paradigms like dynamic programming, greedy algorithms, divide and conquer,

lots of different data structures, hash tables, balance search trees, and so on.

That toolbox also should include

the knowledge of computationally intractable that is mp complete problems.

Maybe how to even establish problems are mp complete.

Again this is because, these problems are likely to show up in your own projects.

It is not uncommon that a graduate student at Stanford will come into my office

asking for some advice, how to approach a problem that's come up in their own

project from an algorithmic perspective.

Very often, after they've sketched the problem for two minutes, five minutes on

my white board, it's very easy to see that it is, in fact, an MP complete problem.

They should not seek out a efficient exactly correct algorithm and

instead they should resort to one of the strategies for

dealing with MP complete problems that we'll be discussing later.