12

What does the complexity class $\oplus P^{\oplus P}$ mean? I know that $\oplus P$ is the complexity class which contains languages $A$ for which there is a polynomial time nondeterministic Turing machine $M$ such that $x \in A$ iff the number of accepting states of the machine $M$ on the input $x$ is odd.

But what does $\oplus P^{\oplus P}$ mean? I just can't follow what it actually does :)

What are practical consequences of such complexity class and how it is possible to show that $\oplus P^{\oplus P} = \oplus P$?

Kaveh
  • 22,231
  • 4
  • 51
  • 111
stewenson
  • 351
  • 2
  • 6
  • 2
    This (imho awkward) notation denotes relative or oracle complexity classes. See Wikipedia for a definition. Does that answer the question? If not, please edit to clarify. – Raphael May 14 '12 at 16:27
  • 7
    You'll find the proof of $\oplus P^{\oplus P} = \oplus P$ at http://www.cs.rutgers.edu/~allender/538/murata3.pdf – sdcvvc May 14 '12 at 16:48

1 Answers1

11

$\oplus P^{\oplus P}$ denotes the class $\oplus P$ equipped with what's known as an oracle for $\oplus P$ — we say that it has been given the ability to determine whether or not a string $s$ is a member of a language $L$ contained in the class $\oplus P$ in a single operation.

I see that another commenter (sdcwc) has linked to the proof of $\oplus P^{\oplus P} = \oplus P$ (see these notes on a lecture from CS 538 at Rutgers). A complexity class $C$ that is an oracle to a class $B$ such that $B^C= B$, is said to be low for the class $B$. In this case, we say that $\oplus P$ is low for itself.

D.W.
  • 159,275
  • 20
  • 227
  • 470
  • Another link for you, this time to the wikipedia page on 'lowness' of complexity classes: https://en.wikipedia.org/wiki/Low_%28complexity%29 – Josh Lockhart May 14 '12 at 18:45
  • Your style of the explanation is sufficient for the understanding of the basic principles and it is easy to follow. – stewenson May 14 '12 at 19:42
  • What do you basically mean that $\oplus P$ is equipped with the oracle which can determine membership of the language $L$ in the single step? From my point of view, if you are about solving some problem in $\oplus P^{\oplus P}$, you are querying the oracle in the very beginning of the computation so after the first step, you know how the oracle answers you? So you know that since you've reached one acceptance state, the number of such states is just one, so the odd number, so you accept? – stewenson May 14 '12 at 19:44
  • 3
    "an oracle for $\oplus P$ - we say that it has been given the ability to determine whether or not a language $L$ is a member of $\oplus P$ in a single operation." - this is incorrect: An oracle gives the ability to determine whether a string $s$ is a member of some language $L$ in $\oplus P$. Without loss of generality, $L$ can be taken to be $\oplus SAT$ (since it is $\oplus P$-complete) – sdcvvc May 14 '12 at 20:17
  • I am trying to follow the proof really hard but it is quite unclear to me. For example, what does function $f(1^i,x)$ mean? I know it is "repeat 1 i times ($1^3 = 111$)" but what is it good for in this context? What does specially $1^i$ mean? And what about the $k$ in $n^k$ everywhere? If $i \leq n^k$, then $f(1^i,x) = f(1^{n^k}, x) = f(1^{|x|^k}, x)$. What does it mean? Why you have a function $f \in \sharp P$ with such input? – stewenson May 15 '12 at 00:24
  • Stefan.M: $f(1^i, x)$ is used to denote a function taking some string of 1's and $x$ - the first argument is encoded in unary. They show for such functions $#P$, is closed under some "multiplication" and "addition" (subclaims 1 and 2). I do not see the claim "if $i \leq n^k$ then $f(1^i,x)=f(1^{n^k},x)$ in the proof. $k$ is a fixed constant. – sdcvvc May 15 '12 at 02:11
  • sdcvvc: for example in the proof of the subclaim 1, in that cycle, $i$ iterates from $1$ to $n^k$ so then $M$ is run on input, in the last step, $(1^{n^k},x)$. If $n$ is $|x|$ then what that constant $k$ does there? If I am right, the 1st subclaim says that $g(x)$ is the total number of the possible acceptance states. 2nd subclaim says how many accepting paths exist when you choose some $y$ string as a path of the computation. But again, what does that constant $k$ mean? The very last equivalence on the 3rd page says the number of the acceptance states will be odd (... 1 (modulo 2)) Right? – stewenson May 15 '12 at 12:59
  • Stefan.M: $k$ is just a constant for purposes of subclaims 1 and 2, its meaning is not important for the subclaims. Later, in the main proof, you assume that the $# P$ machine makes $|x|^k$ queries - beginning of page 4. – sdcvvc May 15 '12 at 15:00
  • thank you, i think i've got it. The last missing part is the weird step in the algorithm - "flip a coin and accept on the one path & run N(w) on the other", it is difficult to follow. I understand you somehow split the execution of the computation into two computational "branches". If the $i$-th (last) answer from the oracle ($z_i$) is 0, you can accept (why?) and continue the computation with querying the oracle ... weird. – stewenson May 15 '12 at 18:34
  • Stefan.M: Yes, "flip a coin" is bad wording; simply, every nondeterministic machine can "split" computation into 2 branches by nondeterministic guess. That weird idea is the heart of the proof; subclaims 1 and 2 should be rather obvious. If you still have questions, let's continue in the chat. – sdcvvc May 15 '12 at 19:46