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

5. حاصل‌ضرب تانسوری

5.1چرا بردارهای معمولی کافی نیستند

یک کیوبیت، بردار دومؤلفه‌ای است؛ دو کیوبیتِ مستقل، دو بردار دومؤلفه‌ای؛ اما دو کیوبیتِ در تعامل، یک سیستم واحد است — و فضای حالتش ۴-بعدی است، نه ۲ یا ۳. چرا؟ چون «کنار هم گذاشتن» سیستم‌های کوانتومی، جمع فضاها نیست، ضرب آن‌هاست (بخش 12.1 جزئیات فیزیکی و مثال‌ها را می‌دهد). این فصل ابزار آن ضرب را می‌سازد: ⊗. بردار معمولی ناظر کلاسیک تصور می‌کند «دو سیستم، دو تکه اطلاعات» باشد؛ مکانیک کوانتومی می‌گوید «دو سیستم، ضرب تانسوری فضاها» — و از همین عدم‌تقارن، هر دو چیز (قدرت نمایی و شبیه‌سازی‌ناپذیری) می‌آیند. بدون ⊗، نه درهم‌تنیدگی هست، نه دروازهٔ دوکیوبیتی، نه QFT — هیچ‌چیز بعد از فصل ۴.

5.2سیستم‌های مرکب

قاعدهٔ پستولیت: فضای حالت سیستم مرکب A⊗B، حاصل‌ضرب تانسوری فضاهای A و B است — ℂᵐ ⊗ ℂⁿ = ℂ^{mn}. برای کیوبیت‌ها: ۲⊗۲=۴، و n کیوبیت، 2ⁿ. چرا ضرب و نه جمع؟ چون حالت‌های پایهٔ مرکب، جفت‌های (پایهٔ A، پایهٔ B) هستند — |a⟩⊗|b⟩ — و شمار جفت‌ها mn است؛ و دامنه‌ها روی جفت‌ها زندگی می‌کنند (قاعدهٔ برن مرکب: احتمال نتیجهٔ (a,b) = |دامنهٔ (a,b)|²). حالت‌های مرکب دو دسته‌اند: جداشدنی (حاصل‌ضرب تانسوری دو حالت — 5.7) و جدانشدنی/درهم‌تنیده (5.8) — و این تقسیم، مهم‌ترین ساختار فضای مرکب است. فصل ۱۳ درهم‌تنیدگی را کامل کاوید؛ این‌جا فقط ابزار را می‌سازیم که بتوانش نوشت.

5.3نشانه‌گذاری حاصل‌ضرب تانسوری

|ψ⟩⊗|φ⟩ گاهی |ψ⟩|φ⟩ و گاهی |ψφ⟩ فشرده می‌شود؛ برای رشته‌های بیتی، |01⟩ = |0⟩⊗|1⟩. قواعد جبری (فضای برداری بودن ⊗ در هر آرگومان): جمع توزیع می‌شود، (|u⟩+|v⟩)⊗|w⟩ = |u⟩⊗|w⟩ + |v⟩⊗|w⟩؛ اسکالر بیرون می‌آید، (c|u⟩)⊗|v⟩ = c(|u⟩⊗|v⟩)؛ و ترتیب اجزا قراردادی اما پایدار است — |φ⟩⊗|ψ⟩ همان حالتِ دیگری است (جابه‌جایی مؤلفه‌ها، جایگشت مختصات است، نه هیچ چیز فیزیکی). برای عملگرها: (A⊗B)(|u⟩⊗|v⟩) = Au⊗Bv — هر عملگر روی «قلمرو خودش» عمل می‌کند؛ و (A⊗B)(C⊗D) = AC⊗BD. همین دو قاعده، تمام جبر مدارهای چندکیوبیتی است.

5.4حاصل‌ضرب کرونکر

پیاده‌سازی ⊗ در numpy، np.kron است: برای بردارهای u (بُعد m) و v (بُعد n)، خروجی برداری mn-بعدی با مؤلفهٔ (i·n+j) = uᵢ·vⱼ. مثال دو کیوبیت: np.kron([1,0], [0,1]) = [0,1,0,0] = |01⟩. برای ماتریس‌ها: A⊗B بلوکی است با بلوک aᵢⱼ·B. هشدار ترتیب: np.kron(a, b) — مؤلفه‌های a «کندتر» می‌چرخند (بلوک‌های درشت)؛ این انتخاب، a را کیوبیت «پرارزش‌ترین» می‌گیرد — بزرگ-اندیان. Qiskit کوچک-اندیان است (کیوبیت 0 کم‌ارزش‌ترین) — و همین دو قراردادِ معتبر، منبع شمارهٔ یک باگ شبیه‌سازی است (5.10). قاعده: یک‌بار انتخاب کنید، در docstring بنویسید و یک آزمون بنویسید که انتخاب‌تان را قفل کند.

5.5ابعاد حاصل‌ضرب تانسوری

dim(U ⊗ V) = dim(U)·dim(V) — ضرب، نه جمع. برای کیوبیت‌ها: هر کیوبیت، بُعد را ۲ برابر می‌کند؛ n کیوبیت، 2ⁿ. پیامد حافظه‌ای که فصل ۱۷ شخصاً می‌سنجد: بردار حالت n کیوبیت 16·2ⁿ بایت است (complex128) — ۲۰ کیوبیت ۱۶ مگابایت، ۳۰ کیوبیت ۱۷ گیگابایت، ۴۰ کیوبیت ۱۷ ترابایت. همین رشد، مرز شبیه‌سازی کلاسیک و — از سوی دیگر — منبع «فضای الگوریتمی» است که ماشین کوانتومی بومی کاوش می‌کند. برای عملگرها هم ابعاد مربع می‌شود: عملگر n-کیوبیتی کامل، 2ⁿ×2ⁿ (فقط تا n≈۱۳ مادی‌شدنی) — و به همین دلیل، مدارها هرگز با ماتریس کامل شبیه‌سازی نمی‌شوند بلکه با اعمال موضعی (5.12).

5.6حالت‌های چندکیوبیتی

حالت عمومی n کیوبیت: |ψ⟩ = Σ_{i=0}^{2ⁿ−1} αᵢ|i⟩ با Σ|αᵢ|² = 1 — برداری 2ⁿ-بعدی روی پایهٔ رشته‌های بیتی. هر رشتهٔ بیتی، نمایهٔ عددی دارد (3.11) و آرایهٔ numpy شما مستقیماً فهرست دامنه‌ها بر حسب این نمایه است — بین ریاضیات و کد، ترجمهٔ صفر-اصطکاک. حالت‌های جداشدنی، زیرمجموعهٔ نازکی از این فضا هستند (پارامترهای 2n در برابر 2ⁿ−2)؛ «حالت عمومی» تقریباً همیشه درهم‌تنیده است (12.4). برای کار روزمره: بسازید، چک نرمال بودن (np.linalg.norm(psi))، چک شکل (psi.shape == (2**n,)) — و بازنمایی قطبی دامنه‌ها (3.8) برای اشکال‌زدایی فازها. این بردار، تمام حقیقت حالت کوانتومی است؛ هر چیز دیگر (ماتریس چگالی، تصویرگرها) بازنمایی مشتق‌شده از همین است.

5.7حالت‌های جداشدنی

|ψ⟩ جداشدنی است اگر |ψ⟩ = |φ⟩⊗|χ⟩ نوشته شود — هر زیرسیستم حالت خودش را دارد و کل، «هم‌جمع» اجزاست. مثال: (α|0⟩+β|1⟩)⊗(γ|0⟩+δ|1⟩) حالتی ۴-بعدی است که مؤلفه‌هایش الگوی حاصل‌ضربی دارند: (αγ, αδ, βγ, βδ). جداشدگی ساختار کمی می‌دهد: توصیف با 2n پارامتر (به‌جای 2ⁿ)؛ عمل‌های موضعی مستقل؛ و بازتولید کامل از زیرسیستم‌ها. آزمون عددی برای دوقیوبیتی: تشکیل ماتریس ضرایب [[ψ00, ψ01],[ψ10, ψ11]] و چک رتبهٔ ۱ (det = 0 — «تست عمدگی» فصل ۱۳). جداشدگی، «کلاسیکی‌ترین» رژیم حالت مرکب است: نبود درهم‌تنیدگی یعنی امکان شبیه‌سازی کارا با جداسازی زیرسیستم‌ها (پایهٔ روش‌های شبکهٔ تانسوری، 5.14) و نبود مزیت نمایی الگوریتمی (بحث بخش هشتم).

5.8حالت‌های جدانشدنی

جدانشدنی یعنی هیچ تجزیه‌ای به حاصل‌ضرب تانسوری حالت‌های زیرسیستمی نیست: (|00⟩+|11⟩)/√2 جدانشدنی است (تست عمدگی: det ماتریس [[1/√2, 0],[0, 1/√2]] = 1/2 ≠ 0). جدانشدنی = درهم‌تنیدگی — موضوع کامل فصل ۱۳؛ این‌جا فقط جایگاه ریاضی‌اش: حالت‌های جدانشدنی، «بقیهٔ» فضای مرکب‌اند (تقریباً همهٔ بردارها)، توصیف محلی ندارند (هر زیرسیستم فقط آماری است — ماتریس چگالی کاهش‌یافته، 5.13) و منبع همهٔ پدیده‌های بدون قرینهٔ کلاسیک‌اند (بل، دوربری، رمزنگاری کوانتومی). از دید شبیه‌سازی: جدانشدنی یعنی عدم‌قابل‌فروکاست — نمی‌توان حالت را با تکه‌های کوچک بازنمایی کرد؛ بُعد مؤثر واقعاً 2ⁿ است. تقسیم جداشدنی/جدانشدنی، اسکناس اعتبار هر ادعای «این الگوریتم مقیاس‌پذیر است» است.

5.9حالت‌های پایهٔ محاسباتی

پایهٔ استاندارد فضای n-کیوبیتی: همهٔ رشته‌های بیتی |i⟩ برای i از 0 تا 2ⁿ−1 — هرکدام حاصل‌ضرب تانسوری حالت‌های تک‌کیوبیتی مطابق بیت‌ها. دوبه‌دو عمود و نرمال (پایهٔ متعامد-نرمالِ 3.19)؛ نمایهٔ i همان عدد دودویی رشته است. در numpy، حالت پایهٔ i، np.eye(2**n)[i] است (یا آرایهٔ صفر با یک 1 در جای i). اهمیت: قاعدهٔ برن مستقیم روی این پایه سوار است (احتمال نتیجهٔ i = |αᵢ|²)، اندازه‌گیری استاندارد Z یعنی نمونه‌گیری از این پایه، و اغلب الگوریتم‌ها (گروور، شور، QAOA) «جواب» را به‌صورت یکی از همین پایه‌ها آماده می‌کنند. حالت‌های پایه، محور هماهنگی میان ریاضی (فصل‌های ۳ و ۴)، کد (شاخص آرایه) و سخت‌افزار (نتایج اندازه‌گیری)‌اند.

5.10قراردادهای ترتیب پایه

برای رشتهٔ بیت b_{n−1}…b₀، دو قرارداد نمایه‌گذاری موجود است: بزرگ-اندیان (بیت چپ = پرارزش‌ترین، نمایه = Σ bₖ·2^{n−1−k}) و کوچک-اندیان (بیت راست = کم‌ارزش‌ترین، نمایه = Σ bₖ·2ᵏ — انتخاب Qiskit). هر دو کاملاً معتبرند؛ اختلاف فقط در نگاشت رشته↔نمایه است — اما ترکیب‌شان در یک کد، نتایج «قابل‌باور اما غلط» می‌دهد که فقط با مرجع دقیق آشکار می‌شود. تلهٔ خاص: np.kron به‌طور طبیعی بزرگ-اندیان است (اولین آرگومان = بلوک درشت = کیوبیت چپ)؛ خروجی qc قیسیت کوچک-اندیان است؛ ترجمهٔ بی‌دقت میان این دو، باگ کلاسیک پروژهٔ شبیه‌ساز (17.10) است. دفاع: تست واحدی که یک حالت نامتقارن شناخته‌شده (مثلاً H فقط روی کیوبیت 0) را از هر دو مسیر می‌سازد و برابری را ادعا می‌کند (16.11).

5.11عملگرهای تانسوری

A⊗B عملگری روی فضای مرکب است که روی فاکتور اول A و فاکتور دوم B عمل می‌کند؛ روی حالت جداشدنی، مؤلف‌به‌مؤلف: (A⊗B)(|u⟩⊗|v⟩) = Au⊗Bv — و با خطی بودن، روی همهٔ حالت‌ها (از جمله درهم‌تنیده) تعمیم می‌یابد. اعمال دروازهٔ تک‌کیوبیتی U روی کیوبیت k از n کیوبیت: I⊗…⊗I⊗U⊗I⊗…⊗I (U در جایگاه k) — در numpy با kron های تودرتو یا مؤثرتر با بازآرایی تانسوری (فصل ۱۷). جبر: (A⊗B)·(C⊗D) = AC⊗BD (وقتی ضرب‌ها تعریف‌شده باشند)؛ (A⊗B)† = A†⊗B†؛ یونیتی×یونیتی = یونیتی؛ هرمیتی×هرمیتی = هرمیتی. دروازه‌های دوکیوبیتی (CX، CZ) با الگوی جمع-انتخابگر ساخته می‌شوند (14.1) — عملگرهای تانسوری، آجرهای هر مدارند.

5.12عمل‌های موضعی

عمل موضعی، عملگری است که فقط روی زیرسیستمی از کل عمل می‌کند (5.11) و هویت روی بقیه. چرا مهم؟ چون (الف) هر دروازه در هر مدار، عمل موضعی است؛ و (ب) اعمال عددیِ کارآمد عمل موضعی، تفاوت میان شبیه‌ساز قابل‌استفاده و غیرممکن است: اعمال ماتریس کامل 2ⁿ×2ⁿ روی حالت، O(4ⁿ) است؛ اما عمل موضعی فقط جفت‌هایی از دامنه‌ها را که در بیت‌های مربوطه فرق دارند مخلوط می‌کند — O(2ⁿ) به‌ازای هر دروازه. فصل ۱۷ این را با tensordot/moveaxis پیاده می‌کند؛ این‌جا فقط چارچوب ذهنی: «دروازهٔ موضعی، جداسازی فاکتورهای فضا را می‌سازد» — و همان چیزی است که کد کلاسیک را از شبیه‌سازی مرتبهٔ n به مرتبهٔ 2^n به‌ازای گام می‌رساند.

5.13ردهای جزئی

رد جزئی روی زیرسیستم B، عملگر ترازوی A را می‌دهد: tr_B(|ψ⟩⟨ψ|) — «حاشیه‌گیری» آماری. برای حالت جداشدنی |φ⟩⊗|χ⟩، خروجی |φ⟩⟨φ| (چیزی از دست نمی‌رود)؛ برای درهم‌تنیده، خروجی آمیخته است: برای حالت بل (|00⟩+|11⟩)/√2، نتیجه I/2 — مخلوط ۵۰/۵۰ با اینکه کل خالص است؛ اطلاعات در همبستگی‌هاست، نه در اجزا. محاسبهٔ عددی: بازآرایی ماتریس 2ⁿ×2ⁿ به تانسوری (2,)*2n، جمع روی محورهای زیرسیستم B (np.trace تعمیم‌یافته با reshape) — الگوی کلاسیک که در فصل ۱۳ رسمی می‌شود. رد جزئی، درِ ورود به ماتریس چگالی (فصل ۳۰) و ابزار روزمرهٔ «توصیف زیرسیستم از حالت کل» است — هر بار که از درهم‌تنیدگی زیرسیستم بیرون می‌کشید، رد جزئی کرده‌اید.

5.14شبکه‌های تانسوری — نخستین دیدار

حاصل‌ضرب‌های تانسوری کامل، بازنمایی «جداشدنی» فضا‌اند؛ شبکه‌های تانسوری، تعمیم پلکانی‌اند: حالت به‌صورت مجموعه‌ای از تانسورهای کوچک با اتصالات (شاخص‌های قراردادی) بازنمایی می‌شود، و «پیچیدگی» با حداکثر بُعد شاخص قراردادی (بُعد پیوند) کنترل می‌شود. MPS (حالت حاصل‌ضرب ماتریسی) حالت‌های زنجیره‌ای با درهم‌تنیدگی مرزی را با هزینهٔ خطیِ n بازنمایی می‌کند؛ تنسورهای عمومی‌تر (PEPS، MERA) برای توپولوژی‌های دیگر. چرا مهم: این بازنمایی‌ها با درهم‌تنیدگی معامله می‌کنند نه با بُعد — و کل روش شبیه‌سازی کلاسیک فراتر از n≈۵۰ (17.15 و 64.2) روی آن‌ها سوار است. در این مرحله فقط مفهوم را نگه دارید: حالت = شبکه‌ای از تانسورهای کوچک؛ درهم‌تنیدگی بیشتر = بُعد پیوند بزرگ‌تر = هزینهٔ بیشتر. باریکهٔ درهم‌تنیدگی، اسکناس هزینهٔ محاسبات کوانتومی است.