HHL'de Eigenvalue-Inversion'ın kapı düzeyinde uygulaması
HHL algoritmasındaki özdeğer ters çevirme adımının geçit seviyesinde uygulanmasının nasıl çalıştığını anlamaya çalışıyorum.
Bunun kontrollü rotasyonlar kullanılarak gerçekleştirilebileceğinin belirtildiği (Lemma 4) bu referansı takip ediyorum :
$$ U_\theta: |\widetilde{\theta} \rangle |0 \rangle \rightarrow |\widetilde{\theta} \rangle \left(\cos \widetilde{\theta} |0\rangle + sin \widetilde{\theta} |1 \rangle \right ) $$
$$U_\theta = \sum_{\widetilde{\theta} \in \{0,1\}^n} |\widetilde{\theta}\rangle \langle \widetilde{\theta}| \otimes \exp \left(-i \widetilde{\theta} \sigma_y \right) $$
nerede $\widetilde{\theta}$ açının n bitlik sonlu kesinlik temsilidir $\theta$, ve $\sigma_y$ Y Pauli matrisi.
Sorum şu, dönüş açıları nasıl $\widetilde{\theta}$ üniter için $U_\theta$ özdeğerlerin önceden bilinmeden hesaplanmış / uygulanmış $\lambda_j$ sistem matrisinin $A$?
Devlet vektörünün $|\widetilde{\theta} \rangle$ algoritmanın önceki adımında özdeğerlerin çıkarılmasıyla elde edilir $|\lambda_j \rangle$ nın-nin $A$ using QPE (and then applying an inverse + arcsin function as described here), but I am not sure how are these angles also applied as the parameters for the controlled-rotation gates (exponent parameter in $U_\theta$.)
FYI, I did see this other post where it is stated: "You... ...have (at least a good approximation to) your eigenvalues recorded on a register. If you control off that register, you can use it to decide the angle of the rotation for each eigenvector."
So my question is how do you "use it [the register containing $|\widetilde{\theta} \rangle$] to decide the angle of the rotation [$\widetilde{\theta}$ in the $\exp$ function of $U_\theta$]"?
Thanks!
Yanıtlar
Using the register to decide the angle of rotation means the following: you have a register $|\tilde{\theta}\rangle$ (potansiyel olarak birden fazla kübitten oluşur) ve kübitlerinin değeri üzerinde kontrol edilen başka bir kütüğün rotasyonlarını uygularsınız. $|\tilde{\theta}\rangle$. Uyguladığınız farklı rotasyonlar, ancilla kübitlerinizde farklı işlevlerin uygulanmasına neden olur. Ama bu muhtemelen sizin tarafınızdan biliniyordu.
The question of which rotations to do for applying a specific function is much more complicated, and I am not aware of any general solution. For once, Qiskit has its own implementation of HHL, but I don't know up to which point it is general. There are however, other examples in which it is "easy" to implement, for instance, the eigenvalue inversion function required for HHL. In this paper, the authors implement an approximation of the eigenvalue inversion subroutine (the code in Quil
can be found in the associated GitLab repository) bu, 2'nin üsleri olan özdeğerler durumunda doğrudur. 2'nin üsleri için kesin olmasının nedeni, bu durumda ters çevirmenin bit takaslarının bir kombinasyonu olarak yazılabilmesidir, bu nedenle özdeğer ters çevirme alt yordamı bir koleksiyondur Kontrollü SWAP kapılarının (devrenin resimli bir temsili bu yazıda Şekil 3'tedir ). Ancak, daha önce de söylediğim gibi, şimdiye kadar büyük işlev sınıflarını uygulamanın genel yollarından haberdar değilim.