How do complexity classes get named? A proposal gets submitted to the
Complexity Class Naming Commission (CCNC) which makes sure the class
was not already named and the name has not been used before. The CCNC
then puts out a Request for Comments to the community. Once the
community responds, sometimes giving other suggestions for the name,
the CCNC makes a formal recommendation to the Complexity Governing
Council. The Council takes a final vote on the name.
If only we were so organized. Complexity classes get their name
usually from the authors who invent them or occasionally by a later
paper if the first paper didn't name the class or gave it an
unmemorable name. Too often researchers will give a temporary name so
they can work with a class and then keep that name out of
laziness. Maybe I've been guilty of this a few times myself.
I could write several posts on badly named complexity classes. For now
let me mention two important ones.
NP
for Nondeterministic Polynomial Time. But
"nondeterministic" is not very descriptive. Logically
∃P would be better or PV for Polynomially Verifiable.
PP
for Probabilistic Polynomial Time. Since the error is
not bounded away from one-half, the class is not a useful
characterization of probabilistic computation. A better name would be
Majority-P or just MP. BPP would
then get the proper name PP and BQP
would be just QP.
Someone asked me how to get their class into the Complexity
Zoo. You can submit a proposal to the CCNC or just realize the
Zoo is now a wiki and edit it yourself.
If one reads the original papers for hundred year old results in math, one can see that it is not uncommon for the notation and even the definitions themselves to have been refined over the years.
I do not think the field is in need of a major rewrite, but by the same token I do think we shouldn't be afraid to do some house keeping, as suggested in Lance's previous post. E.g. I've been arguing for a long time that we should downplay non-determinism in the initial definition of NP, and focus more on either the polynomial verifiability or the exponential-work/polynomial-time nature of finding a solution (exponentially many processors running for polynomial time).
Another example for a bad name is #P. We count the number of accepting paths of a NP machine, thus #NP would be much more appropriate. (Just like SAT is deciding if there is a truth assignment, and #SAT is counting such assignments.)
When NP was introduced nobody must have given so much attention to its polynomial time verifiability. At that time non-determinism must have been a fancy word. I shouldn't coment much on the thread because the class NP is older than my age. I agree on PP.
When NP was introduced nobody gave so much attention to its polynomial time verifiability. At that time non-determinism must have been a fancy word. I shouldn't coment much on the thread because the class NP is older than my age. I agree on PP.
Karp's 1972 paper defines NP in terms of polynomial time verifiability.
I think this is what makes NP a natural class to separate from P. It's the class of problems that have at least a hope of being solved in polynomial time, since their proofs are polynomially verifiable.
The name "NP" is positively inspired compared to "NC". Don't get me wrong, Nick is a stand up fellow, but if questions like P =? NP and P =? NC are fundamental to computer science, the N's should probably have something in common.
I feel BPP and BQP are quite well named. Why don't we have a formal nomenclature system just like in Organic Chemistry. Will be fun though to remember all the classes then.
It's the class of problems that have at least a hope of being solved in polynomial time, since their proofs are polynomially verifiable.
Alas!!!! 1 million rests on poly time verifiability.
I am not a complexity theorist, but want to learn about and teach a few of the most important classes beyond NP. Which ones should I choose? Besides the complexity zoo, is there somewhere I can get such information?
I...want to learn about and teach a few of the most important classes beyond NP. Which ones should I choose? Besides the complexity zoo, is there somewhere I can get such information?
A good place to look is various on-line course lecture notes. There are others, but good starting points include: Goldreich's notes, Trevisan's notes, and, if I can plug my own, Katz's notes. (Note: I am not a complexity theorist, but I think this has the effect of making my notes somewhat easier to understand)
Someone asked me how to get their class into the Complexity Zoo. You can submit a proposal to the CCNC or just realize the Zoo is now a wiki and edit it yourself.