"Cause" and "Effect" in modern physics

In a very recent thread, some of our physicists suggested that the temporal relationship between cause and effect is not clear-cut. I Searched to try to find that thread, but came up only with two old threads: one discussing Huw Price’s ideas and another thread discussing the “pilot wave” interpretation.

So … consider Grover’s algorithm for quantum computing. With n qubits, we start with a superposition of 2[sup]n[/sup] states; do some calculations on these qubits; let “the wave function collapse”; and … Presto! — a solution is found faster than possible with classical computing. It seems magic, almost as though a future event (an oracle’s recognition of search success) reaches backwards in time and causes the qubits to assume that desirable pattern.

My eyes glaze over long before I can properly grasp Grover’s algorithm (and a simple intuitive explanation would be appreciated) but I don’t think full understanding is needed for my question. I just want to ask: Is this algorithm a good example of what physicists mean when they speak of cause-effect relationship being unclear? Is it possible to speak of the future oracle “causing” the qubit behavior?

A follow-up question relates to the alleged quantum tunneling associated with the high efficiency of chlorophyll’s energy conversion. Again, my eyes glaze over before understanding any details. But intuitively: What “causes” the electronic excitation to “tunnel” its way to the reaction center? Can the successful reaction be viewed as a “cause” of the exciton’s quantum motion, much as the oracle in Grover’s algorithm?

and Kedikat should feel like a fool for asking about Bitcoin?

A quantum algorithm is like a classical algorithm: a discrete sequence of steps performing some computation. In particular, time runs forward as usual; any speed-up compared to more familiar algorithms operating on bits is a result of operating on superpositions of states, but that does not mean you can magically quickly solve NP problems.

Grover’s algorithm, described in your link, has this mysterious “oracle” function f(x), but it is best to think of that as just the input to the algorithm, and the output is some value x for which f(x) = 1. Nothing is going “back in time” any more than it does in the classical algorithm that also consults the “oracle” by computing f(0000…0), f(00…01), f(0…10), etc, until it gets 1, except that Grover’s algorithm does it faster (via “parallel processing”, if you like).

I don’t really have any intuition about how cause and effect relate to QM, but I can explain Grover’s algorithm in an intuitive way.

The first thing to note is that even though our quantum registers are in a superposition of many values, when we read at the end we only get one value. The probability of getting any particular value depends on the state of the register. We hope that the right answer has high probability of occurring.

By “default”, a quantum register will give all possible states with equal probability. There are a handful of mechanisms that can modify these probabilities, but they can’t be changed arbitrarily.

The internal state actually operates on “amplitudes”, not raw probabilities. The probability is the square (actually the magnitude squared, since it can be complex) of the amplitude.

Onto the algorithm. We start by building a function that negates the amplitude of the search result we want, and leaves the rest alone. We apply this function, and then another transform: called the Hadamard transform, it “flips” the amplitude around the average amplitude (that is, it performs (2*average - value) for each element). We then iterate these two transforms for a while and eventually the right answer becomes highly probable.

Let’s give an example. We have a 3-qubit computer and we are searching for the 001 value (i.e., the second one). We initialize our register to amplitudes of:
0.354 0.354 0.354 0.354 0.354 0.354 0.354 0.354

Note that if we square each amplitude, we get 0.125, which sum to 1 (i.e., the total probability is 1). Apply our first function to get:
0.354 -0.354 0.354 0.354 0.354 0.354 0.354 0.354

Same thing, just with the second element negated. Then apply the Hadamard operator. The average is 0.265, so the values “flip” like this (you may verify that the squares of the amplitudes still sum to 1):
0.176 0.884 0.176 0.176 0.176 0.176 0.176 0.176

Our answer is looking pretty good but let’s do another iteration just in case. Do our function again:
0.176 -0.884 0.176 0.176 0.176 0.176 0.176 0.176

Average is 0.043. Now we have (again, the squares summing to 1):
-0.09 0.97 -0.09 -0.09 -0.09 -0.09 -0.09 -0.09

This looks pretty good: we’ll pick the right answer with 95% probability (remember, amplitude squared).

You can probably see how this works for any number of qubits, but requires more iterations to complete–proportional to sqrt(N). The wrong answers get kinda smoothed down to 0 while the right one approaches 1 (or -1).

Note that all of the operators leave the total probability alone. There are other constraints I’m sure, but in any case you can generally muck with the amplitudes as long as their squares sum to 1. Another compatible transform is the quantum Fourier transform, which is used in the quantum factorization algorithm.