Introduction
量子計算係 21 世紀最令人興奮嘅科技領域之一,而**量子電路(Quantum Circuits)就係實現量子演算法嘅核心工具。如果話經典電腦用邏輯閘(AND, OR, NOT)嚟處理 0 同 1,咁量子電腦就用量子閘(Quantum Gates)**嚟操控處於疊加態同糾纏態嘅 qubit。
但係量子電路同經典電路有根本性嘅唔同:量子態係連續嘅、可以處於疊加狀態、而且操作必須係可逆嘅(unitary)。要理解量子電路,我哋首先要掌握一種特殊嘅數學符號——Dirac Notation(Bra-Ket Notation)。
今日我哋會從符號系統開始,逐步介紹常見嘅量子閘,包括 Pauli Gates、Hadamard Gate、CNOT、SWAP 等等,最後睇吓點樣將呢啲閘組合成有用嘅量子演算法。
Dirac Notation:量子態嘅數學語言
咩係 Bra-Ket Notation?
Dirac Notation(又叫 Bra-Ket Notation)係物理學家 Paul Dirac 發明嘅符號系統,專門用嚟表達量子態。呢套符號簡潔而且功能強大,已經成為咗量子力學同量子計算嘅標準語言。
Ket:|ψ⟩
Ket 係一個列向量(column vector),用嚟表示一個量子態。
最基本嘅兩個量子態係:
∣0⟩=(10),∣1⟩=(01)
- ∣0⟩ 代表 qubit 處於「0」態
- ∣1⟩ 代表 qubit 處於「1」態
呢兩個態形成咗一組正交基底(orthonormal basis),任何單 qubit 態都可以寫成佢哋嘅線性組合:
∣ψ⟩=α∣0⟩+β∣1⟩=(αβ)
其中 ∣α∣2+∣β∣2=1(歸一化條件)。
Bra:⟨ψ|
Bra 係 ket 嘅共軛轉置(conjugate transpose),係一個行向量(row vector):
⟨ψ∣=(∣ψ⟩)†=(α∗β∗)
其中 α∗ 代表 α 嘅複數共軛。
Bra-Ket:內積
將 bra 同 ket 結合,就得到內積(inner product):
⟨ϕ∣ψ⟩=ϕ∗⋅ψ
例如:
⟨0∣0⟩=1,⟨0∣1⟩=0,⟨1∣1⟩=1
內積代表兩個量子態嘅重疊程度,∣⟨ϕ∣ψ⟩∣2 係測量 ∣ψ⟩ 得到 ∣ϕ⟩ 嘅機率。
多 Qubit 系統:張量積
多個 qubit 用張量積(tensor product) ⊗ 嚟表示:
∣00⟩=∣0⟩⊗∣0⟩=1000,∣01⟩=∣0⟩⊗∣1⟩=0100
通常我哋會簡寫:∣0⟩⊗∣1⟩=∣01⟩。
點解需要張量積?
張量積係量子計算入面最核心嘅數學工具之一,佢解決咗一個基本問題:點樣用數學描述多個量子系統組合埋一齊?
1. 創造指數級嘅狀態空間
呢個係量子計算威力嘅來源:
- 1 個 qubit:2 維空間(∣0⟩,∣1⟩)
- 2 個 qubit:4 維空間(∣00⟩,∣01⟩,∣10⟩,∣11⟩)
- 3 個 qubit:8 維空間
- n 個 qubit:2n 維空間
例如 300 個 qubit 可以表示 2300≈1090 個狀態——多過宇宙入面嘅原子數量!
2. 描述獨立同時存在嘅系統
如果 Alice 有一個 qubit 處於 ∣ψA⟩=α∣0⟩+β∣1⟩,Bob 有另一個 qubit 處於 ∣ψB⟩=∣0⟩,咁整個系統嘅狀態就係:
∣ψtotal⟩=∣ψA⟩⊗∣ψB⟩=(α∣0⟩+β∣1⟩)⊗∣0⟩
=α∣00⟩+β∣10⟩
呢個話俾我哋知:第一個 qubit 處於疊加態,第二個 qubit 確定係 ∣0⟩。
張量積點樣計算?(Kronecker Product)
張量積係向量同矩陣嘅 Kronecker product。
向量嘅張量積:
(ab)⊗(cd)=a⋅(cd)b⋅(cd)=a⋅ca⋅db⋅cb⋅d
例子:計算 ∣1⟩⊗∣0⟩
∣1⟩⊗∣0⟩=(01)⊗(10)
=0⋅10⋅01⋅11⋅0=0010=∣10⟩
✅ 解讀: 第一個 qubit 係 ∣1⟩,第二個 qubit 係 ∣0⟩,合併成 ∣10⟩(binary: 10 = 2)。
例子:計算疊加態嘅張量積
∣+⟩⊗∣0⟩=21(∣0⟩+∣1⟩)⊗∣0⟩
用分配律:
=21(∣0⟩⊗∣0⟩+∣1⟩⊗∣0⟩)
=21(∣00⟩+∣10⟩)
✅ 物理意義: 第一個 qubit 處於疊加態(50% 係 0,50% 係 1),第二個 qubit 確定係 0。
矩陣(量子閘)嘅張量積
當我哋想將唔同嘅閘應用喺唔同 qubit 上面,就用張量積:
I⊗X 意思係:「對第一個 qubit 乜都唔做(Identity),對第二個 qubit 應用 X 閘」
I⊗X=(1001)⊗(0110)
=1⋅(0110)0⋅(0110)0⋅(0110)1⋅(0110)
=0100100000010010
驗證:作用喺 ∣00⟩
(I⊗X)∣00⟩=01001000000100101000=0100=∣01⟩
✅ 第二個 qubit 被翻轉:∣00⟩→∣01⟩,第一個 qubit 保持不變!
同樣,H⊗H 意思係「對兩個 qubit 都應用 Hadamard」:
(H⊗H)∣00⟩=(H∣0⟩)⊗(H∣0⟩)=∣+⟩⊗∣+⟩
=21(∣0⟩+∣1⟩)(∣0⟩+∣1⟩)=21(∣00⟩+∣01⟩+∣10⟩+∣11⟩)
✅ 同時創造晒 4 個基底狀態嘅疊加!
可分離 vs 糾纏:張量積嘅限制
重要發現:唔係所有多 qubit 狀態都可以寫成張量積!
可分離狀態(Separable State): 可以寫成 ∣ψA⟩⊗∣ψB⟩
例子:
∣ψ⟩=21(∣00⟩+∣10⟩)=21(∣0⟩+∣1⟩)⊗∣0⟩=∣+⟩⊗∣0⟩
✅ 可以分解!兩個 qubit 係獨立嘅。
糾纏狀態(Entangled State): 冇辦法寫成張量積
例子(Bell 態):
∣Φ+⟩=21(∣00⟩+∣11⟩)
❌ 冇辦法寫成 ∣ψA⟩⊗∣ψB⟩ 嘅形式!
你可以試吓:如果 ∣ψA⟩=α∣0⟩+β∣1⟩ 同 ∣ψB⟩=γ∣0⟩+δ∣1⟩,咁:
∣ψA⟩⊗∣ψB⟩=αγ∣00⟩+αδ∣01⟩+βγ∣10⟩+βδ∣11⟩
呢個有四個獨立項。但 Bell 態只有兩個項(∣00⟩ 同 ∣11⟩),而且佢哋嘅係數相同。冇任何 α,β,γ,δ 嘅值可以產生 21(∣00⟩+∣11⟩)。
呢個就係糾纏嘅定義:兩個 qubit 唔能夠獨立描述,必須作為一個整體!
點解張量積創造指數級威力?
經典 bit:
- n 個 bit 可以表示 2n 個可能狀態,但每次只能處於一個狀態
- 例如 3 bit:可以係 000、001、...、111 其中一個
量子 qubit:
- n 個 qubit 可以同時處於 2n 個狀態嘅疊加!
- 例如 3 qubit:
∣ψ⟩=81(∣000⟩+∣001⟩+∣010⟩+∣011⟩+∣100⟩+∣101⟩+∣110⟩+∣111⟩)
✅ 8 個狀態同時存在! 一次量子閘操作會同時作用喺所有 8 個組件上面。
實際例子:Google 嘅 Sycamore 處理器
Google 嘅 53-qubit 處理器可以表示 253≈9×1015 個狀態同時存在!呢個係經典超級電腦都難以模擬嘅狀態空間大小。
張量積速查
| 符號 | 意思 | 例子 |
|---|
| $ | a\rangle \otimes | b\rangle$ |
| U⊗V | 兩個閘分別作用喺唔同 qubit | H⊗X = H on qubit 1, X on qubit 2 |
| $ | \psi\rangle^{\otimes n}$ | 同一個狀態重複 n 次 |
| I⊗U | 第一個 qubit 唔變,第二個 qubit 做 U | 只對第二個 qubit 操作 |
💡 重點總結: 張量積唔單止係數學符號,佢係量子計算指數級威力嘅來源。透過將 n 個 qubit 組合成 2n 維空間,量子電腦可以同時探索海量嘅狀態空間——呢個係經典電腦永遠做唔到嘅!
💡 重點: Dirac notation 同張量積係理解量子電路嘅兩大數學基礎。Dirac notation 俾我哋簡潔咁表達量子態,而張量積創造咗量子計算嘅指數級威力。
單 Qubit 閘:基本操作
量子閘係作用喺 qubit 上嘅么正變換(unitary transformation),用矩陣表示。所有量子閘都必須係可逆嘅。
Pauli Gates:最基本嘅單 qubit 閘
Pauli-X Gate(NOT Gate)
Pauli-X 係量子版本嘅 NOT 閘,將 ∣0⟩ 同 ∣1⟩ 互換:
X=(0110)
作用:
- X∣0⟩=∣1⟩
- X∣1⟩=∣0⟩
電路符號:
Pauli-Y Gate
Pauli-Y 同時翻轉 qubit 並加入一個相位:
Y=(0i−i0)
作用:
- Y∣0⟩=i∣1⟩
- Y∣1⟩=−i∣0⟩
Pauli-Z Gate
Pauli-Z 改變 ∣1⟩ 嘅相位(phase flip):
Z=(100−1)
作用:
- Z∣0⟩=∣0⟩
- Z∣1⟩=−∣1⟩
Z 閘對計算基底 ∣0⟩,∣1⟩ 嘅測量冇影響,但會影響疊加態。
點解叫「phase flip」? 雖然 Z 閘唔改變 ∣0⟩,∣1⟩ 嘅測量結果,但佢確實「翻轉」咗啲嘢——就係量子相位!喺疊加態 ∣+⟩ 入面,Z 閘會將佢變成 ∣−⟩,呢個改變係可以測量到嘅。更深層嘅理解:喺 Hadamard 基底 {∣+⟩,∣−⟩} 入面,Z 閘就真係一個 bit flip(∣+⟩↔∣−⟩)!呢個係量子計算同經典計算最大嘅分別——我哋可以操控相位呢個「隱藏維度」,而相位正正係量子干涉同量子加速嘅關鍵。
Bit Flip vs Phase Flip:三個 Pauli Gates 嘅分別
三個 Pauli Gates 有唔同嘅「翻轉」效果:
| 閘 | 類型 | 效果 | 視覺化 |
|---|
| X | Bit Flip | 將 $ | 0\rangle \leftrightarrow |
| Y | Bit + Phase Flip | 將 $ | 0\rangle \leftrightarrow |
| Z | Phase Flip | 只改變相位,唔改變測量結果 | 喺 Bloch 球上圍住 Z 軸旋轉 180° |
更直觀嘅理解:
X Gate - Bit Flip(經典翻轉)
X:∣0⟩→∣1⟩,∣1⟩→∣0⟩
呢個同經典嘅 NOT 閘一樣,直接翻轉 bit 值。
Z Gate - Phase Flip(量子翻轉)
Z:∣0⟩→∣0⟩,∣1⟩→−∣1⟩
唔改變計算基底 ∣0⟩,∣1⟩ 嘅測量結果,但係會改變疊加態:
Z∣+⟩=Z⋅21(∣0⟩+∣1⟩)=21(∣0⟩−∣1⟩)=∣−⟩
Z 閘將 ∣+⟩ 變成 ∣−⟩,呢個係純量子效應,經典電腦冇對應操作。
Y Gate - Bit Flip + Phase Flip(複合翻轉)
Y:∣0⟩→i∣1⟩,∣1⟩→−i∣0⟩
Y 閘係 X 同 Z 嘅「結合」,既翻轉 bit 又加相位。事實上:
Y=iXZ=iZX
(忽略全局相位 i,因為測量結果唔受影響)
例子:用 Y Gate 計算
計算 Y∣0⟩:
Y∣0⟩=(0i−i0)(10)
矩陣乘法:
第一個元素:0×1+(−i)×0=0
第二個元素:i×1+0×0=i
結果:
Y∣0⟩=(0i)=i∣1⟩
✅ Y 閘將 ∣0⟩ 翻轉成 ∣1⟩ 並加咗相位 i!
Bloch 球視覺化
喺 Bloch 球上,量子態可以表示為球面上嘅一點:
- X gate:圍住 X 軸(水平)旋轉 180°
- Y gate:圍住 Y 軸(前後)旋轉 180°
- Z gate:圍住 Z 軸(垂直)旋轉 180°
所以三個 Pauli Gates 係喺三個正交方向上嘅旋轉,組合埋就可以實現任意旋轉!
💡 關鍵理解: X 翻轉「係咩」(bit),Z 翻轉「點睇佢」(phase),Y 兩樣都翻轉。呢個係量子計算同經典計算最大嘅分別——我哋可以操控相位而唔改變測量結果。
Hadamard Gate:創造疊加態
Hadamard Gate 係量子計算入面最重要嘅閘之一,佢將計算基底變成疊加態:
H=21(111−1)
作用:
- H∣0⟩=21(∣0⟩+∣1⟩)=∣+⟩
- H∣1⟩=21(∣0⟩−∣1⟩)=∣−⟩
Hadamard Gate 將「確定」嘅態變成「疊加」嘅態,係好多量子演算法嘅第一步。
重要性質:
- 自逆性: H2=I(做兩次 Hadamard 等於冇做)
- 對稱性: H=H†(Hadamard 係自己嘅共軛轉置)
電路符號:
|0⟩ ───[H]─── |+⟩ = (|0⟩ + |1⟩)/√2
例子:量子並行性
如果將 n 個 qubit 都通過 Hadamard,就可以同時創造出 2n 個疊加態:
H⊗n∣0⟩⊗n=2n1x=0∑2n−1∣x⟩
呢個係量子計算指數加速嘅來源。
常見誤解:只有 Hadamard 可以創造疊加態?❌
錯! 呢個係最常見嘅誤解之一。Hadamard 唔係唯一可以創造疊加態嘅閘!
咩係疊加態?
疊加態係任何唔係純
∣ψ⟩=α∣0⟩+β∣1⟩where ∣α∣2+∣β∣2=1,α,β=0
只要 α 同 β 兩個都唔係 0,就係疊加態!
其他可以創造疊加態嘅閘
1. 旋轉閘(Rotation Gates)
任何將 qubit 旋轉到「中間位置」嘅閘都會創造疊加態:
Ry(θ) 閘(圍住 Y 軸旋轉):
Ry(θ)=(cos(θ/2)sin(θ/2)−sin(θ/2)cos(θ/2))
例如 Ry(π/4)∣0⟩:
Ry(π/4)∣0⟩=cos(π/8)∣0⟩+sin(π/8)∣1⟩≈0.924∣0⟩+0.383∣1⟩
✅ 呢個係疊加態! 而且同 Hadamard 創造嘅 ∣+⟩ 唔同。
Rx(θ) 閘(圍住 X 軸旋轉):
Rx(π/3)∣0⟩=cos(π/6)∣0⟩−isin(π/6)∣1⟩
✅ 又係一個疊加態!
2. 部分應用 Pauli 閘 + 其他閘
雖然 X, Y, Z 閘單獨用喺 ∣0⟩ 或 ∣1⟩ 上面唔會創造疊加態(因為佢哋只係翻轉到另一個計算基底),但如果你先用其他閘創造疊加態,再應用佢哋,就會改變疊加態:
Z∣+⟩=Z⋅21(∣0⟩+∣1⟩)=21(∣0⟩−∣1⟩)=∣−⟩
✅ ∣−⟩ 都係疊加態!
3. 任意角度嘅 U3 閘
IBM 用嘅通用單 qubit 閘:
U3(θ,ϕ,λ)=(cos(θ/2)eiϕsin(θ/2)−eiλsin(θ/2)ei(ϕ+λ)cos(θ/2))
只要 θ=0,π,U3(θ,ϕ,λ)∣0⟩ 就會係疊加態。
點解大家成日以為只有 Hadamard 可以?
原因 1:Hadamard 創造「平衡」疊加態
Hadamard 創造嘅 ∣+⟩=21(∣0⟩+∣1⟩) 好特別:
- 測量到 ∣0⟩ 嘅機率:50%
- 測量到 ∣1⟩ 嘅機率:50%
呢種完全平衡嘅疊加態最有用,所以最常用。
原因 2:量子演算法嘅第一步通常係 Hadamard
好多經典量子演算法(Deutsch-Jozsa, Grover, Shor)都係咁開始:
所以大家就以為「創造疊加態 = 用 Hadamard」。
原因 3:Pauli 閘 (X, Y, Z) 唔會從計算基底創造疊加態
如果你試:
- X∣0⟩=∣1⟩ ❌ 唔係疊加態
- Z∣0⟩=∣0⟩ ❌ 唔係疊加態
- Y∣0⟩=i∣1⟩ ❌ 唔係疊加態(只係 ∣1⟩ 加咗相位)
所以大家覺得「普通閘」創造唔到疊加態。但其實係因為呢啲閘係 180° 旋轉,會旋轉到另一個「極端」(另一個計算基底)。
真相:任何「部分旋轉」都會創造疊加態!
實際例子:用 Qiskit 試唔同閘
from qiskit import QuantumCircuit, Aer, execute
import numpy as np
qc1 = QuantumCircuit(1)
qc1.h(0)
result = execute(qc1, Aer.get_backend('statevector_simulator')).result()
print("Hadamard:", result.get_statevector())
qc2 = QuantumCircuit(1)
qc2.ry(np.pi/4, 0)
result = execute(qc2, Aer.get_backend('statevector_simulator')).result()
print("Ry(π/4):", result.get_statevector())
qc3 = QuantumCircuit(1)
qc3.rx(np.pi/3, 0)
result = execute(qc3, Aer.get_backend('statevector_simulator')).result()
print("Rx(π/3):", result.get_statevector())
qc4 = QuantumCircuit(1)
qc4.x(0)
result = execute(qc4, Aer.get_backend('statevector_simulator')).result()
print("X gate:", result.get_statevector())
Bloch 球視覺化
喺 Bloch 球上面理解更清楚:
- 計算基底 ∣0⟩,∣1⟩:喺 Z 軸嘅兩極(北極同南極)
- 疊加態:喺 Bloch 球表面嘅任何其他位置
唔同閘創造唔同嘅疊加態:
- Hadamard:將 ∣0⟩ 旋轉到赤道上嘅 ∣+⟩(X 軸正方向)
- Ry(π/4):將 ∣0⟩ 旋轉到 Y 方向同 Z 方向之間
- Rx(θ):圍住 X 軸旋轉任意角度
✅ 所有唔喺兩極嘅點都係疊加態!
總結對比表
| 閘 | 從
|0⟩ 創造疊加態? | 結果 | 特點 |
| -------------------- | ----------------- | ---------------------------------------------------- | ---------- |
| Hadamard (H) | ✅ 係 | 21(∣0⟩+∣1⟩) | 50-50 平衡疊加 |
| Ry(θ) (θ ≠ 0, π) | ✅ 係 | cos(θ/2)∣0⟩+sin(θ/2)∣1⟩ | 可調比例疊加 |
| Rx(θ) (θ ≠ 0, π) | ✅ 係 | cos(θ/2)∣0⟩−isin(θ/2)∣1⟩ | 帶複數相位疊加 |
| U3(θ, φ, λ) | ✅ 係 (如果 θ ≠ 0, π) | 任意單 qubit 態 | 最通用 |
| X, Y, Z | ❌ 唔係 | 另一個計算基底 | 180° 旋轉 |
| S, T | ❌ 唔係 | ∣0⟩ (只加相位) | 只改變相位 |
重點總結
Hadamard 唔係唯一可以創造疊加態嘅閘! ❌
真相:
- 任何旋轉閘 (Rx, Ry, Rz) 配適當角度都可以創造疊加態
- Hadamard 最特別係因為佢創造 50-50 平衡疊加態
- Pauli 閘 (X, Y, Z) 唔得係因為佢哋係 180° 旋轉,只會到達另一個極端
- 相位閘 (S, T, Z) 單獨用唔得係因為佢哋只改變相位,唔改變 ∣0⟩,∣1⟩ 嘅「位置」
💡 類比: 諗吓 Bloch 球係地球儀。∣0⟩ 係北極,∣1⟩ 係南極。
- Hadamard:將你從北極移到赤道(新加坡)
- Ry(θ):將你移到任意緯度(例如香港、東京)
- X 閘:將你從北極直接傳送到南極
- Z 閘:將你留喺北極,但改變你嘅時區(相位)
疊加態 = 唔喺兩極嘅任何位置。好多條路可以去到,Hadamard 只係其中一條(而且係最常用嘅)!🌍
實際例子:疊加態到底係咩?點解需要佢?
好多人第一次聽到「疊加態」都會覺得好抽象。我哋用幾個具體例子嚟理解點解疊加態係量子計算嘅核心,同埋佢點樣幫我哋解決實際問題。
例子 1:搜尋問題 - 經典 vs 量子
問題: 假設你有一個 4 個房間嘅迷宮,只有 1 個房間有寶藏。經典電腦同量子電腦會點樣搜尋?
經典電腦(逐個檢查):
經典電腦必須一個一個房間檢查:
時間 1: 檢查房間 0 ❌
時間 2: 檢查房間 1 ❌
時間 3: 檢查房間 2 ❌
時間 4: 檢查房間 3 ✅ 搵到!
最壞情況:需要檢查 4 次(n 個房間需要 n 次)
量子電腦(用疊加態同時檢查):
|ψ⟩ = H⊗H|00⟩ = ½(|00⟩ + |01⟩ + |10⟩ + |11⟩)
= ½(房間0 + 房間1 + 房間2 + 房間3)
|ψ'⟩ = ½(|00⟩ + |01⟩ + |10⟩ - |11⟩)
# 步驟 3: 用干涉放大正確答案
# Grover diffusion operator
重點:量子電腦可以同時檢查所有房間!
對於 n 個房間:
- 經典:需要 O(n) 次檢查
- 量子(Grover):只需要 O(√n) 次
如果有 1,000,000 個房間:
- 經典:最多 1,000,000 次
- 量子:大約 1,000 次 ⚡
例子 2:計算函數 - 量子並行性嘅威力
問題: 給你一個黑盒函數 f(x),你想知道佢係「constant」(所有輸入都返同一個值)定係「balanced」(一半輸入返 0,一半返 1)。
假設有 4 個可能輸入:x = 00, 01, 10, 11
經典電腦:
必須檢查至少 3 個輸入先可以確定:
f(00) = 0
f(01) = 0
f(10) = ? ← 需要檢查
最壞情況:需要 2^(n-1) + 1 次查詢 (n = 2 時需要 3 次)
量子電腦(Deutsch-Jozsa 演算法):
步驟 1: 創造疊加態
|ψ⟩ = H⊗H|00⟩ = ½(|00⟩ + |01⟩ + |10⟩ + |11⟩)
步驟 2: 一次過查詢所有輸入!
由於量子態處於疊加,一次 Oracle 調用就同時計算:
f(00), f(01), f(10), f(11)
步驟 3: 用干涉提取答案
再應用 H⊗H,constant 同 balanced 會產生唔同嘅干涉模式
測量結果:
- 如果測到 |00⟩ → constant
- 如果測到其他 → balanced
**只需要 1 次查詢!**無論有幾多個輸入 ⚡
例子 3:具體計算 - Deutsch-Jozsa 詳細過程
我哋用一個 2-qubit 例子嚟睇吓量子並行性點樣實際運作。
設定: 有一個函數 f: {0,1}² → {0,1},我哋想知佢係 constant 定 balanced。
量子電路:
|0⟩ ───[H]───────────[H]───[測量]
│ │
|0⟩ ───[H]─[Oracle]───[H]───[測量]
逐步計算(假設 f 係 constant,f(x) = 0 for all x):
初始態:
∣ψ0⟩=∣00⟩
應用 H⊗H:
∣ψ1⟩=(H∣0⟩)⊗(H∣0⟩)=∣+⟩⊗∣+⟩
=21(∣0⟩+∣1⟩)(∣0⟩+∣1⟩)
=21(∣00⟩+∣01⟩+∣10⟩+∣11⟩)
✅ 疊加態創造完成!呢個態同時代表晒 4 個可能輸入。
應用 Oracle(constant f(x) = 0):
由於 f(x) = 0 對所有 x,Oracle 唔改變任何態:
∣ψ2⟩=21(∣00⟩+∣01⟩+∣10⟩+∣11⟩)
再應用 H⊗H:
呢步好關鍵!Hadamard 會造成建設性同破壞性干涉:
H∣+⟩=H⋅21(∣0⟩+∣1⟩)=∣0⟩
所以:
∣ψ3⟩=(H⊗H)⋅21(∣00⟩+∣01⟩+∣10⟩+∣11⟩)
=∣00⟩
測量結果:一定係 00 → 所以 f 係 constant!
如果 f 係 balanced 會點?
假設 f(00) = f(01) = 0, f(10) = f(11) = 1
Oracle 會將後兩個態加負號:
∣ψ2⟩=21(∣00⟩+∣01⟩−∣10⟩−∣11⟩)
再應用 H⊗H 後,干涉會令 |00⟩ 嘅機率變成 0,測量一定唔會係 |00⟩。
✅ 疊加態 + 干涉 = 量子加速!
例子 4:實際模擬 - 用 Qiskit 睇疊加態
我哋用 Python 嚟實際睇吓疊加態嘅行為:
from qiskit import QuantumCircuit, Aer, execute
import matplotlib.pyplot as plt
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.h(1)
print("電路:")
print(qc.draw())
simulator = Aer.get_backend('statevector_simulator')
job = execute(qc, simulator)
result = job.result()
statevector = result.get_statevector()
print("\n疊加態(state vector):")
for i, amplitude in enumerate(statevector):
binary = format(i, '02b')
print(f"|{binary}⟩: {amplitude:.3f}")
輸出:
疊加態(state vector):
|00⟩: 0.500
|01⟩: 0.500
|10⟩: 0.500
|11⟩: 0.500
✅ 所有 4 個狀態同時存在,每個機率係 (0.5)² = 25%
測量 1000 次:
qc.measure([0,1], [0,1])
backend = Aer.get_backend('qasm_simulator')
job = execute(qc, backend, shots=1000)
result = job.result()
counts = result.get_counts()
print(counts)
✅ 每個結果出現大約 250 次,證實咗 25% 機率!
點解疊加態係必需嘅?
1. 指數級資訊儲存
- 1 個經典 bit:只可以係 0 或 1
- 1 個 qubit:可以係 α|0⟩ + β|1⟩(同時係兩個態)
- n 個經典 bit:儲存 1 個 n-bit 數字
- n 個 qubit:同時儲存 2^n 個數字!
例如 300 個 qubit 可以同時表達 2^300 ≈ 10^90 個狀態(多過宇宙嘅原子數!)
2. 量子並行性(Quantum Parallelism)
一次操作就可以同時作用喺所有疊加嘅態上面:
經典:f(0), f(1), f(2), f(3) → 需要 4 次計算
量子:f(|0⟩+|1⟩+|2⟩+|3⟩) → 只需 1 次!
3. 量子干涉(Quantum Interference)
疊加態可以相互干涉,放大正確答案、抵消錯誤答案:
- 建設性干涉: 正確答案嘅振幅加起嚟 ↑
- 破壞性干涉: 錯誤答案嘅振幅相互抵消 ↓
呢個係 Grover 搜尋同好多量子演算法嘅核心機制。
4. 實際應用場景
疊加態唔係純理論概念,佢已經用喺:
- 量子化學模擬: 同時計算分子嘅所有可能構型
- 優化問題: 同時評估所有可能解決方案
- 機器學習: 同時處理多個特徵組合
- 密碼破解: Shor 演算法利用疊加態同時測試所有因數
疊加態嘅限制:測量問題
但係有一個重要限制:一旦測量,疊加態就會塌縮!
|ψ⟩ = ½(|00⟩ + |01⟩ + |10⟩ + |11⟩) ← 4 個態同時存在
|ψ⟩ = |01⟩ ← 只剩一個態
所以量子演算法嘅設計藝術就係:
- 用疊加態創造並行性
- 用量子閘操控所有態
- 用干涉放大正確答案
- 測量時有高機率得到答案
💡 總結: 疊加態唔係「奇怪嘅量子魔法」,而係一種強大嘅計算資源。佢令到量子電腦可以同時探索整個解空間,而唔係逐個逐個試。呢個就係點解某啲問題上,量子電腦可以達到指數級加速!
深入理解:疊加態點樣令並行計算成為可能?
好多人會問:「點解疊加態就可以並行計算?」讓我哋睇吓背後嘅數學機制。
核心原理:線性代數 + 么正操作
當你有一個疊加態:
∣ψ⟩=21(∣00⟩+∣01⟩+∣10⟩+∣11⟩)
呢個唔係「四個可能性我哋未知道邊個」(好似經典機率咁)。而係四個狀態真係同時存在喺量子系統入面!
量子閘作用喺所有組件上面
當你應用一個量子閘 U 喺疊加態上面,佢會同時作用喺每個組件上面,因為量子力學嘅線性性:
U∣ψ⟩=U[21(∣00⟩+∣01⟩+∣10⟩+∣11⟩)]
=21(U∣00⟩+U∣01⟩+U∣10⟩+U∣11⟩)
✨ 一次閘操作 = 四次計算!
具體例子:Oracle 查詢
假設你有一個函數 f(x) 編碼成量子 Oracle。當你將疊加態輸入:
result_0 = f(0)
result_1 = f(1)
result_2 = f(2)
result_3 = f(3)
|ψ⟩ = ½(|0⟩ + |1⟩ + |2⟩ + |3⟩)
Oracle|ψ⟩ = ½(|0,f(0)⟩ + |1,f(1)⟩ + |2,f(2)⟩ + |3,f(3)⟩)
詳細數學:點解會咁?
假設 Oracle 對於 f(x)=0(constant)嘅情況,佢嘅作用係:
Oracle∣x⟩∣0⟩=∣x⟩∣f(x)⟩
當輸入係疊加態:
Oracle⋅21(∣00⟩∣0⟩+∣01⟩∣0⟩+∣10⟩∣0⟩+∣11⟩∣0⟩)
根據量子力學嘅線性性,Oracle 會分別作用喺每個項:
=21(Oracle∣00⟩∣0⟩+Oracle∣01⟩∣0⟩+Oracle∣10⟩∣0⟩+Oracle∣11⟩∣0⟩)
=21(∣00⟩∣f(00)⟩+∣01⟩∣f(01)⟩+∣10⟩∣f(10)⟩+∣11⟩∣f(11)⟩)
✅ 一次操作,四個函數值全部計算完成!
點解經典電腦做唔到?
經典 bit: 只可以處於一個狀態
- 你必須順序處理 f(0),然後 f(1),然後 f(2)...
- 冇辦法「同時係 0 又係 1」
量子 qubit: 可以處於狀態嘅線性組合
- 當你應用閘,量子力學話操作會分佈到每個項
- 呢個係因為量子演化係么正(矩陣乘法)
視覺化類比
諗吓呢個比喻:
經典: 一架車逐條隧道行
- 必須入隧道 0,出嚟,入隧道 1,出嚟...
- 時間 = 4 × (每條隧道時間)
量子: 一個波同時通過所有隧道
- 波分開並且同時流過所有隧道
- 時間 = 1 × (每條隧道時間)
「波」就係疊加態,每條隧道同時處理佢嘅波嘅組件!
限制:測量塌縮
但係有一個限制:當你測量時,你只會得到一個隨機結果。所以量子演算法需要干涉:
- 用量子閘令正確答案建設性干涉(振幅相加)
- 令錯誤答案破壞性干涉(振幅相消)
- 測量時高機率得到正確答案
呢個就係點解 Deutsch-Jozsa 會 work:並行計算之後,Hadamard 閘創造干涉模式去區分 constant vs balanced 函數!
實際計算例子
讓我哋睇吓一個簡單嘅並行計算:
假設我哋想同時計算 X 閘作用喺 ∣0⟩ 同 ∣1⟩ 上面:
∣ψ⟩=21(∣0⟩+∣1⟩)
應用 X 閘:
X∣ψ⟩=X⋅21(∣0⟩+∣1⟩)=21(X∣0⟩+X∣1⟩)
=21(∣1⟩+∣0⟩)=21(∣0⟩+∣1⟩)
我哋同時計算咗:
- X∣0⟩=∣1⟩
- X∣1⟩=∣0⟩
用咗一次操作!
點解呢個係量子加速嘅關鍵?
對於 n 個 qubit:
- 疊加態可以同時表示 2n 個狀態
- 一次量子閘操作會同時作用喺所有 2n 個狀態上
- 呢個係指數級並行性!
例如:
- 3 qubit = 同時處理 8 個狀態
- 10 qubit = 同時處理 1,024 個狀態
- 50 qubit = 同時處理 1,125,899,906,842,624 個狀態!
經典電腦要逐個處理,但量子電腦用疊加態可以一次過處理全部。
呢個就係量子並行性嘅真正威力!💥
相位閘:Phase Gates
相位閘係一類特殊嘅單 qubit 閘,佢哋只改變相位而唔改變 bit 值。呢類閘喺量子演算法同容錯量子計算入面好重要。
S Gate(Phase Gate / P Gate)
S Gate 又叫 Phase Gate,佢將 ∣1⟩ 加入 90° 相位(即係乘以 i):
S=(100i)
作用:
- S∣0⟩=∣0⟩(唔改變 ∣0⟩)
- S∣1⟩=i∣1⟩(加入 90° 相位)
物理意義: 喺 Bloch 球上圍住 Z 軸旋轉 90°。
點解叫 90°? 因為 i=eiπ/2,而 π/2 radians = 90°。
例子:S 閘作用喺疊加態
計算 S∣+⟩,其中 ∣+⟩=21(∣0⟩+∣1⟩):
S∣+⟩=S⋅21(∣0⟩+∣1⟩)=21(S∣0⟩+S∣1⟩)
=21(∣0⟩+i∣1⟩)
呢個係一個帶相位嘅疊加態,唔同於 ∣+⟩ 或者 ∣−⟩。
S† Gate(S Dagger / S Conjugate)
S†(讀作 "S dagger")係 S 閘嘅共軛轉置(adjoint):
S†=(100−i)
作用:
- S†∣0⟩=∣0⟩
- S†∣1⟩=−i∣1⟩(加入 -90° 相位)
重要性質:
- S⋅S†=I(S 同 S† 互為逆)
- S2=Z(做兩次 S 等於 Z 閘!)
- (S†)2=Z
驗證 S² = Z:
S2=(100i)(100i)=(100i2)=(100−1)=Z
✅ 所以 S 係 Z 閘嘅「平方根」!
T Gate(π/8 Gate)
T Gate 又叫 π/8 Gate,佢係容錯量子計算入面嘅基本閘:
T=(100eiπ/4)
作用:
- T∣0⟩=∣0⟩
- T∣1⟩=eiπ/4∣1⟩(加入 45° 相位)
點解叫 π/8 Gate? 因為佢喺 Bloch 球上圍住 Z 軸旋轉 π/4 = 45°,而 45° 係 360° 嘅 1/8,所以叫 π/8 gate。
數值計算:
eiπ/4=cos(π/4)+isin(π/4)=21+i21=21+i
例子:T 閘作用喺 |1⟩
T∣1⟩=(100eiπ/4)(01)=(0eiπ/4)=eiπ/4∣1⟩
=21+i∣1⟩
T† Gate(T Dagger / T Conjugate)
T† 係 T 閘嘅共軛轉置:
T†=(100e−iπ/4)
作用:
- T†∣0⟩=∣0⟩
- T†∣1⟩=e−iπ/4∣1⟩(加入 -45° 相位)
重要性質:
- T⋅T†=I(T 同 T† 互為逆)
- T2=S(做兩次 T 等於 S 閘!)
- (T†)2=S†
- T4=S2=Z(做四次 T 等於 Z 閘!)
驗證 T² = S:
T2=(100eiπ/4)(100eiπ/4)=(100eiπ/2)
=(100i)=S
✅ 所以 T 係 S 閘嘅「平方根」,亦都係 Z 閘嘅「四次方根」!
相位閘嘅層次結構
相位閘之間有一個美麗嘅層次關係:
Z (180°)
|
S² = Z (90° × 2)
|
S (90°)
|
T² = S (45° × 2)
|
T (45°)
用數學表達:
T4=T2⋅T2=S⋅S=S2=Z
相位閘嘅旋轉角度:
| 閘 | 矩陣 | 作用喺 |1⟩ | Bloch 球旋轉 |
| ------ | -------------------------------------------------------- | ---------------------- | --------- |
| Z | (100−1) | −∣1⟩ | Z 軸 180° |
| S | (100i) | i∣1⟩ | Z 軸 90° |
| T | (100eiπ/4) | eiπ/4∣1⟩ | Z 軸 45° |
| S† | (100−i) | −i∣1⟩ | Z 軸 -90° |
| T† | (100e−iπ/4) | e−iπ/4∣1⟩ | Z 軸 -45° |
通用相位閘(General Phase Gate)
所有相位閘都係呢個通用形式嘅特例:
Rϕ=(100eiϕ)
可以調整任意相位 ϕ。
特殊情況:
- R0=I(Identity)
- Rπ/4=T
- Rπ/2=S
- Rπ=Z
點解 T Gate 咁重要?
Z, S, T 嘅關係:Z 閘嘅「分數次方」
你講得啱!S 同 T 確實係 Z 閘嘅變體,更準確啲講,佢哋係 Z 閘嘅分數次方(fractional powers):
Z=Z1,S=Z1/2,T=Z1/4
數學上點理解?
如果我哋將相位閘寫成通用形式 Rϕ=(100eiϕ),咁:
- Z 閘:ϕ=π → 旋轉 180°
- S 閘:ϕ=π/2 → 旋轉 90° = Z 嘅一半
- T 閘:ϕ=π/4 → 旋轉 45° = Z 嘅四分之一
呢個就係點解:
S2=Z,T2=S,T4=Z
視覺化:Bloch 球上嘅旋轉
喺 Bloch 球上,所有相位閘都係圍住 Z 軸旋轉:
Z: 旋轉 180° (π) ───────●───────
S: 旋轉 90° (π/2) ─────●─●─────── = Z
T: 旋轉 45° (π/4) ───●─●─●─●───── = Z
所以 S 同 T 係 Z 閘嘅更精細版本,俾我哋更靈活咁控制相位!
T 閘嘅三大重要性
雖然 T 閘睇落只係 Z 嘅「小版本」,但佢喺量子計算入面極之重要:
1. 通用閘集合(Universal Gate Set)
T 閘係通用量子計算嘅關鍵:
{CNOT,H,T}
呢個係最常用嘅通用閘集合,可以實現任意量子計算!
點解唔係 {CNOT, H, S} 或 {CNOT, H, Z}?
- Z 同 S 屬於 Clifford 閘
- Clifford 閘可以互相模擬,形成一個「封閉」嘅集合
- 只用 Clifford 閘冇辦法實現通用量子計算!
- T 閘係非 Clifford 閘,佢打破咗呢個限制
Gottesman-Knill 定理話:純 Clifford 閘嘅電路可以用經典電腦高效模擬。所以要實現量子加速,必須有 T 閘(或其他非 Clifford 閘)!
2. 容錯量子計算(Fault-Tolerant QC)
喺容錯量子計算入面,T 閘特別重要因為:
| 閘類型 | 容錯實現 | 資源成本 |
|---|
| Clifford 閘 | | |
| (X, Y, Z, H, S, CNOT) | 輕鬆實現 | |
| 直接用邏輯 qubit | 低 ✅ | |
| 幾個物理 qubit | | |
| T 閘 | | |
| (非 Clifford) | 需要魔術態蒸餾 | |
| (Magic state distillation) | 高 ⚠️ | |
| ~1000 個物理 qubit per T gate! | | |
點解 T 閘咁貴?
容錯 T 閘需要:
- 製備魔術態:特殊嘅量子態 ∣T⟩=T∣0⟩
- 蒸餾(Distillation):用多個低質量魔術態製造一個高質量魔術態
- 消耗資源:每個 T 閘消耗大量輔助 qubit 同時間
實際影響:
喺現代量子演算法優化入面,T-count(T 閘數量)係最重要嘅指標之一!
例如 Shor 演算法分解 n-bit 整數:
- 需要約 O(n3) 個 T 閘
- 分解 2048-bit RSA 需要約 數十億個 T 閘
- 呢個係點解實用量子密碼破解仍然好遙遠
3. Clifford + T 完備性
Solovay-Kitaev 定理話:任何單 qubit 閘都可以用 Clifford + T 閘任意精確咁近似。
呢個話俾我哋知,雖然 T 閘睇落「細」,但佢同 Clifford 閘組合埋,就有無限嘅表達能力!
點解唔用其他非 Clifford 閘?
你可能會問:點解一定要 T 閘?用其他非 Clifford 閘得唔得?
理論上可以,但 T 閘有幾個優勢:
- 最簡單嘅非 Clifford 閘:45° 旋轉係最小嘅「有用」非 Clifford 角度
- 層次結構美:T2=S,S2=Z 形成優雅嘅階梯
- 魔術態製備相對容易:雖然仍然貴,但比其他非 Clifford 閘好
- 工業標準:主要量子硬體廠商(IBM, Google, IonQ)都支援 T 閘
總結:點解 T 閘咁特別?
S 同 T 係 Z 嘅變體 ✅
- 數學上:T=Z1/4,S=Z1/2
- 物理上:更精細嘅相位控制
但 T 閘有獨特地位 ⭐
- 突破 Clifford 限制 → 實現通用量子計算
- 容錯計算嘅瓶頸 → 最昂貴嘅閘
- 演算法優化焦點 → T-count 決定實際可行性
💡 類比: 如果 Clifford 閘係「有理數」,咁 T 閘就係「無理數」。有理數可以互相組合,但永遠到唔到所有實數。加入一個無理數(T 閘),突然間你可以到達任何數(任何量子閘)!呢個就係 T 閘嘅魔力。🎯
實際計算例子
例子 1:組合相位閘
計算 TS∣1⟩(先應用 S,再應用 T):
步驟 1: 應用 S
S∣1⟩=i∣1⟩
步驟 2: 應用 T
T(S∣1⟩)=T(i∣1⟩)=i⋅T∣1⟩=i⋅eiπ/4∣1⟩
=i⋅eiπ/4∣1⟩=eiπ/2⋅eiπ/4∣1⟩=ei3π/4∣1⟩
✅ 結果:加入咗 135° 相位!
例子 2:驗證 T⁴ = Z
T4∣1⟩=T(T(T(T∣1⟩)))
=T(T(T(eiπ/4∣1⟩)))
=T(T(eiπ/4⋅eiπ/4∣1⟩))
=T(eiπ/2∣1⟩)
=eiπ/2⋅eiπ/4∣1⟩
等等,搞錯咗!讓我重新計算:
T4=T⋅T⋅T⋅T
=(100eiπ/4)4=(100(eiπ/4)4)
=(100eiπ)=(100−1)=Z
✅ 驗證完成!
相位閘同 Hadamard 嘅關係
我哋之前見過 HXH=Z 同 HZH=X。相位閘都有類似嘅性質:
HSH = S†:
Hadamard 將 S 閘「翻轉」成 S†!
HTH = T†:
Hadamard 將 T 閘「翻轉」成 T†!
呢啲關係喺電路優化同演算法設計入面好有用。
Bloch 球視覺化
喺 Bloch 球上:
- Z 軸 係從南極(|1⟩)指向北極(|0⟩)
- 相位閘係圍住 Z 軸旋轉
- Z 閘:旋轉 180°(半圈)
- S 閘:旋轉 90°(四分之一圈)
- T 閘:旋轉 45°(八分之一圈)
所有相位閘唔改變 |0⟩ 同 |1⟩ 喺 Z 軸上嘅位置,只係令到疊加態「圍住 Z 軸旋轉」。
💡 重點總結: S 同 T 閘係相位閘家族嘅成員,佢哋只改變量子態嘅相位而唔改變測量結果。T 閘喺容錯量子計算入面特別重要,係實現通用量子計算嘅關鍵。記住層次關係:T² = S,S² = Z!
詳細計算例子:逐步睇吓量子閘點運作
好多人覺得量子閘好抽象,我哋用幾個具體例子嚟睇吓矩陣點樣作用喺量子態上面。
例子 1:X 閘作用喺 |0⟩
我哋想計 X∣0⟩:
X∣0⟩=(0110)(10)
矩陣乘法步驟:
第一個元素:0×1+1×0=0
第二個元素:1×1+0×0=1
結果:
X∣0⟩=(01)=∣1⟩
✅ X 閘將 ∣0⟩ 翻轉成 ∣1⟩!
例子 2:Hadamard 作用喺 |0⟩
計算 H∣0⟩:
H∣0⟩=21(111−1)(10)
矩陣乘法:
第一個元素:21(1×1+1×0)=21
第二個元素:21(1×1+(−1)×0)=21
結果:
H∣0⟩=21(11)=21(∣0⟩+∣1⟩)=∣+⟩
✅ Hadamard 創造咗 50-50 嘅疊加態!
例子 3:Z 閘作用喺疊加態
假設我哋有 ∣+⟩=21(∣0⟩+∣1⟩),計 Z∣+⟩:
Z∣+⟩=Z⋅21(∣0⟩+∣1⟩)=21(Z∣0⟩+Z∣1⟩)
我哋知道 Z∣0⟩=∣0⟩ 同 Z∣1⟩=−∣1⟩,所以:
Z∣+⟩=21(∣0⟩−∣1⟩)=∣−⟩
✅ Z 閘將 ∣+⟩ 變成 ∣−⟩!
例子 4:連續應用閘 - H² = I
計 HH∣0⟩(做兩次 Hadamard):
第一次 H:
H∣0⟩=21(∣0⟩+∣1⟩)
第二次 H:
H⋅21(∣0⟩+∣1⟩)=21(H∣0⟩+H∣1⟩)
我哋知道:
- H∣0⟩=21(∣0⟩+∣1⟩)
- H∣1⟩=21(∣0⟩−∣1⟩)
代入:
21[21(∣0⟩+∣1⟩)+21(∣0⟩−∣1⟩)]
=21(∣0⟩+∣1⟩+∣0⟩−∣1⟩)=21(2∣0⟩)=∣0⟩
✅ 做兩次 Hadamard 返返原本嘅態!
閘嘅共軛:HXH 同 HZH
Hadamard 有一個神奇嘅性質:佢可以將 X 同 Z 互換!呢個叫做基底變換(basis change)。
HXH = Z(證明)
我哋想證明 HXH=Z。用矩陣乘法:
步驟 1:計 XH
XH=(0110)⋅21(111−1)
=21(0×1+1×11×1+0×10×1+1×(−1)1×1+0×(−1))
=21(11−11)
步驟 2:計 H(XH)
HXH=21(111−1)⋅21(11−11)
=21(1×1+1×11×1+(−1)×11×(−1)+1×11×(−1)+(−1)×1)
=21(200−2)=(100−1)=Z
✅ 證明完成:HXH = Z
物理意義: Hadamard 將「bit flip」(X)變成「phase flip」(Z)!
HZH = X(證明)
同樣道理,我哋可以證明 HZH=X:
步驟 1:計 ZH
ZH=(100−1)⋅21(111−1)
=21(1−111)
步驟 2:計 H(ZH)
HZH=21(111−1)⋅21(1−111)
=21(1×1+1×(−1)1×1+(−1)×(−1)1×1+1×11×1+(−1)×1)
=21(0220)=(0110)=X
✅ 證明完成:HZH = X
物理意義: Hadamard 將「phase flip」(Z)變成「bit flip」(X)!
點解呢個咁重要?
呢個性質喺量子電路設計入面好有用:
- 等價電路:如果你有一個用 X 閘嘅電路,可以用 H-Z-H 代替,反之亦然
- 基底變換:Hadamard 將計算基底 {∣0⟩,∣1⟩} 變成 Hadamard 基底 {∣+⟩,∣−⟩}
- 量子演算法設計:好多演算法(例如 Deutsch-Jozsa)就係利用呢種對稱性
電路等價性:
|ψ⟩ ───[X]─── = |ψ⟩ ───[H]───[Z]───[H]───
|ψ⟩ ───[Z]─── = |ψ⟩ ───[H]───[X]───[H]───
閘嘅交換性(Gate Commutation)
喺量子電路設計入面,了解邊啲閘可以交換順序(commute)係好重要嘅,因為呢個會影響電路優化同錯誤分析。
咩係 Commutation?
如果兩個閘 A 同 B 滿足 AB=BA,我哋就話佢哋可交換(commute)。數學上,我哋用**對易子(commutator)**嚟量度:
[A,B]=AB−BA
- 如果 [A,B]=0,閘可交換
- 如果 [A,B]=0,閘唔可交換
Pauli Gates 嘅交換規則
唔可交換嘅組合:
XZ=−ZX,XY=−YX,YZ=−ZY
驗證 XZ ≠ ZX:
XZ=(0110)(100−1)=(01−10)
ZX=(100−1)(0110)=(0−110)
明顯地 XZ=ZX,事實上 XZ=−ZX(差一個負號)。
重要關係:
XY=iZ,YZ=iX,ZX=iY
常見可交換組合
1. 相同嘅閘:
XX=I,YY=I,ZZ=I,HH=I
2. 作用喺唔同 qubit 嘅閘:
(X⊗I)(I⊗Z)=(I⊗Z)(X⊗I)
作用喺唔同 qubit 嘅閘一定可交換。
3. 閘同自己嘅函數:
- Z 同任何對角矩陣(S, T, Rz)可交換
- 任何閘同 Identity (I) 可交換
4. 特殊組合:
HSH=S†,HTH=T†
多 Qubit 閘嘅交換
CNOT 同單 qubit 閘:
喺控制 qubit 上面應用 Z:
● Z
│ = ●
⊕ ⊕
Z ───●─── ───●───
│ │
⊕ ⊕
(Z 喺控制 qubit 可以穿過 CNOT)
喺目標 qubit 上面應用 X:
───●─── ───●───
│ = │
───⊕─── X X ───⊕───
(X 喺目標 qubit 可以穿過 CNOT)
但係:
───●─── ───●─── X
│ ≠ X │
───⊕─── ───⊕───
(X 喺控制 qubit 唔可以直接穿過!)
電路優化應用
例子 1:消除冗餘閘
|ψ⟩ ───[X]───[X]─── = |ψ⟩ ─────────
因為 X2=I,兩個連續嘅 X 閘可以消除。
例子 2:閘重新排序
|ψ⟩ ───[Z]───[H]─── = |ψ⟩ ───[H]───[X]───
利用 HZH = X,我哋可以將 Z 閘「推」過 Hadamard。
例子 3:並行化
如果兩個閘作用喺唔同 qubit 而且可交換,佢哋可以並行執行,減少電路深度:
original: optimized:
|q₀⟩ ───[X]─── |q₀⟩ ───[X]───
|q₁⟩ ───[Z]─── |q₁⟩ ───[Z]───
(parallel!)
點解 Commutation 重要?
- 電路優化: 重新排列閘嚟減少深度或消除冗餘
- 錯誤分析: 唔可交換嘅閘會累積誤差
- 量子糾錯: 穩定子碼依賴可交換嘅 Pauli 算符
- 理論理解: 可觀測量(observables)可交換 ⟺ 可以同時測量
💡 實用提示: 喺設計量子電路時,盡量將可交換嘅閘放埋一齊,咁樣可以用編譯器優化電路深度。例如 Qiskit 嘅 transpile() 函數會自動做呢啲優化!
💡 重點: 單 qubit 閘可以實現任意嘅旋轉同相位改變,但要實現量子計算嘅完整功能,我哋需要多 qubit 閘。
電路恆等式(Circuit Identities)
電路恆等式係一組等價電路變換規則,佢哋喺電路優化、演算法設計同理解量子計算嘅結構入面好重要。掌握呢啲恆等式可以幫你簡化電路、減少閘數量、降低錯誤率。
基本閘恆等式
1. 自逆閘(Self-Inverse Gates)
好多量子閘做兩次等於冇做(identity):
X2=I,Y2=I,Z2=I,H2=I
電路表達:
|ψ⟩ ───[X]───[X]─── = |ψ⟩ ─────────
呢個喺電路優化入面好有用,可以消除成對出現嘅閘。
2. 相位閘嘅層次關係
相位閘之間有美麗嘅層次結構:
T2=S,S2=Z,T4=Z
(T†)2=S†,(S†)2=Z
3. 閘同自己嘅共軛
S⋅S†=I,T⋅T†=I
Hadamard 基底變換恆等式
Hadamard 閘可以將 Pauli 閘「翻轉」:
HXH = Z,HZH = X
|ψ⟩ ───[H]───[X]───[H]─── = |ψ⟩ ───[Z]───
|ψ⟩ ───[H]───[Z]───[H]─── = |ψ⟩ ───[X]───
HYH = -Y
Y 閘喺 Hadamard 變換下保持不變(除咗一個全局相位)。
HSH = S†,HTH = T†
|ψ⟩ ───[H]───[S]───[H]─── = |ψ⟩ ───[S†]───
Pauli 閘恆等式
1. Pauli 閘嘅反交換關係
XZ=−ZX,XY=−YX,YZ=−ZY
2. Pauli 閘嘅乘積
XY=iZ,YZ=iX,ZX=iY
(忽略全局相位時)
XYZ=iI
3. Pauli 閘同自己嘅組合
XX=YY=ZZ=I
多 Qubit 電路恆等式
1. CNOT 嘅對稱性
CNOT 可以用 Hadamard 「翻轉」控制同目標:
● ⊕
│ [H] [H] │
─────⊕─── = ───●─────●───●───
即係:
(H⊗H)⋅CNOT⋅(H⊗H)=CNOTreversed
2. CNOT 同 Pauli 閘嘅交換
Z 閘喺控制 qubit 可以穿過 CNOT:
Z ───●─── = ───●─── Z
│ │
─────⊕─── ───⊕───
X 閘喺目標 qubit 可以穿過 CNOT:
─────●─── ───●───
│ │
X ───⊕─── = ───⊕─── X
X 閘喺控制 qubit 會喺兩個 qubit 都加 X:
X ───●─── = ───●─── X
│ │
─────⊕─── ───⊕─── X
Z 閘喺目標 qubit 保持不變:
─────●─── ───●───
│ │
Z ───⊕─── = Z ──⊕─── Z
3. CNOT 分解恆等式
CNOT = Controlled-Z + Hadamard:
control: ───●─── control: ─────●─────
│ = │
target: ───⊕─── target: ──H──●──H──
CNOT=(I⊗H)⋅CZ⋅(I⊗H)
4. SWAP 恆等式
SWAP = 3 個 CNOT:
|a⟩ ───×─── |a⟩ ───●───⊕───●───
│ = │ │ │
|b⟩ ───×─── |b⟩ ───⊕───●───⊕───
SWAP² = I:
做兩次 SWAP 返回原狀態。
進階電路恆等式
1. Bell 態製備嘅等價形式
以下電路都創造 Bell 態 21(∣00⟩+∣11⟩):
方法 1: 方法 2:
|0⟩ ───[H]───●─── |0⟩ ─────●───[H]───
│ │
|0⟩ ─────────⊕─── |0⟩ ───[H]─●───────
2. 相位 Kickback
當控制 qubit 處於疊加態時,controlled gate 嘅相位會「kick back」到控制 qubit:
|+⟩ ───●─── |+⟩ ─────── (帶相位改變)
│
|ψ⟩ ───U─── |ψ⟩ ───U───
呢個係 Deutsch-Jozsa 同 Shor 演算法嘅核心機制。
3. 旋轉閘嘅組合
旋轉閘滿足加法性質:
Rz(θ1)⋅Rz(θ2)=Rz(θ1+θ2)
Rx(θ1)⋅Rx(θ2)=Rx(θ1+θ2)
4. Toffoli 閘恆等式
Toffoli (CCNOT) 可以用 6 個 CNOT + 單 qubit 閘實現:
|a⟩ ───●─── |a⟩ ───────●─────────●───T───●─────────
│ │ │ │
|b⟩ ───●─── ≈ |b⟩ ───●───T†──●───●───●───T───●───
│ │ │ │ │
|c⟩ ───⊕─── |c⟩ ───●───T────●───T†──────────●───H───
測量恆等式
1. 測量 commutation
Z-basis 測量同 Z 閘可交換:
───[Z]───[M]─── = ───[M]───[Z]───
但係 Z-basis 測量同 X 閘唔可交換。
2. 延遲測量原理(Deferred Measurement)
任何中途嘅測量都可以推遲到電路尾:
───[M]───●─── ─────●───[M]───
│ = │
─────────U─── ───[U]───────
(需要將 controlled gate 變成 classically controlled gate)
實用電路簡化例子
例子 1:消除冗餘閘
Before: |ψ⟩ ───[H]───[Z]───[H]───
After: |ψ⟩ ───[X]───
利用 HZH = X 簡化。
例子 2:合併相位閘
Before: |ψ⟩ ───[T]───[T]───
After: |ψ⟩ ───[S]───
利用 T² = S。
例子 3:CNOT 優化
Before: ───●───●───
│ │
────⊕───⊕───
After: ─────────── (消除咗!)
因為 CNOT² = I。
例子 4:將 Z 閘推到電路尾
Before: |ψ⟩ ───[Z]───[H]───[T]───
After: |ψ⟩ ───[H]───[X]───[T]─── (利用 HZH = X)
點解電路恆等式重要?
1. 電路優化
- 減少閘數量:減少錯誤累積
- 減少深度:減少退相干影響
- 降低成本:特別係昂貴嘅閘(例如 T gate)
2. 演算法設計
- 幫助你發現等價但更簡單嘅實現方式
- 理解演算法嘅對稱性同結構
3. 硬體適配
- 將電路轉換成硬體原生支援嘅閘集合
- 例如:將 CNOT 轉換成 CZ(IBM)或 iSWAP(Google)
4. 錯誤分析
- 了解邊啲閘可以交換有助於理解錯誤傳播
- 設計更魯棒嘅電路
5. 形式驗證
電路恆等式速查表
| 恆等式 | 描述 | 用途 |
|---|
| X2=Y2=Z2=H2=I | 自逆閘 | 消除成對閘 |
| HXH=Z,HZH=X | 基底變換 | 閘替換 |
| T2=S,S2=Z | 相位閘層次 | 合併相位閘 |
| CNOT = (I⊗H)·CZ·(I⊗H) | CNOT 分解 | 硬體適配 |
| SWAP = 3×CNOT | SWAP 分解 | 減少原生閘 |
| XY = iZ | Pauli 乘積 | 理論分析 |
實際應用:用 Qiskit 驗證恆等式
你可以用 Qiskit 嚟驗證呢啲恆等式:
from qiskit import QuantumCircuit
from qiskit.quantum_info import Operator
import numpy as np
qc1 = QuantumCircuit(1)
qc1.x(0)
qc1.x(0)
qc2 = QuantumCircuit(1)
U1 = Operator(qc1)
U2 = Operator(qc2)
print("X² = I?", np.allclose(U1.data, U2.data))
qc3 = QuantumCircuit(1)
qc3.h(0)
qc3.z(0)
qc3.h(0)
qc4 = QuantumCircuit(1)
qc4.x(0)
U3 = Operator(qc3)
U4 = Operator(qc4)
print("HZH = X?", np.allclose(U3.data, U4.data))
💡 實用提示: 喺設計量子電路時,時刻記住呢啲恆等式。好多時候,一個看似複雜嘅電路可以用恆等式簡化成幾個閘。Qiskit 嘅 transpile() 函數會自動應用好多呢啲優化,但手動理解佢哋會幫你設計更好嘅演算法!
多 Qubit 閘:糾纏與交互
單 qubit 閘唔能夠創造糾纏態,所以我哋需要多 qubit 閘嚟實現 qubit 之間嘅互動。
CNOT Gate:條件翻轉
CNOT(Controlled-NOT) 係最基本嘅雙 qubit 閘:
- 有一個控制 qubit(control)同一個目標 qubit(target)
- 如果控制 qubit 係 ∣1⟩,就翻轉目標 qubit
- 如果控制 qubit 係 ∣0⟩,目標 qubit 保持不變
矩陣表示:
CNOT=1000010000010010
作用:
- CNOT∣00⟩=∣00⟩
- CNOT∣01⟩=∣01⟩
- CNOT∣10⟩=∣11⟩(翻轉第二個 qubit)
- CNOT∣11⟩=∣10⟩(翻轉第二個 qubit)
電路符號:
control: |a⟩ ───●───
│
target: |b⟩ ───⊕─── |a ⊕ b⟩
其中 ● 代表控制,⊕ 代表 XOR 操作。
創造 Bell 態(糾纏態)
CNOT + Hadamard 可以創造 Bell 態:
|0⟩ ───[H]───●───
│
|0⟩ ─────────⊕───
結果:
21(∣00⟩+∣11⟩)
呢個係最大糾纏態(maximally entangled state)。
SWAP Gate:交換 Qubit
SWAP Gate 交換兩個 qubit 嘅狀態:
SWAP=1000001001000001
作用:
- SWAP∣01⟩=∣10⟩
- SWAP∣10⟩=∣01⟩
電路符號:
|a⟩ ───×─── |b⟩
│
|b⟩ ───×─── |a⟩
SWAP 同 CNOT 嘅關係
SWAP 可以用三個 CNOT 實現:
|a⟩ ───●───⊕───●───
│ │ │
|b⟩ ───⊕───●───⊕───
呢個分解喺實際量子硬體入面好重要,因為好多量子處理器原生支援 CNOT 但唔一定有 SWAP。
SWAP 喺 CZ-based 硬體(例如 IBM Heron)
有啲量子處理器(例如 IBM Heron)用 CZ(Controlled-Z) 作為原生雙 qubit 閘,而唔係 CNOT。喺呢啲系統上面實現 SWAP 需要唔同嘅分解方法。
首先,點樣將 CNOT 轉換成 CZ?
CNOT 可以用 CZ + Hadamard 嚟實現:
control: |a⟩ ───●─── control: |a⟩ ─────●─────
│ = │
target: |b⟩ ───⊕─── target: |b⟩ ──H──●──H──
即係:CNOT = (I ⊗ H) · CZ · (I ⊗ H)
喺 CZ 硬體上實現 SWAP:
由於 SWAP = 3 個 CNOT,而每個 CNOT = H-CZ-H,所以我哋可以將三個 CNOT 展開。不過相鄰嘅 Hadamard 會互相抵消(H2=I),所以最終簡化成:
|a⟩ ──H──●────●────●──H──
│ │ │
|b⟩ ─────●──H─●──H─●─────
結果:3 個 CZ + 4 個 H
硬體優勢:
- CZ 閘係原生操作,冇分解開銷
- 單 qubit 閘(H, Rx, Ry)通常比雙 qubit 閘快 10-100 倍,而且保真度更高
- 雖然總閘數多咗,但喺 CZ-native 硬體上,呢個電路嘅誤差率可能更低!
💡 實際考慮: 選擇閘分解方法時,要考慮你用緊嘅量子硬體原生支援邊種閘。IBM 用 CZ,Google 用 iSWAP,IonQ 用全連接嘅 Mølmer-Sørensen 閘——每種硬體都有最優嘅分解策略。
Controlled-U Gates
任何單 qubit 閘 U 都可以變成 controlled 版本:
Controlled-Z (CZ):
|a⟩ ───●───
│
|b⟩ ───●───
只有當兩個 qubit 都係 ∣1⟩ 時先加入負號相位。
Controlled-Phase:
|a⟩ ───●───
│
|b⟩ ───[P]───
Toffoli Gate (CCNOT):雙控制閘
Toffoli Gate 有兩個控制 qubit,只有當兩個都係 ∣1⟩ 時先翻轉目標:
|a⟩ ───●───
│
|b⟩ ───●───
│
|c⟩ ───⊕─── |c ⊕ (a ∧ b)⟩
Toffoli Gate 係通用經典計算閘,可以實現任何經典邏輯函數。
💡 重點: 任何量子演算法都可以用 {CNOT, Hadamard, T} 呢組「通用閘集合(universal gate set)」嚟實現。
量子電路:組合閘嚟建立演算法
量子演算法係由一系列量子閘按順序作用喺 qubit 上面,最後進行測量。
電路圖示例:量子隱形傳態
**量子隱形傳態(Quantum Teleportation)**係一個經典應用,展示咗量子糾纏嘅威力:
|ψ⟩ ───────●───[H]───[M]───╭─── (經典信息傳送)
│ │ │
|0⟩ ───[H]─⊕─────────[M]───┼─╮
│ │
|0⟩ ─────────────────────────X─Z─── |ψ⟩
步驟:
- 創造 Bell 態(qubit 2 同 3)
- CNOT + Hadamard(qubit 1 同 2)
- 測量 qubit 1 同 2
- 根據測量結果,喺 qubit 3 應用 X 或 Z
- Qubit 3 最終處於原本嘅 ∣ψ⟩ 態
量子並行性:Deutsch-Jozsa 演算法
呢個演算法展示量子電腦點樣用一次查詢解決經典需要多次查詢嘅問題:
|0⟩ ───[H]───────────[H]───[M]
│ │
|1⟩ ───[H]─[Oracle]─────────
透過 Hadamard 創造疊加態,再用 Oracle 同時查詢所有可能輸入,最後用干涉提取答案。
電路深度同寬度
- 寬度(Width):電路用咗幾多個 qubit
- 深度(Depth):電路有幾多層閘(時間步數)
深度越淺,**退相干(decoherence)**嘅影響越細,所以設計淺電路係量子演算法優化嘅重要目標。
量子電路嘅通用性
Solovay-Kitaev 定理證明咗:任何單 qubit 閘都可以用有限集合嘅閘(例如 {H,T})任意精確咁近似。結合 CNOT,我哋可以實現任意量子計算。
常見通用閘集合:
- {CNOT, H, T}:容錯量子計算標準
- {CNOT, Ry, Rz}:連續參數閘(variational 演算法常用)
- {CNOT, U3}:單參數通用閘(IBM Qiskit 常用)
實際應用:點樣設計量子電路?
變分量子演算法(VQE)
**VQE(Variational Quantum Eigensolver)**用可調參數嘅量子電路嚟搵分子嘅基態能量:
|0⟩ ───[Ry(θ₁)]───●───────[Ry(θ₃)]───
│
|0⟩ ───[Ry(θ₂)]───⊕───●───[Ry(θ₄)]───
│
|0⟩ ───────────────────⊕──────────────
透過經典優化器調整 θi,搵到最低能量。
量子機器學習
**量子卷積神經網絡(QCNN)**用量子電路嚟做圖像分類:
- Convolution layer:局部量子閘作用喺相鄰 qubit
- Pooling layer:測量部分 qubit 並縮減系統大小
- 分類:最後測量得出分類結果
量子糾錯
實際量子電腦有雜訊,需要量子糾錯碼:
- Shor Code:9 個 qubit 保護 1 個邏輯 qubit
- Surface Code:用 2D 網格嘅 qubit,容錯量子計算嘅主流方案
糾錯電路會包含:
- Syndrome measurement:用 ancilla qubit 偵測錯誤
- Correction gates:根據測量結果應用糾正閘
練習題同詳解
學完咗量子閘嘅理論,我哋嚟做啲練習鞏固吓!以下每題都有詳細步驟解答。
練習 1:基本單 qubit 閘運算
問題 1.1:計算 Z∣1⟩
解答:
Z∣1⟩=(100−1)(01)
矩陣乘法:
- 第一個元素:1×0+0×1=0
- 第二個元素:0×0+(−1)×1=−1
結果:
Z∣1⟩=(0−1)=−∣1⟩
✅ Z 閘將 ∣1⟩ 變成 −∣1⟩(加咗負號相位)
問題 1.2:計算 H∣1⟩
解答:
H∣1⟩=21(111−1)(01)
矩陣乘法:
- 第一個元素:21(1×0+1×1)=21
- 第二個元素:21(1×0+(−1)×1)=−21
結果:
H∣1⟩=21(1−1)=21(∣0⟩−∣1⟩)=∣−⟩
✅ Hadamard 將 ∣1⟩ 變成 ∣−⟩ 疊加態
問題 1.3:計算 Y∣1⟩
解答:
Y∣1⟩=(0i−i0)(01)
矩陣乘法:
- 第一個元素:0×0+(−i)×1=−i
- 第二個元素:i×0+0×1=0
結果:
Y∣1⟩=(−i0)=−i∣0⟩
✅ Y 閘將 ∣1⟩ 翻轉成 ∣0⟩ 並加咗相位 −i
練習 2:疊加態上嘅閘操作
問題 2.1:計算 X∣+⟩,其中 ∣+⟩=21(∣0⟩+∣1⟩)
解答:
方法 1(用線性性):
X∣+⟩=X⋅21(∣0⟩+∣1⟩)=21(X∣0⟩+X∣1⟩)
我哋知道 X∣0⟩=∣1⟩ 同 X∣1⟩=∣0⟩,所以:
X∣+⟩=21(∣1⟩+∣0⟩)=21(∣0⟩+∣1⟩)=∣+⟩
✅ X 閘唔改變 ∣+⟩! 因為 ∣+⟩ 對 X 翻轉對稱。
問題 2.2:計算 H∣−⟩,其中 ∣−⟩=21(∣0⟩−∣1⟩)
解答:
H∣−⟩=H⋅21(∣0⟩−∣1⟩)=21(H∣0⟩−H∣1⟩)
我哋知道:
- H∣0⟩=21(∣0⟩+∣1⟩)
- H∣1⟩=21(∣0⟩−∣1⟩)
代入:
21[21(∣0⟩+∣1⟩)−21(∣0⟩−∣1⟩)]
=21(∣0⟩+∣1⟩−∣0⟩+∣1⟩)=21(2∣1⟩)=∣1⟩
✅ Hadamard 將 ∣−⟩ 變返 ∣1⟩
練習 3:閘嘅組合(Composite Gates)
問題 3.1:驗證 XZ∣0⟩=−∣1⟩
解答:
步驟 1:先應用 Z
Z∣0⟩=∣0⟩
步驟 2:再應用 X
X(Z∣0⟩)=X∣0⟩=∣1⟩
咦,結果係 ∣1⟩ 而唔係 −∣1⟩?
讓我哋用另一個順序試吓:ZX∣0⟩
步驟 1:先應用 X
X∣0⟩=∣1⟩
步驟 2:再應用 Z
Z(X∣0⟩)=Z∣1⟩=−∣1⟩
✅ 重要發現:XZ=ZX! 量子閘嘅順序好重要,佢哋唔滿足交換律。
更正確嘅係:ZX∣0⟩=−∣1⟩
問題 3.2:驗證 HXH∣0⟩=Z∣0⟩
解答:
左邊:HXH∣0⟩
步驟 1:H∣0⟩=21(∣0⟩+∣1⟩)
步驟 2:X⋅21(∣0⟩+∣1⟩)=21(∣1⟩+∣0⟩)=21(∣0⟩+∣1⟩)
步驟 3:H⋅21(∣0⟩+∣1⟩)=H∣+⟩=∣0⟩
右邊:Z∣0⟩
Z∣0⟩=∣0⟩
結果: HXH∣0⟩=∣0⟩=Z∣0⟩ ✅
試埋 ∣1⟩:
HXH∣1⟩=H(X(∣−⟩))=H∣−⟩=∣1⟩
但 Z∣1⟩=−∣1⟩ ❌
等等,點解有差異? 因為全局相位!實際上 HXH=Z(作為算符),但喺計算 ∣1⟩ 時要留意相位。
練習 4:多 Qubit 閘(CNOT)
問題 4.1:計算 CNOT∣10⟩
解答:
∣10⟩=∣1⟩⊗∣0⟩=0010
CNOT 矩陣:
CNOT=1000010000010010
矩陣乘法:
10000100000100100010=0001=∣11⟩
✅ 控制 qubit 係 1,所以目標 qubit 被翻轉:∣10⟩→∣11⟩
問題 4.2:計算 CNOT(H⊗I)∣00⟩(創造 Bell 態)
解答:
步驟 1:應用 H⊗I 喺 ∣00⟩ 上
(H⊗I)∣00⟩=H∣0⟩⊗I∣0⟩=21(∣0⟩+∣1⟩)⊗∣0⟩
=21(∣00⟩+∣10⟩)
步驟 2:應用 CNOT
CNOT⋅21(∣00⟩+∣10⟩)=21(CNOT∣00⟩+CNOT∣10⟩)
我哋知道:
- CNOT∣00⟩=∣00⟩(控制係 0,冇翻轉)
- CNOT∣10⟩=∣11⟩(控制係 1,翻轉目標)
結果:
21(∣00⟩+∣11⟩)
✅ 呢個就係 Bell 態!最大糾纏態。
練習 5:SWAP 閘分解
問題 5.1:用三個 CNOT 實現 SWAP,驗證 ∣01⟩→∣10⟩
解答:
SWAP 分解:
|a⟩ ───●───⊕───●───
│ │ │
|b⟩ ───⊕───●───⊕───
從 ∣01⟩ 開始(第一個 qubit 係 ∣0⟩,第二個係 ∣1⟩):
第一個 CNOT(控制:上,目標:下):
CNOT12∣01⟩=∣01⟩
(控制 qubit 係 0,所以冇變化)
第二個 CNOT(控制:下,目標:上):
CNOT21∣01⟩=∣11⟩
(控制 qubit 係 1,翻轉目標 qubit:0→1)
第三個 CNOT(控制:上,目標:下):
CNOT12∣11⟩=∣10⟩
(控制 qubit 係 1,翻轉目標 qubit:1→0)
最終結果:∣01⟩→∣10⟩ ✅
兩個 qubit 嘅狀態成功交換咗!
挑戰題:進階計算
挑戰 1:證明 (H⊗H)(CNOT)(H⊗H)=CZ
提示: 用矩陣乘法計算,或者用 HXH = Z 同 HZH = X 嘅關係。
挑戰 2:計算 Toffoli 閘(CCNOT)作用喺 ∣110⟩ 上嘅結果。
挑戰 3:如果 ∣ψ⟩=21(∣00⟩+∣01⟩+∣10⟩+∣11⟩),計算 (H⊗I)∣ψ⟩。
💡 練習心得: 多做計算練習係掌握量子電路嘅關鍵!嘗試用唔同方法(矩陣乘法 vs 線性性)解同一題,可以加深理解。
實作工具:點樣寫量子電路?
Qiskit (IBM)
from qiskit import QuantumCircuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
qc.draw('mpl')
Cirq (Google)
import cirq
q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit(
cirq.H(q0),
cirq.CNOT(q0, q1),
cirq.measure(q0, q1, key='result')
)
PennyLane (量子機器學習)
import pennylane as qml
dev = qml.device('default.qubit', wires=2)
@qml.qnode(dev)
def circuit(params):
qml.RY(params[0], wires=0)
qml.CNOT(wires=[0, 1])
return qml.expval(qml.PauliZ(1))
Conclusion
量子電路係量子計算嘅核心語言,透過 Dirac notation 同各種量子閘,我哋可以精確描述同操控量子態。由最基本嘅 Pauli Gates 到創造疊加態嘅 Hadamard Gate,再到創造糾纏嘅 CNOT 同交換狀態嘅 SWAP,每個閘都有佢獨特嘅作用。
量子電路設計同經典電路設計有根本差異:
- 么正性:所有操作必須可逆
- 疊加性:可以同時處理多個狀態
- 糾纏性:多個 qubit 可以形成不可分割嘅整體
- 測量限制:測量會破壞量子態
今日,量子電路已經應用喺:
- 量子化學:計算分子能量(VQE)
- 密碼學:Shor 演算法分解質因數
- 優化問題:QAOA 搵最佳解
- 機器學習:量子神經網絡
雖然當前嘅量子電腦仍然有雜訊同限制(NISQ 時代),但隨住硬體進步同糾錯技術成熟,量子電路將會成為解決某啲經典電腦無法處理問題嘅關鍵工具。
掌握量子電路,就係掌握咗量子計算嘅基礎——無論你係想研究量子演算法、開發量子軟件、定係探索量子硬體,呢啲都係必不可少嘅知識。
About the Author
Billy Tse 係一位專注於 AI 教育產品嘅軟件工程師,對量子計算、機器學習同電腦視覺有濃厚興趣。透過 SmartQuest 平台,佢致力將前沿科技知識帶俾香港嘅教育工作者同學生。