Cómo calcular efectivamente la rotación de valores propios en HHL

Dec 10 2020

En el algoritmo HHL, ¿cómo se hace eficientemente el$\lambda-$rotación controlada en el qubit auxiliar? Después de leer algunas respuestas, me parece que esto se puede hacer en dos pasos:

  • Primero, mapeamos$|\lambda\rangle\mapsto |\frac{1}{\pi}\arcsin(\frac{C}{\lambda})\rangle$, definiendo$|\frac{1}{\pi}\arcsin(\frac{C}{\lambda})\rangle$ser una representación binaria$|\frac{1}{\pi}\arcsin(\frac{C}{\lambda})\rangle$con$m$qubits
  • Luego realiza una rotación controlada.$U_y(|\theta\rangle \otimes |0\rangle)\mapsto |\theta\rangle \otimes \big(\cos(\theta)|0\rangle + \sin{(\theta})|1\rangle\big)$donde$U_y$es simple$$ U_y(|\theta\rangle \otimes |0\rangle) = \prod_{j=1}^m (I^{\otimes^m}\otimes R_y(2\pi\theta_j/2^j)) $$es decir, una secuencia de rotaciones controladas donde sucesivamente reducimos a la mitad el ángulo de rotación condicionalmente de los dígitos de la representación binaria de$\theta$.

Mi pregunta es la siguiente, ¿cómo se puede implementar de manera eficiente el primer paso en un entorno como Qiskit?

Respuestas

4 user96233 Dec 11 2020 at 19:24

Hay un nuevo enfoque que se fusionará pronto en qiskit terra ( aquí para el PR ) que utiliza la aproximación polinomial para calcular$\arcsin(C/\lambda)$, y asintóticamente esta sería la implementación eficiente.

En la práctica, si está resolviendo un$2\times 2$matriz o un sistema muy pequeño, sería mejor codificar las rotaciones.

La teoría y los análisis de error de este enfoque se explican en la Sección VI de este documento .