Computational Complexity
For this topic, and this topic only, we consider questions of efficiency.
A set that is decidable is decidable
in polynomial time if there is a machine

that decides the set and some polynomial

such that the on any input of length

halts in at most

steps. The idea is that as the problems get longer the amount of computation time doesn't increase much.
Linear time would be even nicer, but it is of less theoretical interest because it depends on the details of how a problem is presented and the kind of machine used. Polynomial time is pretty much independent of such considerations.
Polynomial time is the best formal analysis we have of "feasibly computable." It is therefore of tremendous practical interest to know what can be computed in polynomial time.
There are some problems we can't solve, that we could never even want to solve, for example, we have no use for procedures with output of length that grows exponentially in the length of the input.
We thus need a second class: the class of problems we might feasibly want to solve.
A
nondeterministic machine is one that can take several branches at once. Each jump is not to a single instruction, but to a set of instructions. If any of the many branches halts, we take the machine to have halted.
A nondeterministic machine in effect guesses the answer to a problem and then sees if that guess works. Thus, a problem is solvable in nondeterministic polynomial time if we can, given the answer to the problem, check that it works in polynomial time.
No answer to a problem is of any use to us, unless we can understand it. Understanding an answer "must" at least involve seeing that it works. Thus, the problems we might want to know the answer to are those solvable in nondeterministic polynomial time.
Therefore, the $64,000 question is, is the class of problems decidable in nondeterministic polynomial time equal to the class of problems decidable in polynomial time? Briefly, is P=NP?
If P=NP, then NP=coNP. Nobody knows a damn thing about these, or any related problems.
The notion of reducibility does work here. There are problems known to be "NP complete," that is, problems such that any problem to which they can be reduced are at least NP hard. Thus, to show that P=NP, it is enough to solve one NP-complete problem in polynomial time.
There are hundreds, probably thousands, of NP complete problems known. Here are three:
Is a sentence of sentential logic satisfiable?
Can you travel to every node of a graph and wind up where you started without ever retracing your steps?
Are two graphs isomorphic?
-- ProfessorShaughanLavine? - 07 Feb 2005