I am currently learning surface code. In this framework, we can either do a quantum memory (for which we have good knowledge of how to do it), but we can also "in principle" perform an arbitrary computation.
So far, to implements non identity logical gates (hence, cNOT, Hadamard,...), there are from my very partial understanding different techniques. Please note that for 1. and 2., I do not know any technical details behind those yet, I just barely know their name.
- "Lattice surgery": I don't know exactly in what it consists but I know it can be used to perform logical gates.
- Braiding. I actually believe it is the same as lattice surgery but I am not sure.
- Transversal operations. We first protect each logical qubit by surface code. Then we can use the concatenated construction (for instance based on the Steane method), and perform transversal Clifford gates with this.
Also, we can perform gate by doing magic distillation protocole (but as you typically need to know "at least" how to perform a logical cNOT, I guess this is more a complementary technique to have the full gateset).
My questions:
- Is my little summary of techniques more or less complete (and correct).
- What is the most seriously considered technique to perform logical gates for the surface code?
- What is a good pedagogic reference to learn it?
I am currently learning the basics of surface codes using the following refs: ref1 ref2 ref3. They talk a bit about how to do logical gates but they are also some kind of general reviews (and they do not necessarily enter in too much details for this). My goal is to save my energy to focus on learning what is considered to be a good way to do logical gates (and not some historical "abandonned" ways).