4

It seems like most research regarding stabilizer codes focused on CSS codes, which can be understand as a "tensor product" of two classical linear codes. However, I feel like non-CSS codes tend to render better performance given the same code size. For example, the well-known $[[5, 1, 3]]$ code can correct a single error with only five qubits. If we require the code to be CSS, we then need minimal seven qubits (Steane code) to do the same job (see this answer for why $[[6, 1, 3]]$ code cannot be CSS).

What are the main motivations for pursuing CSS codes over general non-CSS codes? I can imagine that CSS codes might make decoding easier as we are able to decode X and Z errors separately, but what else can we gain from the CSS codes, as it is suboptimal compared with the non-CSS codes?

glS
  • 27,510
  • 7
  • 37
  • 125
Yunzhe
  • 1,142
  • 4
  • 20

1 Answers1

3

I think the main reason is just that they're simpler to analyze and to prove things about.

Why do people look at stabilizer codes instead of considering non-stabilizer codes? Why do people treat "codes" as a static set of stabilizers, with no time dynamics, when time dynamics are so clearly a useful tool? Because it's harder to make progress when things are complicated.

As an example: in a CSS code you can split the decoding problem into the X part and the Z part and solve them independently. In more general cases that's not true.

A more objectively useful feature of CSS codes (in that it might cause you to prefer CSS codes even when considering other codes) is that CSS codes get a pretty useful set of transversal gates for free (RX, RZ, CX, H, MX, MZ, MXX, MZZ). This isn't just helpful for getting started on doing computations, it's generally useful for making things cheap.

Another useful feature, that might cause you to prefer CSS codes over other codes, is that fewer single qubit basis changes are needed when measuring their stabilizers. For example, if you are concatenating over the surface code and using tightly packed surface code patches, you will need to pay for patch rotations each time single qubit basis changes are needed. If the overlying code is a CSS code, this only happens twice: when switching from checking X stabilizers to Z stabilizers, and when switching back. For more general codes it will happen a linear number of times, instead of a constant number of times.

Craig Gidney
  • 44,299
  • 1
  • 41
  • 116