Quantum phase estimation (also referred to simply as phase estimation) is another QPU primitive for our toolbox. Like amplitude amplification and QFT, phase estimation extracts tangible, readable information from superpositions. Phase estimation is also quite possibly the most challenging primitive we’ve introduced so far, being conceptually tricky for two reasons:
Unlike the AA and QFT primitives, phase estimation teaches us an attribute of an operation acting on a QPU register, rather than an attribute of the QPU register state itself.
The specific attribute that phase estimation teaches us about a QPU operation, despite being hugely important in many algorithms, appears to be useless and arbitrary. Revealing its practical use is a challenge without resorting to some relatively advanced mathematics. But we’ll give it a shot!
In this chapter we’ll discuss what phase estimation is, try some hands-on examples, and then break it down operation by operation.
Programming a problem that we want to solve into a QPU inevitably involves acting on some QPU register with the fundamental operations introduced in Chapters 2 and 3. The idea that we would want a primitive that teaches us something might sound strange—surely if we constructed a circuit, then we know everything there is to know about it! But some kinds of input data can be encoded in QPU operations, so learning more about them can potentially get us a long ...