9. یک کیوبیت
9.1بیت کلاسیک و پیادهسازیهای فیزیکیاش
از آنچه میدانید شروع کنید. بیت کلاسیک یکی از دو مقدار را نگه میدارد و معنایش مستقل از حامل فیزیکیاش است: سیم ۵ ولت، دومین مغناطیسی، تلهٔ بار، ترانزیستور «۳ نانومتری» با چند صد اتم کانال. مهندسی نرخ خطای بیت را به حدود ۱۰⁻¹⁸ در هر عملیات رسانده است با دفنکردن فیزیک زیر انتزاع: حاشیههای ولتاژ، ECC در DRAM و بازسازی غیرخطی سطوح منطقی در CMOS، یک دستگاه فیزیکی نویزی را مثل نماد ریاضیِ تمیز رفتار میکنند. دو ویژگی برای تقابل پیشِرو اهمیت دارد: میتوانید بیت را آزادانه کپی کنید و میتوانید آن را بدون تغییر بخوانید. هر دو مثل حق ذاتی اطلاعات به نظر میرسند. مکانیک کوانتوم هر دو را لغو میکند و بخشهای بعد نشان میدهند چه مقدار از آنها باقی میماند.
9.2کیوبیت و حالتهای پایهٔ |0⟩ و |1⟩
کیوبیت (بیت کوانتومی) یک سامانهٔ کوانتومی دومسطحی است: اسپین الکترون، دو تراز انرژی پایین یک مدار ابررسانا، دو حالت درونی یک یون. حالتش بردار واحدی در فضای مختلط دوبعدی است که در پایهٔ محاسباتی نوشته میشود |ψ⟩ = α|0⟩ + β|1⟩. حالتهای پایه، تراز پایه و برانگیختهاند — همانهای کلاسیک 0 و 1 — و کیوبیت آمادهشده در |0⟩ یا |1⟩ مثل بیت رفتار میکند. تعمیم این است که α و β میتوانند همزمان ناصفر باشند. توجه کنید کیوبیت چه نیست: بیتای که «همزمان 0 و 1 است» به هر معنای خواندنی. یک بردار است؛ خواندنش (اندازهگیری، فصل ۱۱) توصیف را با احتمالهای |α|² و |β|² به یک نتیجه فرومیریزد.
9.3برهمنهی و دامنهها
برهمنهی یعنی حالت ترکیب وزندار α|0⟩ + β|1⟩ است؛ وزنها α و β دامنههایند — اعداد مختلط، نه احتمال. قاعدهٔ بورن تبدیلشان میکند: اندازهگیری در پایهٔ محاسباتی، 0 را با احتمال |α|² و 1 را با احتمال |β|² میدهد. چرا اعداد مختلط؟ چون دامنهها جمع میشوند و تداخل میکنند: دو مسیر به یک نتیجه میتوانند مثل موج همدیگر را حذف کنند، کاری که احتمال کلاسیک هرگز نمیکند. آن تداخل موتور هر الگوریتم کوانتومی است (بخش هفتم). یک مرز ذهنی مفید: همیشه |α|² + |β|² = 1، پس برهمنهی ظرفیت اطلاعاتی را زیاد نمیکند — یک کیوبیت در هر اندازهگیری به یک پرسش بله/خیر جواب میدهد. برهمنهی «اطلاعات بیشتر ذخیرهشده» نیست؛ دینامیکی غنیتر برای محاسبه با آن است.
9.4نرمالسازی و فاز سراسری
دو ظرافت که در کد ارزان مدیریت میشوند. نرمالسازی: |α|² + |β|² = 1، پس بردار حالت یک درجه آزادی حقیقی افزون دارد؛ شبیهسازها آن را صریحاً اعمال میکنند — psi /= np.linalg.norm(psi) — چون گیتهایی مثل H فقط روی ورودی نرمالیزه نرم را حفظ میکنند و حالت نانرمال بیسروصدا احتمالهایی تولید میکند که جمعشان ۰٫۹۷ میشود و مزخرفات مشابه. فاز سراسری: ضرب کل حالت در عدد مختلط با اندازهٔ واحد، مثلاً e^{iπ/4}|ψ⟩، هیچ چیز مشاهدهپذیری تغییر نمیدهد: هر احتمال و ارزش مورد انتظار از انقباضهای نوع ⟨ψ|ψ⟩ میآید که فاز حذف میشود. پس حالتهایی با فاز سراسری مشترک یک حالت فیزیکیاند. در شبیهساز بیضرر است؛ در سختافزار یعنی کالیبراسیون میتواند از فاز کلی چشمپوشی کند — سادهسازی واقعیای که خانوادهٔ گیتهای فاز (۱۰.۳) از آن بهره میگیرد.
9.5فاز نسبی
آنچه فیزیکی است، فاز نسبی میان دامنههاست: آرگومان عدد مختلط β/α. |0⟩ + |1⟩ و |0⟩ − |1⟩ آمار اندازهگیری یکسانی در پایهٔ محاسباتی دارند — هر دو ۵۰–۵۰ — اما حالتهای متفاوتاند و با اندازهگیری در پایهٔ X (۱۱.۳) قابل تفکیکاند، جایی که آنها بردار ویژه با مقدار ویژهٔ +1 و −1اند. فاز نسبی جایی است که اطلاعات کوانتومی از مشاهدهٔ سرسری پنهان میشود، و سطح کنترل تداخل است: الگوریتمها فازهای نسبی را با گیتها (Z، S، T، Rz) هدایت میکنند و سپس با H تفاوت فازها را به تفاوت احتمال نتیجه تبدیل میکنند. در تصویر بلاخِ پایین، فاز نسبی طول جغرافیایی است؛ شما مدام طولها را دستکاری و عرضها را میسنجید. این عدمتقارن بافت روزمرهٔ برنامهنویسی کوانتومی است.
9.6احتمالهای اندازهگیری
برای حالت α|0⟩ + β|1⟩، اندازهگیری در پایهٔ محاسباتی p(0) = |α|² و p(1) = |β|² میدهد. مثالهایی که باید تا سطح رفلکس درونیسازی شوند: |0⟩ → (1, 0)؛ (|0⟩+|1⟩)/√2 → (½, ½)؛ (|0⟩+i|1⟩)/√2 → (½, ½) — همان احتمالهای حالت قبلی، حالتی متفاوت، همانطور که ۹.۵ وعده داد؛ (√3|0⟩ + |1⟩)/2 → (¾, ¼). یک اندازهگیری یک بیت برمیگرداند و برهمنهی را نابود میکند؛ احتمالها فقط طی آمادهسازی و اندازهگیری مکررِ یکسان آشکار میشوند — shotها. به همین دلیل بنچمارکهای کوانتومی آماریاند و ۱٬۰۰۰ shot حدود دقت ±۱٫۵٪ به ازای هر احتمال میدهد (۱۱.۵). هر خواندن سختافزاری در این کتاب — IBM، Google، تلهٔ یون — دقیقاً همین را تولید میکند: شمار فراوان shot، یک هیستوگرام.
import numpy as np
def probs(psi):
return np.abs(psi)**2
states = {
"|0>": np.array([1, 0], dtype=complex),
"|+>": np.array([1, 1], dtype=complex) / np.sqrt(2),
"|+i>": np.array([1, 1j], dtype=complex) / np.sqrt(2),
"(3|0>+|1>)/2": np.array([np.sqrt(3), 1], dtype=complex) / 2,
}
for name, psi in states.items():
psi = psi / np.linalg.norm(psi)
p = probs(psi)
print(f"{name:12s} p(0)={p[0]:.3f} p(1)={p[1]:.3f}")9.7کرهٔ بلاخ
چون فاز سراسری بیاهمیت است، حالت کیوبیت دو درجهٔ آزادی حقیقی دارد و هر حالت خالص به نقطهای روی کرهٔ بلاخ نگاشت میشود — کرهٔ واحدی با |0⟩ در قطب شمال، |1⟩ در قطب جنوب، و نقاط استوایی (|0⟩ ± |1⟩)/√2 و (|0⟩ ± i|1⟩)/√2 در طولهای اصلی. برای حالت α|0⟩ + β|1⟩، بردار را بنویسید cos(θ/2)|0⟩ + e^{iφ} sin(θ/2)|1⟩؛ مختصات بلاخ (sin θ cos φ، sin θ sin φ، cos θ) هستند. این نگاشت میکروسکوپ مهندس است: برهمنهی عرض جغرافیایی دور از قطبها، فاز نسبی طول جغرافیایی، و اندازهگیری در پایهٔ Z با احتمال cos²(θ/2) صفر را برمیگرداند. حالتهای مخلوط درون کرهاند، با شعاع Tr(ρ²) — نویز بردار را به مرکز میکشد که همان قطبشزدایی است.
z
| |0> (theta = 0)
| /
| / theta
| / |psi> = cos(theta/2)|0> + e^{i phi} sin(theta/2)|1>
|/_____ y
/ \ |+i> at phi = +90
/ \
x |+> at phi = 0 |1> at theta = pi (south pole)9.8چرخشها و شهود هندسی
هر گیت تککیوبیتی یک چرخش بردار بلاخ حول محوری است (تا فاز سراسریِ نامرئی) — این همان قرائت هندسی فصل ۱۰ است. گیتهای چرخش Rx(θ)، Ry(θ)، Rz(θ) بردار بلاخ را به اندازهٔ θ حول محورهای x و y و z میچرخانند. دو شهود را همین حالا بسازید. نخست، گیت هادامارد که جبریاش ماتریسی از ½هاست، هندسی یک چرخش ۱۸۰ درجه حول محور مورب (x+z)/√2 است: قطبها را با استوا جابهجا میکند — دقیقاً چرایی تبدیل حالتهای پایهٔ Z و X با آن. دوم، دو چرخش حول محورهای غیرموازی همهٔ چرخشهای ممکن را تولید میکنند — و به همین دلیل یک جفت مینیمال مثل Rz و √X برای مجموعهٔ گیت سختافزار کافی است (۱۰.۶). مهندسان کالیبراسیون واقعاً به زاویه فکر میکنند: پالس بدتنظیم یعنی «چرخش ۳ درجه خطا دارد».