การใช้งานระดับประตูของ Eigenvalue-Inversion ใน HHL
ฉันกำลังพยายามทำความเข้าใจว่าขั้นตอนการผกผันค่าลักษณะเฉพาะในระดับเกตทำงานอย่างไรในอัลกอริทึม 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-bit ของมุม $\theta$และ $\sigma_y$ เมทริกซ์ Y Pauli
คำถามของฉันคือมุมการหมุนเป็นอย่างไร $\widetilde{\theta}$ สำหรับการรวมกัน $U_\theta$ คำนวณ / ประยุกต์โดยไม่มีความรู้เบื้องต้นเกี่ยวกับค่าลักษณะเฉพาะ $\lambda_j$ ของเมทริกซ์ระบบ $A$เหรอ?
ฉันเข้าใจว่ารัฐ - เวกเตอร์ $|\widetilde{\theta} \rangle$ ได้รับในขั้นตอนก่อนหน้าของอัลกอริทึมโดยการแยกค่าลักษณะเฉพาะ $|\lambda_j \rangle$ ของ $A$ใช้ QPE (จากนั้นใช้ฟังก์ชันผกผัน + arcsin ตามที่อธิบายไว้ที่นี่ ) แต่ฉันไม่แน่ใจว่ามุมเหล่านี้ใช้เป็นพารามิเตอร์สำหรับประตูหมุนควบคุมได้อย่างไร (พารามิเตอร์เลขชี้กำลังใน$U_\theta$.)
FYI ฉันเห็นโพสต์อื่นที่ระบุว่า: "คุณ ... ... มี (อย่างน้อยก็เป็นค่าประมาณที่ดี) ของคุณที่บันทึกไว้ในทะเบียนหากคุณควบคุมการลงทะเบียนนั้นคุณสามารถใช้เพื่อตัดสินใจได้ มุมของการหมุนของ eigenvector แต่ละตัว "
ดังนั้นคำถามของฉันคือวิธีที่คุณทำ "ใช้มัน [ลงทะเบียนที่มี$|\widetilde{\theta} \rangle$] เพื่อกำหนดมุมของการหมุน [$\widetilde{\theta}$ ใน $\exp$ ฟังก์ชันของ $U_\theta$] "?
ขอบคุณ!
คำตอบ
การใช้รีจิสเตอร์เพื่อกำหนดมุมการหมุนหมายถึงสิ่งต่อไปนี้: คุณมีรีจิสเตอร์ $|\tilde{\theta}\rangle$ (ประกอบด้วยมากกว่าหนึ่ง qubit) และคุณใช้การหมุนเวียนของรีจิสเตอร์อื่นที่ควบคุมค่าของ qubits ของ $|\tilde{\theta}\rangle$. การหมุนเวียนที่แตกต่างกันที่คุณใช้ส่งผลให้มีการใช้งานฟังก์ชันต่างๆในแอนซิลลาควิตของคุณ แต่นั่นอาจเป็นเรื่องที่คุณรู้อยู่แล้ว
คำถามเกี่ยวกับการหมุนเวียนที่ต้องทำเพื่อใช้ฟังก์ชันเฉพาะนั้นซับซ้อนกว่ามากและฉันไม่ทราบวิธีแก้ปัญหาทั่วไปใด ๆ ครั้งหนึ่งQiskitมีการใช้งาน HHL เป็นของตัวเอง แต่ฉันไม่รู้ว่าจุดใดเป็นเรื่องทั่วไป อย่างไรก็ตามมีตัวอย่างอื่น ๆ ที่ "ง่าย" ในการนำไปใช้เช่นฟังก์ชันการผกผันค่าลักษณะเฉพาะที่จำเป็นสำหรับ HHL ในบทความนี้ผู้เขียนใช้การประมาณของรูทีนย่อย eigenvalue inversion (โค้ดในQuilสามารถพบได้ในที่เก็บ GitLab ที่เกี่ยวข้อง) ที่แน่นอนในกรณีของค่าลักษณะเฉพาะที่เป็นพาวเวอร์ของ 2 สาเหตุที่มันถูกต้องสำหรับพาวเวอร์ของ 2 เนื่องจากในกรณีนั้นการผกผันสามารถเขียนเป็นการรวมกันของการแลกเปลี่ยนบิตดังนั้นรูทีนย่อยการผกผันค่าลักษณะเฉพาะจึงเป็นการรวบรวม ของประตู SWAP ที่ควบคุมได้ (การแสดงภาพของวงจรอยู่ในรูปที่ 3 ในเอกสารนี้ ) แต่อย่างที่ฉันได้กล่าวไปก่อนหน้านี้ฉันยังไม่ทราบถึงวิธีการทั่วไปในการนำคลาสของฟังก์ชันขนาดใหญ่มาใช้จนถึงตอนนี้