مهندس کوانتومی

24. تخمین فاز

24.1مقدارهای ویژه

تخمین فاز حل می‌کند: با یکانی U و بردار ویژه‌اش |u⟩، مقدار ویژه را تخمین بزنید. چون U یکانی است همهٔ مقدارهای ویژه روی دایرهٔ واحدند — U|u⟩ = λ|u⟩ با |λ| = 1 — پس هر مقدار ویژه λ = e^{2πiφ} است برای فازی φ ∈ [0, 1). تخمین λ یعنی تخمین یک عدد حقیقی φ، کسری از یک دور کامل. محدودیت به عملگرهای یکانی در عمل محدودیت نیست: هر عملگر هرمیتی H را می‌توان توان داد، e^{−iHt} یکانی است و فازهایش مقدارهای ویژهٔ H را حمل می‌کنند — دقیقاً مسیری که کاربردهای شیمی به همیلتونی‌ها می‌رسند.

24.2فازهای ویژه

فاز φ جایی است که فیزیک و الگوریتم‌ها زندگی می‌کنند. در شیمی، e^{−iHt} فاز ویژهٔ φ = −E·t/(2π) برای انرژی E دارد، پس تخمین فاز در زمان تحول معلوم t، همان E را می‌دهد. در الگوریتم شور، نگاشت ضرب‌در-a روی حالت‌های دوره، فازهای ویژهٔ s/r دارد — گویا، با مرتبهٔ r در مخرج؛ برای همین کسر مسلسل می‌تواند r را پس بکشد. فازهای ویژه همان چیزی‌اند که تداخل‌سنج‌ها در سنجش دقیق کوانتومی (metrology) اندازه می‌گیرند و QPE نسخهٔ الگوریتمیِ همان خوانش فاز است. در همهٔ حالت‌ها همان دفترداری: فازها کسرهایی از یک دورند و دورها شمردنی‌اند.

24.3یکانی‌های کنترل‌شده

مدار به‌ازای هر کیوبیت شمارش k، اعمال کنترل‌شدهٔ U^{2^k} را لازم دارد. توان‌ها با مربع‌کردن مکرر (repeated squaring) ساخته می‌شوند: U² = U·U، U⁴ = (U²)² و الی آخر — پس U^{2^k} فقط یک «مربع» فراتر از U^{2^{k−1}} هزینه دارد و برای U ساختاردار (مثل ضرب پیمانه‌ای) کل خانواده کار را شریک می‌شوند. ثبات شمارش t کیوبیت دارد که هر یک یک توان را کنترل می‌کند؛ ثبات بردار ویژه در طول مدار |u⟩ را نگه می‌دارد. در الگوریتم شور همین بلوک — توان‌رسانی پیمانه‌ای (modular exponentiation) — تقریباً تمام هزینهٔ مدار است: O(n³) گیت به‌طور ساده‌انه، O(n²·polylog n) با ضرب سریع. بقیهٔ QPE ارزان است.

24.4QFT وارونه

پس از توان‌های کنترل‌شده، ثبات شمارش (1/√2^t)·Σ_k e^{2πi·k·φ}|k⟩ را نگه می‌دارد — دقیقاً حالتی که QFT آن یک قلهٔ منفرد در 2^t·φ است. QFT وارونه را روی ثبات شمارش اعمال کنید و اندازه بگیرید:

counting:    |0>^t ──H^⊗t───●────────●────⋯────●───[QFT†]───measure: m ≈ 2^t·φ
                           │        │         │
eigenstate:   |u⟩ ─────────U^(2^0)──U^(2^1)──⋯──U^(2^(t-1))──    U|u⟩ = e^{2πiφ}|u⟩

اگر φ دقیقاً k/2^t برای عدد صحیح k باشد، خروجی با قطعیت k است. اگر نه — حالت واقع‌بینانه — احتمال روی نزدیک‌ترین اعداد صحیح به 2^t·φ جمع می‌شود، با دنباله‌هایی که ۲۴.۵ توصیفشان می‌کند. یک اندازه‌گیریِ t بیتی حدود t بیت از فاز را می‌خرد.

24.5دقت

کران استاندارد: برای φ دقیق تا 2^{−m} با احتمال دست‌کم 1−ε، از t = m + ⌈log₂(2 + 1/(2ε))⌉ کیوبیت شمارش استفاده کنید — O(log(1/ε)) کیوبیت اضافه دنباله‌های قله را می‌خوابانند. وقتی φ دقیقاً در t بیت نمایش‌پذیر است، احتمال موفقیت ۱ است؛ وقتی نه، هر shot در بدترین حالت با احتمال ≈ 4/π² (افست نصف خانه) روی نزدیک‌ترین عدد صحیح می‌نشیند و چند shot با رأی اکثریت درستش می‌کند. یا به‌جای کیوبیت، shot خرج کنید: تخمین را تکرار کنید و میانه بگیرید. دقت، مثل همیشه، سطر بودجه است — شما انتخاب می‌کنید کجا بپردازید.

24.6منابع لازم

برای تخمین m بیتی با t کیوبیت بشمارید: t کیوبیت شمارش به‌علاوهٔ ثبات بردار ویژه؛ t اعمال کنترل‌شدهٔ U^{2^k} که ساختار را شریک‌اند و جمعشان نزدیک t برابر هزینهٔ یک U است؛ یک QFT وارونه با O(t²) گیت، ناچیز؛ و O(1/ε) تکرار اگر به‌جای کیوبیت shot خرج کنید. قلم غالب همیشه U است. در شور، U ضرب پیمانه‌ای است (۲۴.۳). در شیمی، U همان e^{−iHΔt} تراکم‌شده (Trotterized) با صدها تا میلیون‌ها دوران پائولی در هر گام، و گلوگاه واقعی نه U بلکه آماده‌سازی بردار ویژه با هم‌پوشانی ۱ است — آماده‌سازی بد، تکرارهایی به نسبت 1/|⟨ψ|u⟩|² هزینه دارد. منابع را حول بردار ویژه برنامه‌ریزی کنید، نه QFT.

24.7کاربردها

یافتن مرتبه (شور، ۲۶): فاز ویژهٔ s/r یکانی ضرب پیمانه‌ای را تخمین بزنید، r را با کسر مسلسل بازیابی کنید. شیمی: انرژی‌های حالت پایه و برانگیخته از e^{−iHt} — پراستنادترین مسیر به مزیت کوانتومی مفید، گره‌خورده به آماده‌سازی حالت. سنجش دقیق کوانتومی (metrology): QPE خوانش بهینهٔ فاز است و به حد هایزنبرگ 1/t می‌رسد نه حد کوانتومی استاندارد 1/√t. جبر خطی: تخمین مقدار ویژه هستهٔ الگوریتم‌های HHL-گونه برای دستگاه‌های خطی. شمارش کوانتومی: QPE را روی عملگر گروور اجرا کنید تا تعداد آیتم‌های نشانه‌گذاری‌شده را بشمارید (۲۵.۶). Primitiveی این‌قدر بازکاربردنی است که معنای واقعی «مهندسی‌گرا» در طراحی الگوریتم همین است.

import numpy as np
t, phi = 8, 0.685
T = 2 ** t
k = np.arange(T)
cnt = np.exp(2j * np.pi * k * phi) / np.sqrt(T)           # پس از زنجیرهٔ U^(2^k)
F = np.exp(2j * np.pi * np.outer(k, k) / T) / np.sqrt(T)  # ماتریس QFT
p = np.abs(np.conj(F) @ cnt) ** 2                          # QFT وارونه، قاعدهٔ بورن
top = np.argsort(p)[::-1][:2]
print([(m, round(p[m], 3)) for m in top], "-> phi ≈", top[0] / T)