by Daniel Colomer
This is not an idea commonly discussed in learning books or tutorials but I found it useful and I think it’s a great alternative to the less intuitive system level thinking imposed by linear algebra.
Take a system with two qubits each in the state +. The theory tells us we should interpret this system as a product of its subsystems and therefore we got (0+1)(0+1) which gives us a system in the state 00+01+10+11 (ignoring normalization for the sake of brevity ok?!). Linear algebra teaches us to think about operations in this system as transformations from one state to another. Sometimes things get trickier specially when we have controlled operations from which we very often have to build up intuition about their effects by observing what do they do to different input states. The problem with this approach is that it’s easy to oversee things like phase kickback or like entanglement. You wouldn’t be able to easily tell whether the outcome state of applying a CZ to our initial ++ system creates any entanglement. Our intuition tells us it negates the component 11 of the overall state but that’s it.
This is where computational branching (I’ll just use the word branching from now on to make it easier for me to write) comes in and helps with a more. Branching is a more fundamental way to think about controlled operations. It’s also an easier to way to think about for most of us as it resembles more the classical if-else-statement thinking that most software developers are already familiar with. It goes like this:
These are basically just some of the rules I’ve been able to build up so far. Additionally to this there are some interesting observations:
I’ll add more stuff to the list as soon as I can explore more around this idea but it seems like a pretty solid way to think about multi qubit systems and operations in a way that is naturally intuitivetags: