Cómo calcular efectivamente la rotación de valores propios en HHL
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
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 .