Polynomial Time
- A complexity class is a set of functions that can be computed within given resource bounds.
- We will often be interested in Boolean functions. These functions define decision problems also known as
languages.
- We say a machine decides a language `L subseteq {0, 1}^star` if it computes `f_L:{0, 1}^star -> {0,1}`, where
`f_L(x) = 1 iff x in L`.
- We next look at the case where the resource bound is time.
Definition. Let `T: NN -> NN` be some function. A language `L` is in `mbox(DTIME)(T(n))` iff there is a TM that runs in time `c cdot T(n)` for some constant `c > 0` and decides `L`.
- D in the above refers to deterministic. We will later define the notions of nondeterministic as well as probabilitic TM's.
- Using our definition above we can try to come up with a notion of "efficient computation". For this class, this will equate this with having a polynomial running time.
Definition. `P = cup_(c ge 1) mbox(DTIME)(n^c)`.