HHL에서 고유 값 반전의 게이트 수준 구현

Dec 28 2020

HHL 알고리즘에서 고유 값 반전 단계의 게이트 수준 구현이 어떻게 작동하는지 이해하려고합니다.

나는이 참조를 따르고 있는데, 여기에서 이것은 제어 된 회전을 사용하여 달성 될 수 있다고 명시되어 있습니다 (레마 4).

$$ 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) $$

어디 $\widetilde{\theta}$ 각도의 n 비트 유한 정밀도 표현입니다. $\theta$, 및 $\sigma_y$ Y Pauli 행렬.

제 질문은 회전 각도는 어떻습니까? $\widetilde{\theta}$ 단결을 위해 $U_\theta$ 고유 값에 대한 사전 지식없이 계산 / 적용 $\lambda_j$ 시스템 매트릭스의 $A$?

나는 상태 벡터가 $|\widetilde{\theta} \rangle$ 알고리즘의 이전 단계에서 고유 값을 추출하여 얻습니다. $|\lambda_j \rangle$$A$QPE를 사용하고 (그리고 여기에 설명 된대로 inverse + arcsin 함수를 적용 함 ), 제어 된 회전 게이트의 매개 변수로 이러한 각도가 어떻게 적용되는지 잘 모르겠습니다 (지수 매개 변수$U_\theta$.)

참고로, 나는이 다른 보았는가 포스트 가 언급된다. "당신은 ... (에 적어도 좋은 근사치)이 당신의 고유 값이 레지스터에 기록을 해당 레지스터를 제어 할 경우, 당신이 결정하는 데 사용할 수 있습니다 각 고유 벡터의 회전 각도. "

그래서 제 질문은 어떻게 "사용합니까?$|\widetilde{\theta} \rangle$] 회전 각도를 결정 [$\widetilde{\theta}$$\exp$ 기능 $U_\theta$] "?

감사!

답변

1 Alex Dec 28 2020 at 18:25

레지스터를 사용하여 회전 각도를 결정한다는 것은 다음을 의미합니다. 레지스터가 있습니다. $|\tilde{\theta}\rangle$ (잠재적으로 둘 이상의 큐 비트로 구성됨) 큐 비트의 값에 따라 제어되는 다른 레지스터의 회전을 적용합니다. $|\tilde{\theta}\rangle$. 적용하는 다른 회전으로 인해 Ancilla 큐 비트에서 다른 기능이 구현됩니다. 그러나 그것은 아마도 당신에게 이미 알려져있을 것입니다.

특정 기능을 적용하기 위해 어떤 회전을해야하는지에 대한 질문 은 훨씬 더 복잡하며 일반적인 해결책을 알지 못합니다. 한 번 Qiskit 은 자체 HHL 구현을 가지고 있지만 어느 시점까지 일반적인지 알 수 없습니다. 그러나 HHL에 필요한 고유 값 반전 함수와 같이 구현하기 "쉬운"다른 예가 있습니다. 에서는 이 논문 의 저자는 고유 반전 루틴의 근사치를 구현 (의 코드 Quil에서 발견 될 수있는 관련 GitLab 저장소) 2의 거듭 제곱 인 고유 값의 경우 정확합니다. 2의 거듭 제곱에 대해 정확한 이유는이 경우 반전이 비트 스왑의 조합으로 작성 될 수 있으므로 고유 값 반전 서브 루틴이 모음이기 때문입니다. 제어 된 SWAP 게이트의 수 (회로의 그림 표현은 이 백서의 그림 3에 있음 ). 그러나 이전에 말했듯이 지금까지 대규모 함수 클래스를 구현하는 일반적인 방법을 알지 못합니다.