Triển khai cấp cổng của Eigenvalue-Inversion trong HHL

Dec 28 2020

Tôi đang cố gắng hiểu cách triển khai cấp cổng của bước nghịch đảo giá trị eigenvalue trong thuật toán HHL hoạt động như thế nào.

Tôi đang theo dõi tài liệu tham khảo này , trong đó nó được nêu (Bổ đề 4) rằng điều này có thể được thực hiện bằng cách sử dụng các phép quay có điều khiển:

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

Ở đâu $\widetilde{\theta}$ là biểu diễn chính xác hữu hạn n bit của góc $\theta$, và $\sigma_y$ ma trận Y Pauli.

Câu hỏi của tôi là, các góc quay như thế nào $\widetilde{\theta}$ cho đơn nhất $U_\theta$ được tính toán / áp dụng mà không có kiến ​​thức tiên nghiệm về các giá trị riêng $\lambda_j$ của ma trận hệ thống $A$?

Tôi hiểu rằng vector trạng thái $|\widetilde{\theta} \rangle$ thu được trong bước trước của thuật toán bằng cách trích xuất các giá trị riêng $|\lambda_j \rangle$ của $A$bằng cách sử dụng QPE (và sau đó áp dụng hàm nghịch đảo + arcsin như được mô tả ở đây ), nhưng tôi không chắc các góc này cũng được áp dụng như thế nào làm tham số cho các cổng xoay có điều khiển (tham số mũ trong$U_\theta$.)

FYI, tôi đã thấy bài đăng khác này có ghi: "Bạn ... ... có (ít nhất là gần đúng) các giá trị riêng của bạn được ghi trên một sổ đăng ký. Nếu bạn kiểm soát sổ đăng ký đó, bạn có thể sử dụng nó để quyết định góc quay cho mỗi thiết bị định vị. "

Vì vậy, câu hỏi của tôi là làm thế nào để bạn "sử dụng nó [thanh ghi chứa$|\widetilde{\theta} \rangle$] để quyết định góc quay [$\widetilde{\theta}$ bên trong $\exp$ chức năng của $U_\theta$] "?

Cảm ơn!

Trả lời

1 Alex Dec 28 2020 at 18:25

Sử dụng thanh ghi để quyết định góc quay có nghĩa là như sau: bạn có một thanh ghi $|\tilde{\theta}\rangle$ (bao gồm tiềm năng nhiều hơn một qubit) và bạn áp dụng các phép quay của một thanh ghi khác được kiểm soát trên giá trị của các qubit của $|\tilde{\theta}\rangle$. Các phép quay khác nhau mà bạn áp dụng dẫn đến các chức năng khác nhau được triển khai trên qubit ancilla của bạn. Nhưng điều đó có thể bạn đã biết.

Câu hỏi về cách quay nào để thực hiện để áp dụng một hàm cụ thể phức tạp hơn nhiều và tôi không biết bất kỳ giải pháp chung nào. Lần đầu tiên, Qiskit có cách triển khai HHL của riêng nó, nhưng tôi không biết nó là chung cho đến thời điểm nào. Tuy nhiên, có những ví dụ khác trong đó nó "dễ dàng" để thực hiện, ví dụ, chức năng đảo ngược giá trị eigenvalue cần thiết cho HHL. Trong bài báo này , các tác giả triển khai một chương trình con nghịch đảo giá trị gần đúng (mã trong Quilcó thể được tìm thấy trong kho lưu trữ GitLab được liên kết) chính xác trong trường hợp các giá trị riêng là lũy thừa của 2. Lý do tại sao nó chính xác cho lũy thừa của 2 là vì trong trường hợp đó, phép nghịch đảo có thể được viết dưới dạng kết hợp của các hoán đổi bit, vì vậy chương trình con nghịch đảo giá trị eigen là một tập hợp của các cổng SWAP được điều khiển (biểu diễn bằng hình ảnh của mạch trong Hình 3 trong bài báo này ). Nhưng, như tôi đã nói trước đây, cho đến nay tôi không biết về các cách chung để triển khai các lớp hàm lớn.