I am currently working on a project on a higher version of amplitude amplification and for that we want to store the initial state (which will be some sort of superposition) into a QRAM. Now we want to simulate the working of the algorithm and I am supposed to make a QRAM, but most of the papers which use QRAM as a subroutine have not shown implementation, furthermore the bucket brigade Quantum RAM is actually not able to give out a superposition of Quantum States which have been stored into a QRAM.

Ideally we want the QRAM to work something like this,

$$ \sum_{j=0}^{2^q-1} \alpha_j | \text{adr}_j \rangle|0\rangle \xrightarrow{\text{QRAM}} \sum_{j=0}^{2^q-1}\alpha_j |\text{adr}_j\rangle|m_j\rangle $$

Anyone who has any idea which QRAM will be able to query out a superposition of states stored in memory cells, please provide some reference. Any help is greatly appreciated!!

  • $\begingroup$ Where is $m_j$ in the input state? The way you've written it, it's like the QRAM is preparing it instead of retrieving it. Did you actually mean to write the input state as $|adr_j\rangle|0\rangle|m_0\rangle|m_1\rangle \dots |m_{2^q-1}\rangle$? $\endgroup$ Commented Sep 30, 2021 at 18:17
  • 1
    $\begingroup$ Also you didn't include the write operation. (If you don't need to write, you want a QROM not a QRAM. QROM is cheaper.) $\endgroup$ Commented Sep 30, 2021 at 18:20
  • $\begingroup$ @CraigGidney So yes I agree that we can use a QROM too, but due to some reason the prof I am working under wants QRAM(perhaps at a later stage we will be modifying the states too). But If you have any ideas how it can be done using QROM, please go aheah. The notation I have used can be seen in a lot of papers(arxiv.org/abs/2002.09340 one such paper) and the way I see it is, you input the superposition of address states and a 0 state for output qubit. But once it passes through the QRAM, the address qubits remain the same whereas the memory qubits contain the information in the cell. $\endgroup$ Commented Sep 30, 2021 at 18:26
  • $\begingroup$ Your prof explicitly said QROM was not good enough? It's common for people to use "QRAM" to ambiguously refer to a few different things, including QROM. $\endgroup$ Commented Sep 30, 2021 at 18:30
  • $\begingroup$ I totally get your point. If you have any idea how to query out a superposition of the states stored in QRAM. Please let me know $\endgroup$ Commented Oct 1, 2021 at 4:43

1 Answer 1


If you are looking for implementations of quantum memories, you can find a few in this QRAM library for Q#. I am not quite sure what you mean by the bucket brigade protocol is not able to readout entangled data, but as far as I understand you can do that with bucket brigade (we used it in this example that implements Grover's algorithm with a bucket brigade QRAM).

I agree with Craig, clarifying with your prof whether you need just read operations (QROM) or read/write (QRAM) is important here.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.