Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply "tapering off qubits" technique of sections VII and VIII in https://arxiv.org/pdf/1701.08213.pdf #13

Open
ndattani opened this issue Apr 7, 2018 · 2 comments

Comments

@ndattani
Copy link

ndattani commented Apr 7, 2018

H2/STO-3G should become a 1-qubit problem, and the data in Table I of the paper can be reproduced. But we can explore far larger systems that are closer to what classical quantum chemists are interested in.

@amccaskey
Copy link
Member

This has been implemented for Jordan Wigner in https://github.com/ORNL-QCI/xacc-vqe/blob/master/task/tasks/DiagonalizeTask.cpp

However, I am still having issues with Bravyi-Kitaev. My strategy has been to enumerate all bit strings with NELEC ones set - these form the basis for my Hamiltonian subspace that I will diagonalize. As stated this works for JW, however for BK I build up the occupation -> bravyi-kitaev basis transformation (Eq 50 of tapering qubits) and apply it to all NELEC eigenstates to produce corresponding BK eigenstates. I then build up the Hamiltonian matrix elements in this basis and diagonalize.

This works for problems that have NQubits as a power of 2. It does not work for problems that have NQubits not a power of 2 (for example H2 6-31++G, NQubits=12). Seeley, Love paper says in these cases to take the submatrix of the next largest BK transformation matrix 2^m > M and pull out the submatrix that corresponds to the number of orbitals you have. So clearly something wrong is happening there that I can't figure out.

To test the matrix construction part, I have brute-force built up the entire matrix for the H2 6-31++G 12 qubit problem and diagonalized that, and received the correct ground state energy.

So something is missing in my understanding of the Occupation -> BK basis transformation when NQubits is not a power of 2.

@ndattani
Copy link
Author

Thanks Alex,
It is already nice that it's working for JW, though JW for Li2 in an aug-cc-pCV6Z basis set already has more than 1000 spin orbitals, and will therefore have 1000-local terms, whereas BK is O(log(M))-local and may therefore only have log_2(1000) = 10-local terms for the same molecule.

10-local seems much better than 1000-local, so I do think there's value to doing the tapering in the BK picture, since BK would probably be used for most practical applications.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants