Skip to main content
15 events
when toggle format what by license comment
Apr 22, 2023 at 4:30 comment added user21820 @TimothyChow: That's right; my P^0 was exactly your P[T^∅]. And yes you could solve the issue by making very clear (to students) that P is merely abbreviation for "P^0". The more radical alternative I suggested was just a fun way that allows us to actually retain the usual appearance of these notations except for changing "=" to "≡". XD
Apr 22, 2023 at 1:56 comment added Timothy Chow @LSpice The trouble with that suggestion is that the sets of languages $\mathsf{P}$ and $\mathsf{NP}$ really are the primary objects of interest. They are extremely robust and "machine-independent." Oracles, at least IMO, are not so interesting in their own right; they're tools for helping us figure out what sorts of things are going to be hard to prove and what sorts of things might be more tractable.
Apr 22, 2023 at 1:43 comment added LSpice Re, in the spirit of @user21820's suggestion, mightn't a remedy be to regard a complexity class $\mathsf C$ not as a set of languages, but rather as "the machine" in whatever sense; then to denote the corresponding set of languages by, say, $\DeclareMathOperator\Lang{Lang}\Lang(\mathsf C)$, so that $\Lang(\mathsf P) = \Lang(\mathsf{NP})$ obviously need not imply $\Lang(\mathsf P^A) = \Lang(\mathsf{NP}^A)$?
Apr 21, 2023 at 17:29 comment added Esa Pulkkinen Adding any oracle can change complexity of the classes involved since some problems that are solved with oracle using "magic" oracle operation cannot be simulated with same amount of resources. It's then matter of finding sufficient resources elsewhere to determine if the oracle machines can be simulated without oracle and checking that those simulations do not use too many resources. But adding oracle operation can also complicate matters, since enumerating all possible outputs of the oracle machine is not as simple. For example having oracle produce random bits to produce thread ids => races
Apr 21, 2023 at 11:55 comment added Timothy Chow @user21820 Rereading more carefully what you wrote, I believe that what I'm suggesting is not so different from your suggestion. Part of what I'm saying is that the "full notation" for $\mathsf{P}$ would be $\mathsf{P}_{T^\varnothing}$. One would use the abbreviation $\mathsf{P}$ only when there is no danger of confusion.
Apr 21, 2023 at 11:51 comment added Timothy Chow @user21820 Redefining $\mathsf{P}$ and $\mathsf{NP}$ to be something other than complexity classes strikes me as too extreme. But whatever the limitations of my suggestion $\mathsf{P}_{T^A}$, I think it does address the issue I raised. One is not tempted to infer from $\mathsf{P}_{T^\varnothing} = \mathsf{NP}_{T^\varnothing}$ that $\mathsf{P}_{T^A} = \mathsf{NP}_{T^A}$ for all $A$. Or at the very least, the notation alerts you to the fact that $A$ is not being applied to $\mathsf{P}$ or to $\mathsf{NP}$ directly.
Apr 21, 2023 at 7:12 comment added user21820 Another possible solution is that P and NP and other such terms should be defined as models(!) rather than complexity classes, and then the question of equal classes must be expressed differently, say via "P ≡ NP". It is then clear that it may be that P ≡ NP but P^A ≢ NP^A for some A, just like 6 ≡ 10 (mod 4) but 6/2 ≢ 10/2 (mod 4).
Apr 21, 2023 at 7:08 comment added user21820 Hmm, I don't like $P_{T^A}$ even more. It doesn't solve the issue you raised... The reason I suggested "P^0" is that as long as you think of "P" as the base model and "P^A" as the result of adding "A" to the base model "P" to get a complexity class, then everything is fine, since "^0" is equivalent to no oracle. Unfortunately, "^0" is really cumbersome.
Apr 21, 2023 at 4:35 comment added Timothy Chow Minor correction: A complexity class is a set of languages, and a language is a set of strings.
Apr 21, 2023 at 0:49 comment added Timothy Chow @LSpice Yes. A complexity class is a set of strings. Contrary to what the notation seems to suggest, relativizing to an oracle is not an operation that applies directly to the set of strings; it's a modification of the machine. There may be two different "conditions" which cause the machine to accept equivalent sets of strings, but that doesn't imply that imposing the corresponding conditions on the modified machine will still cause it to accept equivalent sets of strings.
Apr 20, 2023 at 23:39 comment added LSpice For the benefit of someone whose last computability theory was back in their undergraduate days, what is the wrong step here? Is it that equal complexity classes need not have equal relativisations?
Apr 20, 2023 at 14:28 comment added Timothy Chow @user21820 I admit I don't have a perfect solution, but I think there ought to be some way to indicate that the oracle is being applied to the machine model and not the language. Maybe something like $\mathsf{P}_{T^A}$ instead of $\mathsf{P}^A$ where $T$ symbolizes the Turing machine model. One might still use $\mathsf{P}^A$ (or maybe $\mathsf{P}_A$) for brevity when there is no danger of confusion, but there should be a way to revert to a more precise notation when necessary to avoid confusion.
Apr 20, 2023 at 13:36 comment added user21820 Do you have a preferred solution to this? What about P^0 and NP^0?
S Apr 20, 2023 at 4:22 history answered Timothy Chow CC BY-SA 4.0
S Apr 20, 2023 at 4:22 history made wiki Post Made Community Wiki by Timothy Chow