And I have the same feelings about a lot of other stuff, including most of CS.

A problem described can be related to Knapsack or The Travalling Salesman Problem--correctly described as NP-hard or NP-complete--but it can still be solved in real time using Perl when the CS majors give up. I've done this many times.

Graph theory is, IMO, an abstraction too far. Graph terminology--nodes, edges, traversal etc.--in many cases, simply serves to obscure the details of the problems they describe, and in doing so, maks things which are straight forward to understand and implement, hard or impossible to do, because you can't see the trees cos the forest is in the way:)

A problem described can be related to Knapsack or The Travalling Salesman Problem--correctly described as NP-hard or NP-complete--but it can still be solved in real time using Perl when the CS majors give up. I've done this many times.

The thing about NP complete problems is that they don't scale. It could be you can still find solutions for, for example, 20 nodes, while for just a few more nodes, solving the same problem takes many times longer, so long that it's no longer practically usable. Your particular problem may take a few minutes to solve, while the slighhtly more complex problem takes hours, or days.

I think that BrowserUK's point is that a problem can be related to a known hard problem, but be very doable. Or there is a variation on it which is what you really need that is doable. The CS major looks at the problem and knows the theory about why it is hard. But if you just try it, often you'll get an answer.

Sometimes you won't. Often you'll get a fast answer to the wrong problem. But success comes often enough that it is often worth not giving up too easily.