3.1 單量子位元閘 H、X、Z#
概念說明#
單量子位元閘是 \(2\times2\) 么正矩陣,對應布洛赫球上的旋轉:
| 閘 | 矩陣 | 作用 | 布洛赫球意義 |
|---|---|---|---|
| \(X\) | \(\begin{pmatrix}0&1\\1&0\end{pmatrix}\) | $ | 0\rangle!\leftrightarrow! |
| \(Z\) | \(\begin{pmatrix}1&0\\0&-1\end{pmatrix}\) | $ | 1\rangle \to - |
| \(H\) | \(\frac{1}{\sqrt2}\begin{pmatrix}1&1\\1&-1\end{pmatrix}\) | $ | 0\rangle!\to! |
| \(S\) | \(\mathrm{diag}(1,i)\) | $ | 1\rangle \to i |
| \(T\) | \(\mathrm{diag}(1, e^{i\pi/4})\) | 加 \(\pi/4\) 相位 | 繞 z 軸轉 \(45°\) |
三個關鍵觀察:
- H 產生疊加: \(H|0\rangle = \frac{|0\rangle+|1\rangle}{\sqrt2} = |+\rangle\) 。這是所有量子演算法的第一步。
- Z 改變相位不改變機率:對 \(|+\rangle\) 作用 Z 得 \(\frac{|0\rangle-|1\rangle}{\sqrt2}=|-\rangle\) ,測量機率仍是 50/50,但相位資訊藏在相對符號裡。Grover 演算法(第 6 章)正是靠相位操作累積出可測量的差異。
- H 的共軛性質: \(HXH = Z\) 、 \(HZH = X\) 、 \(H^2 = I\) 。H 是「把 x 軸與 z 軸互換」的轉換。
演算法步驟(模擬單閘電路)#
- 初始化狀態向量為基底態。
- 依電路順序,把每個閘的矩陣乘上狀態向量。
- 最後取振幅平方得到測量機率分佈。
Python 範例#
import numpy as np
X = np.array([[0, 1], [1, 0]], dtype=complex)
Z = np.array([[1, 0], [0, -1]], dtype=complex)
H = np.array([[1, 1], [1, -1]], dtype=complex) / np.sqrt(2)
S = np.array([[1, 0], [0, 1j]], dtype=complex)
T = np.array([[1, 0], [0, np.exp(1j*np.pi/4)]], dtype=complex)
ket0 = np.array([1, 0], dtype=complex)
def run(gates, init=ket0):
psi = init.copy()
for g in gates:
psi = g @ psi
return psi
psi = run([H, S]) # |0> -> |+> -> 加 i 相位
print("H·S|0> =", np.round(psi, 3))
print("機率分佈:", np.abs(psi)**2) # [0.5, 0.5]
# 驗證共軛關係
print("HXH == Z:", np.allclose(H @ X @ H, Z))
print("H^2 == I:", np.allclose(H @ H, np.eye(2)))
# X·X = I:量子閘是可逆的
print("XX|0> =", run([X, X]))
複雜度分析#
單一單量子位元閘在 \(n\) 位元狀態向量上:作用在第 0 個(最低位)位元時可向量化地一次更新所有振幅對,成本 \(O(2^n)\) ;純矩陣乘法 \(2\times2 \cdot 2^n\) 亦是 \(O(2^n)\) 。模擬長度 \(m\) 的電路總成本 \(O(m\,2^n)\) 。
練習#
- 計算 \(TH\) 作用在 \(|0\rangle\) 的結果,並求各基底態的測量機率。
- 證明 \(X = HR_z(\pi)H\) (其中 \(R_z(\theta)=\mathrm{diag}(e^{-i\theta/2},e^{i\theta/2})\) ),這是「Z 型閘可轉成 X 型閘」的例子。
- (程式)用
run函式驗證:對 \(|+\rangle\) 交替作用 Z 與 H,兩次後回到 \(|+\rangle\) ;說明為什麼。