For such a resource, we measure a program's requirement with a function whose independent variable denotes the size of the program's input.
To estimate how well the program scales for a given resource, we bound the growth the corresponding function using big oh, little oh and so forth. (Refer to the previous lecture.)
Time is the most measured resource. Think about this.
It turns out that most natural problems allow programs that are either "efficient," in the sense that they need only low-order polynomial time, or "inefficient," in that they need exponential or worse time.
This observation is generally credited to Jack Edmonds in the late 60s.
A mechanism to try to separate these two classes was created by Cook (and Levin) in the early 70s. It is called NP-completeness.
The foundational complexity theoretic question posed by NP-completeness has remained open for 30 years. Nevertheless, the practical significance of this mechanism would be difficult to overstate.
NTIME(f(n))
P
NP