I'm still confused about what a QRAM should be. Is amplitude encoding a form of performing QRAM? Or are they related in a way ? What is today's state of the art about QRAM ?
2 Answers
From my perspective, the key differences are:
- In emplitude encoding, each classical data point is represented by the amplitude of each quantum basis state. For example, a vector $(a_0,a_1,a_2,a_3)$ is encoded into a quantum state $|\psi\rangle = \frac{a_0}{\sqrt{\sum_i{a_i^2}}} |00\rangle + \frac{a_0}{\sqrt{\sum_i{a_i^2}}}|01\rangle + \frac{a_2}{\sqrt{\sum_i{a_i^2}}}|10\rangle + \frac{a_3}{\sqrt{\sum_i{a_i^2}}}|11\rangle$
- While in qRAM, it loads binarized form of data through an quantum address in superposition state. For example we have two address qubits ($n=2$ and $N=2^n=4$), assume $a_i$ is stored in 8-bit integer format, then we have 8 data qubits. Then what qRAM does is $\sum_{j=0}^3 \frac{1}{2}|j\rangle |0\rangle \xrightarrow{qRAM} \sum_{j=0}^3 \frac{1}{2}|j\rangle|\text{bin}(a_j)\rangle$
Generally, if we want to prepare a specific quantum state, it could be done using both amplitude encoding and qRAM.
In amplitude encoding, you store information in amplitudes of a quantum state. An example of that could be for ex. simple Deutsch-Jozsa algorithm, where the computational result is stored in the amplitude of control qubit, and we process it to retrieve that information.
QRAM is a way of storing binary data and a querying model allowing to answer queries using superposition.
A post on state of the art of quantum memories.
IBM quantum challenge in 2020 had a useful introduction into QRAM and programing it with qiskit.