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$ Sep 30 '21 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$ Sep 30 '21 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$ Sep 30 '21 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$ Sep 30 '21 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$ Oct 1 '21 at 4:43

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, privacy policy and cookie policy

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