[ PROMPT_NODE_26296 ]
building
[ SKILL_DOCUMENTATION ]
# 构建量子电路
本指南涵盖了 Cirq 中的电路构建,包括量子比特、门、操作和电路模式。
## 基础电路构建
### 创建电路
python
import cirq
# 创建电路
circuit = cirq.Circuit()
# 创建量子比特
q0 = cirq.GridQubit(0, 0)
q1 = cirq.GridQubit(0, 1)
q2 = cirq.LineQubit(0)
# 向电路添加门
circuit.append([
cirq.H(q0),
cirq.CNOT(q0, q1),
cirq.measure(q0, q1, key='result')
])
### 量子比特类型
**GridQubit**: 用于硬件类布局的二维网格拓扑
python
qubits = cirq.GridQubit.square(2) # 2x2 网格
qubit = cirq.GridQubit(row=0, col=1)
**LineQubit**: 一维线性拓扑
python
qubits = cirq.LineQubit.range(5) # 5 个量子比特排成一行
qubit = cirq.LineQubit(3)
**NamedQubit**: 自定义名称的量子比特
python
qubit = cirq.NamedQubit('my_qubit')
## 常用门与操作
### 单量子比特门
python
# Pauli 门
cirq.X(qubit) # 非门
cirq.Y(qubit)
cirq.Z(qubit)
# Hadamard 门
cirq.H(qubit)
# 旋转门
cirq.rx(angle)(qubit) # 绕 X 轴旋转
cirq.ry(angle)(qubit) # 绕 Y 轴旋转
cirq.rz(angle)(qubit) # 绕 Z 轴旋转
# 相位门
cirq.S(qubit) # √Z 门
cirq.T(qubit) # ⁴√Z 门
### 双量子比特门
python
# CNOT (受控非门)
cirq.CNOT(control, target)
cirq.CX(control, target) # 别名
# CZ (受控 Z 门)
cirq.CZ(q0, q1)
# SWAP (交换门)
cirq.SWAP(q0, q1)
# iSWAP
cirq.ISWAP(q0, q1)
# 受控旋转
cirq.CZPowGate(exponent=0.5)(q0, q1)
### 测量操作
python
# 测量单个量子比特
cirq.measure(qubit, key='m')
# 测量多个量子比特
cirq.measure(q0, q1, q2, key='result')
# 测量电路中所有量子比特
circuit.append(cirq.measure(*qubits, key='final'))
## 高级电路构建
### 参数化门
python
import sympy
# 创建符号参数
theta = sympy.Symbol('theta')
phi = sympy.Symbol('phi')
# 在门中使用
circuit = cirq.Circuit(
cirq.rx(theta)(q0),
cirq.ry(phi)(q1),
cirq.CNOT(q0, q1)
)
# 稍后解析参数
resolved = cirq.resolve_parameters(circuit, {'theta': 0.5, 'phi': 1.2})
### 通过酉矩阵自定义门
python
import numpy as np
# 定义酉矩阵
unitary = np.array([
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 1, 0]
]) / np.sqrt(2)
# 从酉矩阵创建门
gate = cirq.MatrixGate(unitary)
operation = gate(q0, q1)
### 门分解
python
# 定义自定义门