我们来详细介绍量子计算经典模拟器中一种非常强大且物理意义深刻的方法——张量网络模拟器(Tensor Network Simulator),并重点关注其在量子计算模拟中最常见的形式:基于矩阵乘积态(Matrix Product State, MPS)的模拟器。
引言:为什么需要状态向量和密度矩阵之外的模拟器?¶
状态向量(Statevector)和密度矩阵(Density Matrix)模拟器都面临着同一个根本性的挑战:维度的诅咒(Curse of Dimensionality)。存储一个 $n$ 量子比特的状态需要 $O(2^n)$ 或 $O(4^n)$ 的内存,这使得模拟超过 50 个量子比特的系统变得几乎不可能。
然而,物理学家发现,在巨大的希尔伯特空间中,那些具有物理意义的量子态(例如,许多物理系统的基态)并非随机分布的,而是占据了一个非常小的角落。这些“特殊”的状态通常具有一个共同的特征:它们的纠缠度不高。
张量网络(Tensor Network)就是一种专门为高效表示和操作这类低纠缠度量子态而设计的数学框架。它通过将一个巨大的、高阶的张量(即状态向量)分解为许多小的、低阶张量的网络,从而绕过了维度的诅咒。
一、 张量网络与矩阵乘积态(MPS)的数学模型¶
核心思想:分解状态向量¶
一个 $n$ 量子比特系统的状态向量可以写为: $$ |\psi⟩ = \sum_{i_1, i_2, \dots, i_n=0}^{1} C_{i_1 i_2 \dots i_n} |i_1 i_2 \dots i_n⟩ $$ 这里的系数 $C_{i_1 i_2 \dots i_n}$ 是一个包含 $2^n$ 个复数的集合,可以看作是一个秩为 $n$ 的张量。张量网络的目标就是分解这个大张量 $C$。
矩阵乘积态 (Matrix Product State, MPS)¶
MPS 是最简单、最基础的张量网络,它将这个秩为 $n$ 的张量分解为一个一维的张量链。具体来说,它将系数 $C_{i_1 i_2 \dots i_n}$ 表示为一系列矩阵的乘积:
$$ C_{i_1 i_2 \dots i_n} = A^{[1]}_{i_1} \cdot A^{[2]}_{i_2} \cdot \dots \cdot A^{[n]}_{i_n} $$
这里的“$\cdot$”代表矩阵乘法。我们来仔细看一下每个元素的结构:
- $A^{[k]}_{i_k}$ 是与第 $k$ 个量子比特相关的张量。
- $i_k$ 是物理指标 (physical index),取值为 0 或 1,对应于第 $k$ 个量子比特的状态 $|0⟩$ 或 $|1⟩$。
- 为了让矩阵乘法能够进行,$A^{[k]}_{i_k}$ 本身必须是一个矩阵。它有两个虚拟指标 (virtual indices) 或键指标 (bond indices),$\alpha_{k-1}$ 和 $\alpha_k$,用来与相邻的张量“连接”。
所以,更精确的写法是: $$ C_{i_1 i_2 \dots i_n} = \sum_{\alpha_1, \dots, \alpha_{n-1}} (A^{[1]}_{i_1})_{1, \alpha_1} (A^{[2]}_{i_2})_{\alpha_1, \alpha_2} \dots (A^{[n]}_{i_n})_{\alpha_{n-1}, 1} $$
图形化表示(这非常重要):
- 每个张量 $A^{[k]}$ 表示为一个“节点”或“方块”。
- 每个指标表示为从节点伸出的一条“腿”或“线”。
- 物理指标 $i_k$ 通常是竖直的腿。
- 虚拟指标 $\alpha_k$ 是水平的腿,连接相邻的张量。
一个 MPS 的图形表示就是一个链条:
i1 i2 i3 in
| | | |
---[A_1]--[A_2]--[A_3]--...--[A_n]---
α1 α2 α3 α(n-1)
(注:首尾的张量实际上是向量,因为它们只有一个虚拟指标。)
关键参数:键维度 (Bond Dimension, χ)¶
虚拟指标 $\alpha_k$ 的维度,记为 $\chi_k$,被称为键维度。整个 MPS 的最大键维度 $\chi = \max_k(\chi_k)$ 是衡量该 MPS 复杂度的关键参数。
内存消耗: 我们不再存储 $2^n$ 个系数。而是存储 $n$ 个张量。每个张量(除了两端)的大小约为 $2 \times \chi \times \chi$。总的内存消耗约为 $O(n \cdot d \cdot \chi^2)$(其中 $d=2$ 是物理维度)。如果 $\chi$ 是一个不随 $n$ 增大的小常数,那么内存消耗就是关于 $n$ 的多项式级别,而不是指数级别!这就是 MPS 打破维度诅咒的关键。
表达能力: $\chi$ 决定了 MPS 能表示多大程度的纠缠。任何量子态都可以精确地表示为 MPS,但对于高度纠缠的随机态,所需的 $\chi$ 会随 $n$ 指数增长($\chi \sim 2^{n/2}$),此时 MPS 将失去优势。
二、 MPS 的物理意义¶
MPS 的数学结构与量子态的物理性质,特别是纠缠,有着深刻的联系。
键维度与纠缠熵 (Entanglement Entropy)¶
将一个量子系统沿某处(例如第 $k$ 个比特和第 $k+1$ 个比特之间)切分成 A 和 B 两部分。这两部分之间的纠缠熵是衡量它们纠缠程度的量。
- 施密特分解 (Schmidt Decomposition): 任何纯态 $|\psi⟩$ 都可以沿这个切分写成 $|\psi⟩ = \sum_{i=1}^{r} s_i |\phi_i⟩_A |\theta_i⟩_B$。非零奇异值 $s_i$ 的数量 $r$ 被称为施密特秩。
- 物理意义: 施密特秩 $r$ 恰好等于穿过这个切分的 MPS 键的维度 $\chi_k$。
- 结论: 键维度 $\chi$ 直接量化了 MPS 所能承载的、跨越任何 bipartition 的最大纠缠量。 一个键维度为 $\chi$ 的 MPS,其任何 bipartition 的纠缠熵 $S$ 上限为 $S \le \log(\chi)$。
面积定律 (Area Law)¶
许多物理系统,特别是具有局域相互作用的哈密顿量的基态,其纠缠性质遵循一个深刻的规律——面积定律。
- 定律内容: 一个子区域的纠缠熵与其边界的“面积”(Area)成正比,而不是与其“体积”(Volume)成正比。
- 在 1D 系统中: 一个连续区域的“边界”只是两个点,与区域大小无关。这意味着,对于满足面积定律的 1D 系统,其纠缠熵是一个不随系统规模 $n$ 增长的常数。
- MPS 与面积定律: 由于 MPS 的纠缠能力由常数 $\chi$ 限定,它天然就是描述满足1D 面积定律的量子态的完美工具。这就是为什么 MPS 在凝聚态物理中模拟一维量子系统(如自旋链)的基态取得了巨大成功。
物理意义总结: MPS 模拟器之所以高效,是因为它利用了一个物理事实:宇宙中很多我们关心的低能量量子态都不是高度纠ว缠的。MPS 的数据结构通过键维度 $\chi$ 精确地抓住了这种低纠缠结构,从而用多项式资源来表示这些物理上重要的状态。
三、 基于 MPS 的量子计算模拟器如何工作?¶
一个 MPS 模拟器通过直接操作张量链来模拟量子电路的演化。
初始化: 一个初始态如 $|00...0⟩$ 是一个没有纠缠的乘积态。它可以被一个键维度 $\chi=1$ 的 MPS 精确表示。
应用单比特门: 在第 $k$ 个量子比特上应用一个门 $U$ 非常简单。只需将 $U$ 作用在张量 $A^{[k]}$ 的物理指标上即可。这个操作不会改变键维度。 $$ (A'^{[k]}_{i_k'})_{\alpha_{k-1}, \alpha_k} = \sum_{i_k=0}^1 U_{i_k', i_k} (A^{[k]}_{i_k})_{\alpha_{k-1}, \alpha_k} $$
应用两比特门(核心操作): 这是最关键且复杂的一步。假设在相邻的第 $k$ 和 $k+1$ 个比特上应用一个两比特门 $U$(例如 CNOT)。
- 收缩 (Contraction): 将相邻的两个张量 $A^{[k]}$ 和 $A^{[k+1]}$ 沿着它们共享的虚拟键 $\alpha_k$ 收缩成一个更大的张量 $\Theta$。这个张量有四个指标:两个物理指标 $i_k, i_{k+1}$ 和两个外部虚拟指标 $\alpha_{k-1}, \alpha_{k+1}$。
- 应用门: 将 $4 \times 4$ 的矩阵 $U$ 作用在 $\Theta$ 的两个物理指标上,得到新的张量 $\Theta'$。
- 分解与截断 (Decomposition & Truncation): 此时,连接 $\Theta'$ 的虚拟键维度可能会增大(最大可达 $d \cdot \chi$)。为了保持 MPS 结构的效率,必须将其分解回两个张量 $A'^{[k]}$ 和 $A'^{[k+1]}$,并将新的键维度截断回 $\chi$。
- 这个分解通常通过奇异值分解 (SVD) 完成。
- SVD 会给出一组奇异值,它们的大小反映了对应纠缠分量的重要性。
- 通过只保留最大的 $\chi$ 个奇异值并丢弃其余的,我们可以在引入可控误差的前提下,将键维度降回 $\chi$。这个近似的好坏取决于被丢弃的奇异值有多小。
模拟过程总结: 量子电路的演化被模拟为一系列对 MPS 张量链的局部更新。单比特门是简单的张量更新。两比特门是“收缩-演化-分解截断”的循环。纠缠的产生和传播在模拟中体现为键维度 $\chi$ 的增长。如果电路产生的纠缠超过了设定的 $\chi$ 上限,模拟就会开始引入误差,变得不准确。
四、 总结:优势与局限¶
| 特性 | MPS 模拟器 |
|---|---|
| 物理模型 | 针对低纠缠、满足1D面积定律的量子态。 |
| 状态表示 | 矩阵乘积态(MPS),由 $n$ 个小张量构成的链。 |
| 内存消耗 | 多项式级 $O(n \cdot \chi^2)$,如果 $\chi$ 是常数。 |
| 核心优势 | - 打破维度诅咒: 能够模拟远超状态向量模拟器极限的量子比特数(数百甚至数千),只要纠缠可控。 - 物理洞察: 键维度提供了对系统纠缠结构的直接度量。 - 可控近似: SVD截断引入的误差是可以量化和控制的。 |
| 核心局限 | - 非普适性: 对高度纠缠的态(如Shor算法执行中或随机量子电路产生的态)完全无效,此时 $\chi$ 需指数增长。 - 拓扑限制: 天然适用于一维或类一维的量子电路。在非近邻比特间应用门操作效率较低(需要一系列SWAP操作,会增加纠缠)。 - 算法复杂性: 实现比状态向量模拟器复杂得多。 |
结论: 张量网络(特别是MPS)模拟器不是一个普适的量子计算机模拟器,而是一个针对特定物理区域的“专家系统”。它在模拟凝聚态物理系统、变分量子算法(VQE)的某些实例以及低深度量子电路方面表现卓越,因为它精确地利用了这些问题中固有的低纠缠结构。它为我们探索经典计算机无法触及的大规模量子系统打开了一扇重要的窗口。
MPS(矩阵乘积态)在张量网络模拟器中的量子门应用:表示、相邻与非相邻门的数学计算¶
摘要¶
本文系统梳理了经典张量网络模拟器中基于矩阵乘积态(MPS)的量子态表示与量子门作用的数学计算方法。内容涵盖:MPS 的定义与规范形式;单量子门与相邻双量子门的张量更新(TEBD 两站点更新);非相邻多量子门的三种实现路径(SWAP 路由、MPO 直接施加、门分解/超站点法);以及数值稳定性、截断与误差控制、复杂度估计。文中给出逐步的张量方程与索引重排细节,以便直接用于实现。相关方法与复杂度分析参考了张量网络与 DMRG/TEBD 的经典文献[1][2][3][4][5][6]。
记号与背景¶
- 体系:$n$ 个量子比特的开边界链,物理维 $d=2$。可推广到 $d>2$(多能级体系)。
- MPS 形状:$A^{[i]}$ 的物理指标 $σ_i ∈ \{0,…,d−1\}$,虚键(bond)维度 $χ_{i−1}, χ_i$,开边界条件 $χ_0=χ_n=1$。
- 量子态的 MPS 表示: $$ |ψ⟩ = ∑_{σ_1…σ_n} A^{[1]σ_1} A^{[2]σ_2} … A^{[n]σ_n} |σ_1…σ_n⟩, $$ 其中 $A^{[i]σ_i} ∈ \mathbb{C}^{χ_{i−1}×χ_i}$,并按相邻虚键相乘(求和)[1][2]。
- 规范(canonical)形式:
- 左规范(left-canonical):$$ ∑_{σ_i,α_{i−1}} (A^{[i]σ_i}_{α_{i−1},α_i})^* A^{[i]σ_i}_{α_{i−1},α'_i} = δ_{α_i,α'_i}, $$ 即 $(A^{[i]})† A^{[i]} = I$。
- 右规范(right-canonical):$$ ∑_{σ_i,α_i} A^{[i]σ_i}_{α_{i−1},α_i} (A^{[i]σ_i}_{α'_{i−1},α_i})^* = δ_{α_{i−1},α'_{i−1}}, $$ 即 $A^{[i]} (A^{[i]})† = I$。
- 混合规范:存在一个“正交性中心”(orthogonality center),其左侧为左规范,右侧为右规范[1]。
- 数值操作常以 QR/SVD 维持规范与归一性,并在截断时控制误差[1][2]。
单量子门在 MPS 上的作用(同址一体更新)¶
目标:对第 $i$ 个量子比特施加 $U ∈ \mathbb{C}^{d×d}$。
- 张量更新: $$ A'^{[i]σ'_i} = ∑_{σ_i=0}^{d−1} U_{σ'_i,σ_i} · A^{[i]σ_i}. $$ 等价地,在物理指标 $σ_i$ 上左乘 $U$ 并求和,虚键指标 $α_{i−1}, α_i$ 保持不变。
- 复杂度:每个站点 $O(χ_{i−1} χ_i d^2)$。对于 $d=2$ 约为 $O(χ_{i−1} χ_i)$。
- 规范维护:若采用混合规范并将正交性中心放在 $i$,则该操作保持归一性稳定;否则可在更新后对 $A^{[i]}$ 做一次 QR 以将中心迁移到需要的位置[1][2]。
相邻双量子门在 MPS 上的作用(两站点 TEBD 更新)¶
目标:对相邻比特 $(i,i+1)$ 施加 $U ∈ \mathbb{C}^{d^2×d^2}$。 步骤(混合规范:$i$ 左侧为左规范,$i+1$ 右侧为右规范):
- 组装两站点张量: $$ θ_{α_{i−1}, σ_i, σ_{i+1}, α_{i+1}} = ∑_{α_i=1}^{χ_i} A^{[i]σ_i}_{α_{i−1},α_i} · A^{[i+1]σ_{i+1}}_{α_i,α_{i+1}}. $$
- 施加双门: $$ θ'_{α_{i−1}, σ'_i, σ'_{i+1}, α_{i+1}} = ∑_{σ_i,σ_{i+1}} U_{(σ'_i,σ'_{i+1}), (σ_i,σ_{i+1})} · θ_{α_{i−1}, σ_i, σ_{i+1}, α_{i+1}}. $$
- 重新排列成矩阵并做 SVD:将 $θ'$ 视为矩阵 $M$,按索引合并 左块 $L=(α_{i−1}, σ'_i)$,右块 $R=(σ'_{i+1}, α_{i+1})$, 则 $M ∈ \mathbb{C}^{(χ_{i−1} d) × (d χ_{i+1})}$。做 $M = USV†$。
- 截断与回填:
- 依据最大 bond 维 $χ_{\text{max}}$ 或阈值 $ε$ 截断奇异值 $S → S_{\text{trunc}}$。
- 设秩 $r=\text{rank}(S_{\text{trunc}})$。定义 $$ A'^{[i]σ'_i}_{α_{i−1},β} = U_{(α_{i−1},σ'_i), β}, $$ $$ A'^{[i+1]σ'_{i+1}}_{β,α_{i+1}} = (S_{\text{trunc}} V†)_{β, (σ'_{i+1}, α_{i+1})}, \quad β=1..r. $$
- 可选地将 $S^{1/2}$ 均分到两侧以更好地维持规范。
- 规范与中心:更新后正交性中心位于 $(i,i+1)$ 之间;可通过 QR/SVD 将中心移动到期望位置。 复杂度:
- 主要由 SVD 主导,$O((χ d)^3) ≈ O(χ^3 d^3)$。$d=2$ 时约 $O(8 χ^3)$。
- 内存占用约 $O(χ^2 d^2)$。 数值稳定与误差:
- 截断丢弃权重 $w = ∑_{k>r} s_k^2$,保真度满足 $1 − F ≤ w$;可用累计丢弃权衡误差[1][2][4]。
非相邻多量子门的施加¶
设需要在离散位置 $i_1 < i_2 < … < i_k$ 上施加 $k$ 比特门 $U ∈ \mathbb{C}^{d^k×d^k}$。常用三种策略:
A) SWAP 路由(邻接化再还原)¶
- 思想:用相邻 SWAP 门把目标比特搬运到相邻段,施加 $U$,再把比特搬回原位。
- 两比特非相邻门($i,j$,距离 $L=|j−i|$):
- 需要 $(L−1)$ 次 SWAP 将其中一比特移动到另一比特旁;施加目标双门;再 $(L−1)$ 次 SWAP 还原。
- 总相邻门数 $2(L−1)+1$。每个 SWAP 按第3节执行一次两站点更新与可能截断。
- 复杂度与代价:$O(L · χ^3 d^3)$,中间 bond 维可能暂时增大;截断会引入误差与纠缠增长[3][4]。
B) MPO 直接施加(不显式 SWAP)¶
- 将非相邻算符 $U$ 表示为沿 $i_1..i_k$ 跨越区间的矩阵乘积算符(MPO)$W$,路径上非作用位点的 $W^{[t]}$ 充当“穿线”的恒等块,使信号在虚键上传递。
- 两比特非相邻门的 MPO:在 $d=2$ 时沿路径的 MPO 虚键维 $κ ≤ d^2=4$ 即可精确表达通用两比特算符;$k$ 比特门的一般上界 $κ$ 取决于张量分解,最坏可达 $O(d^{k})$,具体取决于 $U$ 的多体分解结构[6]。
- 施加方法:顺链逐站点收缩 $$ A'^{[t]σ'_t}_{α_{t−1},α_t} = ∑_{σ_t,μ_{t−1},μ_t} W^{[t]}_{μ_{t−1},μ_t}(σ'_t,σ_t) · A^{[t]σ_t}_{α_{t−1},α_t}, $$ 其中 $μ$ 是 MPO 的虚键;随后对受影响区间做规范化与截断压缩(例如单站点或两站点 SVD 扫描)。
- 复杂度:若只在区间长度 $s$ 上施加,主开销 $O(s · χ^3 κ d^2)$;$κ$ 小时(如两比特门)通常比分发大量 SWAP 更经济[1][2][6]。
C) 门分解 / 超站点法(contiguous-k 直接更新)¶
- 若 $U$ 可分解为相邻两比特门序列,则回到第3节执行即可(编译友好)。
- 若需一次性施加连续 $k$ 比特门($i..i+k−1$):
- 先将 $k$ 个站点物理指标合并为超站点 $σ̄ ∈ \{0..d^k−1\}$,组装 $$ Θ_{α_{i−1}, σ̄, α_{i+k}} = ∑_{α_{i..i+k−1}} A^{[i..i+k]} \text{ 展开所得张量}; $$
- 左乘 $U$(大小 $d^k×d^k$)得到 $Θ'$;
- 按内部切分依次做 SVD(或高阶 SVD),将超站点重新拆回 $k$ 个 MPS 张量,并在每次切分处截断到 $χ_{\text{max}}$。
- 复杂度:受最大矩阵尺寸控制,主开销近似 $O(χ^3 d^{3⌈k/2⌉})$(粗略上界,具体依实现而变)。当 $k$ 较大时更推荐将 $U$ 先分解为两比特门序列。
截断、误差与规范迁移¶
- 截断准则:
- 固定 $χ_{\text{max}}$(保留最多 $χ_{\text{max}}$ 个奇异值)。
- 固定阈值 $ε$(丢弃所有 $s_k < ε$ 的奇异值)。
- 误差度量:
- 丢弃权重 $w = ∑_{\text{丢弃}} s_k^2$;常用 $w$ 的累积作为整体误差上界。
- 归一化偏差可在每步后重新归一化 $|ψ⟩$ 以抑制漂移。
- 规范迁移:使用 QR 或极分解将正交性中心移动到计算即将发生的位置,以减少数值不稳定。
- 环境压缩(variational compression):当 MPO·MPS 收缩后 bond 维过大时,可用变分方法在固定 $χ_{\text{max}}$ 下最小化 $\| |ψ_{\text{target}}⟩ − |ψ(θ)⟩ \|$,通过左右环境张量构造局部正规方程进行 sweeping(DMRG 样式)[1][2]。
复杂度与选择建议(要点)¶
- 单量子门:线性成本 $O(χ^2 d^2)$ 量级,几乎免费。
- 相邻双量子门:$O(χ^3 d^3)$;是一维电路模拟的主开销来源。
- 非相邻两比特门:
- SWAP 路由:$O(L · χ^3 d^3)$,$L$ 为距离;易实现但可能放大纠缠。
- MPO 施加:$O(s · χ^3 κ d^2)$,$s$ 为跨越长度,$κ$ 对两比特门通常 $≤ d^2$;当 $κ$ 小、$L$ 大时更优。
- 门分解/超站点:适合短 $k$ 或已知良好分解;否则成本可能随 $d^k$ 急剧增长。
- 实践经验:优先保持 MPS 低纠缠与小 $χ$;对长距相互作用优先考虑 MPO 方案;必要时配合变分压缩以控误差[1][2][6]。
伪代码(两站点 TEBD 更新)¶
输入:$A[i], A[i+1], \text{gate } U(4×4), χ_{\text{max}}, ε$
- $θ ← \text{contract}(A[i], A[i+1])$ // 形状 $(χ_{i−1}, d, d, χ_{i+1})$
- $θ' ← \text{apply\_gate}(θ, U)$ // 形状不变
- $M ← \text{reshape}(θ', (χ_{i−1} d) × (d χ_{i+1}))$
- $[U_s, S, Vh] ← \text{svd}(M)$
- $[U_s, S, Vh] ← \text{truncate}(U_s, S, Vh; χ_{\text{max}}, ε)$
- $A'[i](σ) ← \text{unmerge\_left}(U_s)$ // 取 $U_s$ 的行索引拆成 $(α_{i−1}, σ)$
- $A'[i+1](σ) ← \text{merge\_SV\_to\_right}(S, Vh)$ // 令 $B = S·Vh$,再将其列索引拆成 $(σ, α_{i+1})$
- $\text{renormalize\_and\_canonicalize}(A')$ 输出:$A'[i], A'[i+1], \text{丢弃权重 } w = ∑_{\text{丢弃}} s_k^2$。
结论¶
MPS 提供了在一维量子电路/哈密顿量演化中高效进行经典模拟的结构性表示。单量子门通过对物理指标的局部线性变换即可完成;相邻双量子门采用两站点张量组装、门收缩与 SVD 回填的标准流程;非相邻与多量子门可通过 SWAP 路由、MPO 直接施加或超站点/门分解三条路径实现,并在截断阈值与最大 bond 维的共同控制下平衡精度与效率。上述方法已在 DMRG/TEBD 框架下被系统化,总结的张量方程可直接用于工程实现[1][2][3][4][5][6]。
References¶
[1] Schollwöck, U. (2011). The density-matrix renormalization group in the age of matrix product states. Annals of Physics, 326(1), 96-192. https://arxiv.org/abs/1008.3477
[2] Orús, R. (2014). A practical introduction to tensor networks: Matrix product states and projected entangled pair states. Annals of Physics, 349, 117-158. https://arxiv.org/abs/1306.2164
[3] Vidal, G. (2003). Efficient classical simulation of slightly entangled quantum computations. Physical Review Letters, 91(14), 147902. https://arxiv.org/abs/quant-ph/0301063
[4] Vidal, G. (2004). Efficient simulation of one-dimensional quantum many-body systems. Physical Review Letters, 93(4), 040502. https://arxiv.org/abs/cond-mat/0310089
[5] Pérez-García, D., Verstraete, F., Wolf, M. M., & Cirac, J. I. (2007). Matrix Product State Representations. Quantum Information & Computation, 7(5), 401-430. https://arxiv.org/abs/quant-ph/0608197
[6] Pirvu, S., Murg, V., Cirac, J. I., & Verstraete, F. (2010). Matrix product operator representations. New Journal of Physics, 12, 025012. https://arxiv.org/abs/0905.3386
将双量子门表示为矩阵乘积算符(MPO)¶
将双量子门(两量子比特门)表示为矩阵乘积算符(MPO),需要构建一系列张量,这些张量经过缩并后可得到目标量子门。对于相邻的两个量子比特,此过程相对简单;对于非相邻量子比特,则需通过为中间位点引入“类单位矩阵张量”来扩展这一方法。
我们考虑作用于量子比特$i$和$j$的两量子比特门$U$。为简化分析,首先考虑$U$作用于相邻量子比特的情况,例如在一个小型系统中作用于位点1和位点2。
情况1:相邻两量子比特门(如作用于位点1和位点2)¶
两量子比特门$U$可表示为$d^2 \times d^2$的矩阵(当$d=2$时,即为$4 \times 4$矩阵)。我们需要将其分解为两个MPO张量$W^{[1]}$和$W^{[2]}$。
作用于位点1和位点2的两位点算符$U$,其MPO形式通常表示为: $$ U_{\sigma'_1 \sigma'_2, \sigma_1 \sigma_2} = \sum_{\mu} W^{[1]}(\sigma'_1, \sigma_1)_{\text{虚拟端},\mu} W^{[2]}(\sigma'_2, \sigma_2)_{\mu,\text{虚拟端}} $$ 其中,$\mu$是连接两个MPO张量的单一虚键指标,“虚拟端(dummy)”指标代表MPO的开放端。
要明确写出这一形式,可采用奇异值分解(SVD)或对量子门矩阵进行简单的“重排(reshuffling)”。
方法1:重排与奇异值分解(通用方法)¶
对$U$进行重排:将$d^2 \times d^2$的矩阵$U$重排为$d \times d^2 \times d$的张量。对于MPO而言,更便捷的方式是将其视为连接两个量子比特“输入态”与“输出态”的矩阵。设输入态为$|\sigma_1 \sigma_2\rangle$,输出态为$|\sigma'_1 \sigma'_2\rangle$,我们可对指标进行分组处理。
可将$U$看作行指标为$\sigma'_1 \sigma'_2$、列指标为$\sigma_1 \sigma_2$的矩阵,并将其表示为张量$U_{\sigma'_1 \sigma'_2 \sigma_1 \sigma_2}$。我们的目标是将其分解为带有连接虚指标的$W^{[1]}_{\sigma'_1 \sigma_1}$和$W^{[2]}_{\sigma'_2 \sigma_2}$。
核心思路是将$U$矩阵“展开”为适合MPO的形式:对于第一个位点,将其视为从$(\sigma_1, \text{虚拟端})$到$(\text{虚拟端}, \sigma'_1)$的矩阵;对于第二个位点,视为从$(\sigma_2, \text{虚拟端})$到$(\text{虚拟端}, \sigma'_2)$的矩阵,二者通过虚键连接。
构建两位点门$U$(或任意小型算符)的MPO时,一种系统方法是先将$U$视为四阶张量$U^{\sigma'_1 \sigma'_2}_{\sigma_1 \sigma_2}$,再对其重排后的形式进行奇异值分解:
- 第一步:将$U^{\sigma'_1 \sigma'_2}_{\sigma_1 \sigma_2}$重排为$(d \cdot d) \times (d \cdot d)$的矩阵$M$,其中行指标为$(\sigma'_1, \sigma'_2)$,列指标为$(\sigma_1, \sigma_2)$(此矩阵即为量子门本身);
- 第二步:对$M$进行奇异值分解$M = V S W^\dagger$;
- 第三步:构建MPO张量: $$ W^{[1]}_{a,b}(\sigma'_1, \sigma_1) = V_{(\sigma'_1 \sigma_1), a} $$ $$ W^{[2]}_{a,b}(\sigma'_2, \sigma_2) = S_{a,a} W^\dagger_{a, (\sigma'_2 \sigma_2)} $$ 其中,$a$和$b$为虚指标,其维度$\kappa = d^2$。
“算符乘积和”分解(更直观的方法):任意两量子比特算符$U$均可表示为单量子比特算符的乘积之和: $$ U = \sum_k A_k \otimes B_k $$ 式中,$A_k$和$B_k$均为单量子比特算符。基于此分解,可直接构建MPO张量。若两位点门$U = \sum_{k=1}^{\kappa} A_k \otimes B_k$,则:
- 位点1的MPO张量为$W^{[1]}_{\mu_{\text{入}},\mu_{\text{出}}}(\sigma'_1,\sigma_1)$;
- 位点2的MPO张量为$W^{[2]}_{\mu_{\text{入}},\mu_{\text{出}}}(\sigma'_2,\sigma_2)$。
当门$U$作用于相邻位点(如$i=t$和$j=t+1$)时,MPO张量为$W^{[t]}$和$W^{[t+1]}$,其最大键维度$\kappa$在$d=2$时为$d^2 = 4$。
示例:相邻量子比特上的受控非门(CNOT门)¶
设CNOT门作用于量子比特1(控制端)和量子比特2(目标端),其在计算基$|00\rangle, |01\rangle, |10\rangle, |11\rangle$下的矩阵形式为: $$ CNOT = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{pmatrix} $$ 可将其分解为$U = |0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes X$,其中:
- $A_1 = |0\rangle\langle 0|$(控制端算符1),$B_1 = I$(目标端算符1,$I$为单位算符);
- $A_2 = |1\rangle\langle 1|$(控制端算符2),$B_2 = X$(目标端算符2,$X$为泡利X算符); 此时键维度$\kappa=2$。
基于上述分解,MPO张量的构建如下:
位点1(控制端)的MPO张量$W^{[1]}$:其元素为$d \times d$的矩阵(单量子比特算符),通常表示为: $$ W^{[1]} = \begin{pmatrix} |0\rangle\langle 0| & |1\rangle\langle 1| \end{pmatrix} $$ 这是一个$1 \times 2$的单量子比特算符矩阵,分别对应控制端处于“0”态和“1”态时的作用。
位点2(目标端)的MPO张量$W^{[2]}$:同样由$d \times d$的单量子比特算符构成,形式为: $$ W^{[2]} = \begin{pmatrix} I \\ X \end{pmatrix} $$ 这是一个$2 \times 1$的单量子比特算符矩阵,第一行对应控制端“0”态时对目标端施加单位算符$I$,第二行对应控制端“1”态时对目标端施加泡利X算符。
将上述两个张量沿虚键缩并(即矩阵乘法),可得: $$ W^{[1]} \cdot W^{[2]} = (|0\rangle\langle 0| \cdot I) + (|1\rangle\langle 1| \cdot X) = |0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes X $$ 结果恰好为CNOT门,验证了该MPO表示的正确性。
情况2:非相邻两量子比特门(如作用于位点$i_1$和$i_k$)¶
设门$U$作用于量子比特位点$i_1$和$i_k$,中间存在位点$i_1+1, \dots, i_k-1$,则MPO将覆盖这$k-i_1+1$个位点。
第一个位点($i_1$)的MPO张量¶
该张量与相邻情况中第一个张量类似,但会有一个输出虚键连接至中间位点。以CNOT门为例,其形式为: $$ W^{[i_1]} = \begin{pmatrix} |0\rangle\langle 0| & |1\rangle\langle 1| \end{pmatrix} $$ 这是一个$1 \times \kappa$的$d \times d$算符矩阵。
中间位点($i_1 < t < i_k$)的MPO张量¶
这些张量为“传递性单位矩阵块”。对于每个中间位点$t$,MPO张量$W^{[t]}$是一个$\kappa \times \kappa$的$d \times d$算符矩阵,其形式为: $$ W^{[t]}_{\mu_{\text{入}},\mu_{\text{出}}}(\sigma'_t,\sigma_t) = I_{\sigma'_t,\sigma_t} \delta_{\mu_{\text{入}},\mu_{\text{出}}} $$ 其中,$I$为$d \times d$的单位算符,$\delta_{\mu_{\text{入}},\mu_{\text{出}}}$为克罗内克δ函数(仅当输入虚指标与输出虚指标相等时为1,否则为0)。
以CNOT门($\kappa=2$)为例,中间位点的MPO张量为: $$ W^{[t]} = \begin{pmatrix} I & 0 \\ 0 & I \end{pmatrix} $$ 该矩阵中每个元素均为$d \times d$的单位算符$I$,确保“信号”从第一个量子比特传递到目标量子比特时,既不改变中间量子比特的物理态,也不改变虚键所携带的“控制态”(即决定目标端应施加$I$还是$X$的状态信息)。
最后一个位点($i_k$)的MPO张量¶
该张量与相邻情况中第二个张量类似,接收来自中间位点的“信号”并施加最终操作。以CNOT门为例,其形式为: $$ W^{[i_k]} = \begin{pmatrix} I \\ X \end{pmatrix} $$ 这是一个$\kappa \times 1$的$d \times d$算符矩阵。
CNOT门(控制端在$i_1$,目标端在$i_k$)的MPO整体构建¶
将上述各部分整合,非相邻CNOT门的MPO张量可表示为:
- 位点$i_1$(控制端):$W^{[i_1]}_{\text{虚拟端},\mu_1}(\sigma'_1,\sigma_1) = \begin{pmatrix} |0\rangle\langle 0| & |1\rangle\langle 1| \end{pmatrix}$;
- 中间位点$t = i_1+1, \dots, i_k-1$:$W^{[t]}_{\mu_{t-1},\mu_t}(\sigma'_t,\sigma_t) = \begin{pmatrix} I & 0 \\ 0 & I \end{pmatrix}$(矩阵中每个$I$均为$d \times d$单位矩阵);
- 位点$i_k$(目标端):$W^{[i_k]}_{\mu_{k-1},\text{虚拟端}}(\sigma'_k,\sigma_k) = \begin{pmatrix} I \\ X \end{pmatrix}$。
将这些MPO张量沿虚键缩并时,中间的单位矩阵块会有效确保:控制量子比特的状态效应被传递到目标量子比特,同时不影响中间量子比特的物理态。
MPO构建的一般化¶
对于任意两量子比特门$U$,均可分解为$\sum_k A_k \otimes B_k$的形式,基于此可构建通用MPO:
- 第一个位点$i_1$的MPO为算符行向量:$W^{[i_1]} = \begin{pmatrix} A_1 & A_2 & \dots & A_\kappa \end{pmatrix}$;
- 最后一个位点$i_k$的MPO为算符列向量:$W^{[i_k]} = \begin{pmatrix} B_1 \\ B_2 \\ \vdots \\ B_\kappa \end{pmatrix}$;
- 中间位点$t$的MPO为$\kappa \times \kappa$的单位矩阵,矩阵中每个元素均为单量子比特单位算符$I$。
这种构建方法的核心在于将两量子比特门分解为单量子比特算符的外积之和,分解式中的项数决定了虚键维度$\kappa$。对于一般两量子比特门,$\kappa$的最大值为$d^2 = 4$(当$d=2$时)。
随后顺链逐站点收缩更新量子态表示张量,直至最终得到量子态张量。 $$ A'^{[t]σ'_t}_{α_{t−1},α_t} = ∑_{σ_t,μ_{t−1},μ_t} W^{[t]}_{μ_{t−1},μ_t}(σ'_t,σ_t) · A^{[t]σ_t}_{α_{t−1},α_t}, $$ 其中 $μ$ 是 MPO 的虚键;随后对受影响区间做规范化与截断压缩(例如单站点或两站点 SVD 扫描)。
很好——你现在正在问一个实际模拟问题:
给定一个量子态的MPS表示,以及一个表示非相邻量子比特上的长程两量子比特门的MPO,我们如何更新MPS的张量?
这正是张量网络模拟器(Qiskit MPS、ITensor、TeNPy等)的底层工作原理。
设定¶
状态的MPS表示:
$$ |\psi\rangle = \sum_{i_1,\dots,i_n} A^{[1]}_{i_1} A^{[2]}_{i_2} \cdots A^{[n]}_{i_n}\, |i_1 i_2 \dots i_n\rangle, $$
其中$A^{[k]}$是一个3阶张量(左键×物理维度×右键)。
算子的MPO表示:
$$ U = \sum_{\{i_k,j_k\}} W^{[1]}_{i_1 j_1} \cdots W^{[n]}_{i_n j_n}\, |i_1 \dots i_n\rangle\langle j_1 \dots j_n|, $$
其中$W^{[k]}$是4阶张量(左键×物理输入×物理输出×右键)。
一般MPO-MPS收缩规则¶
将$U$应用于$|\psi\rangle$意味着:
$$ |\psi'\rangle = U|\psi\rangle = \sum_{\{i_k\},\{j_k\}} \Big( W^{[1]}_{i_1 j_1} \cdots W^{[n]}_{i_n j_n} \Big) \Big(A^{[1]}_{j_1}\cdots A^{[n]}_{j_n}\Big) |i_1 \dots i_n\rangle. $$
因此,新的MPS张量$A'^{[k]}$通过将每个MPO张量与相应的MPS张量收缩获得:
$$ A'^{[k]}_{i_k} = \sum_{j_k} W^{[k]}_{i_k j_k}\, A^{[k]}_{j_k}. $$
⚠️ 但这里有个问题:
- 如果MPO的键维度$r>1$(对于长程门来说确实如此),那么更新后的MPS的键维度会沿着两个量子比特之间的整个段增长$r$倍。
- 这就是产生中间纠缠的原因。
特例:长程两量子比特门¶
假设该门作用在位置$i$和$j$上,MPO键维度$r \le 4$。
位置在$[i,j]$之外: MPO张量=单位矩阵,因此
$$ A'^{[k]} = A^{[k]}, \quad k<i \text{ 或 } k>j. $$
位置$i$: MPO张量$W^{[i]}$注入算子分量$O_\alpha$。 这将右键维度扩大$r$倍:
$$ A'^{[i]}_{i_i} = \sum_{j_i,\alpha} W^{[i]}_{i_i j_i,\alpha}\, A^{[i]}_{j_i}, $$
其中$\alpha$是MPO键索引。
中间位置$i<k<j$: 每个$W^{[k]}$=携带虚拟索引$\alpha$的块对角单位矩阵。 这意味着:
$$ A'^{[k]}_{i_k} = \sum_{j_k,\alpha} \delta_{i_k j_k}\, \delta_{\alpha'\alpha}\, A^{[k]}_{j_k}. $$
因此,张量在物理上没有变化,但它们的键维度现在携带了额外的MPO线。
位置$j$: MPO与算子$B_\alpha$闭合。 收缩:
$$ A'^{[j]}_{i_j} = \sum_{j_j,\alpha} W^{[j]}_{i_j j_j,\alpha}\, A^{[j]}_{j_j}. $$
键维度增长与压缩¶
- 在此过程之后,沿着路径$i \to j$的MPS键维度会增加MPO键维度$r$倍(对于量子比特,≤4)。
- 为了保持模拟效率,我们通常应用截断:对键进行SVD,并只保留最大的$\chi$个奇异值(由模拟精度设置)。
- 这一步控制内存增长,在模拟器中至关重要。
示例:3量子比特链中的CNOT(1→3)¶
键维度$r=2$。
在位置1:
$$ A'^{[1]} = [\, |0\rangle\langle0| A^{[1]},\; |1\rangle\langle1| A^{[1]} \,], $$
右键维度加倍。
在位置2: 传递MPO索引,只是单位矩阵,因此键维度现在加倍。
在位置3: 用$[I, X]$闭合MPO,合并回物理张量。
结果:位置(1,2)和(2,3)之间的键维度增加了×2。
✅ 总结: 当将长程两量子比特门作为MPO应用时:
- 将每个MPO张量与相应的MPS张量收缩。
- MPO键索引穿过所有中间位置,沿着两个被作用量子比特之间的路径膨胀键维度。
- 这个新的扩大的MPS可能随后被用SVD压缩以控制键维度。
假设与符号说明¶
3个量子比特位置构成的链:1 — 2 — 3。
物理维度$d=2$(量子比特)。
MPS采用位置规范(或任意)形式,其张量为: $$ A^{[1]}_{\,\ell_0,\,t_1,\,r_1},\quad A^{[2]}_{\,\ell_1,\,t_2,\,r_2},\quad A^{[3]}_{\,\ell_2,\,t_3,\,r_3}, $$ 其中$\ell_0=1$,$\ell_1=r_1$,$\ell_2=r_2$,$r_3=1$。
- $t_k\in\{0,1\}$:位置$k$的输入(或计算基)索引。
- 键维度:$r_1=\chi_1$,$r_2=\chi_2$。
- 为简洁起见,在公式中常省略无意义的左/右单态索引。
CNOT(1→3)门的分解(算子-施密特分解,键维度$r=2$): $$ \mathrm{CNOT}_{1\to 3} = |0\rangle\langle0|^{(1)}\otimes I^{(3)} \;+\; |1\rangle\langle1|^{(1)}\otimes X^{(3)}. $$ 因此选择分解标记$\alpha\in\{0,1\}$,其中: $$ O_0=|0\rangle\langle0|,\; O_1=|1\rangle\langle1|,\qquad B_0=I,\; B_1=X. $$
MPO张量(含虚拟索引$\alpha$):
- 位置1:$W^{[1]}_{\alpha}(i_1,j_1) = (O_\alpha)_{i_1,j_1}$。
- 位置2:$W^{[2]}_{\alpha,\beta}(i_2,j_2) = \delta_{\alpha\beta}\, \delta_{i_2 j_2}$(单位传播子)。
- 位置3:$W^{[3]}_{\alpha}(i_3,j_3) = (B_\alpha)_{i_3,j_3}$。
(其中$i_k$为算子的输出索引,$j_k$为算子的输入索引;向MPS应用算子时,需对输入索引$j_k$求和。)
步骤A——局部收缩:构建更新后的位置张量(压缩前)¶
将每个MPO张量与同一位置上的MPS张量进行收缩。MPO的虚拟索引$\alpha$会成为额外的内部标记,使沿路径$1\to 3$的键维度发生倍增。
位置1(MPO线路起始端;新增右侧虚拟索引$\alpha$)¶
定义新张量$\tilde A^{[1]}$,其索引为: $$ \tilde A^{[1]}_{\;\ell_0,\;i_1,\; (r_1,\alpha)} \qquad\text{(形状:}1 \times d \times (\chi_1\cdot 2)\text{)} $$ 具体表达式为: $$ \boxed{\; \tilde A^{[1]}_{\ell_0,\,i_1,\, (r_1,\alpha)} \;=\; \sum_{j_1=0,1}\; (O_\alpha)_{i_1,j_1}\; A^{[1]}_{\ell_0,\,j_1,\,r_1} \; } $$ 直观理解:对每个算子标记$\alpha$,将$O_\alpha$应用于位置1的物理索引,并将$\alpha$附加到右侧键上。
位置2(传递$\alpha$线路;物理算子=单位矩阵)¶
收缩后,位置2的张量会同时增加左侧和右侧的$\alpha$索引,但MPO传播子为对角矩阵,因此左侧和右侧的$\alpha$必须相等。由此构建: $$ \tilde A^{[2]}_{\,( \, (r_1,\alpha) \, ),\, i_2,\, (\, r_2,\alpha\, )} \quad\text{(形状:}(\chi_1\cdot2)\times d \times (\chi_2\cdot2)\text{)} $$ 具体表达式为: $$ \boxed{\; \tilde A^{[2]}_{(r_1,\alpha),\, i_2,\, (r_2,\alpha)} \;=\; A^{[2]}_{r_1,\, i_2,\, r_2} \; } $$ 即:物理张量本身未发生变化,但其左/右键索引会与MPO标记$\alpha$进行张量积(两侧$\alpha$相同)。实际操作中,需将索引$r_1$重塑为$(r_1,\alpha)$,同理将$r_2$重塑为$(r_2,\alpha)$,并复制原张量的值。
位置3(MPO线路终止端;通过$B_\alpha$闭合线路)¶
定义: $$ \tilde A^{[3]}_{(\,r_2,\alpha),\, i_3,\, r_3} \quad\text{(形状:}(\chi_2\cdot2)\times d \times 1\text{)} $$ 具体表达式为: $$ \boxed{\; \tilde A^{[3]}_{(r_2,\alpha),\, i_3,\, r_3} \;=\; \sum_{j_3=0,1}\; (B_\alpha)_{i_3,j_3}\; A^{[3]}_{r_2,\,j_3,\,r_3} \; } $$
经过局部收缩后,可得到$|\psi'\rangle = \mathrm{CNOT}_{1\to 3}\,|\psi\rangle$的MPS表示,此时键维度已扩大:
- 位置1–2之间的键:$\chi_1' = \chi_1 \cdot 2$,
- 位置2–3之间的键:$\chi_2' = \chi_2 \cdot 2$。
(仅沿MPO路径的键维度会乘以MPO键维度$r=2$。)
步骤B——重新规范/压缩(SVD截断)¶
张量$\tilde A^{[1]},\tilde A^{[2]},\tilde A^{[3]}$是准确的,但键维度可能过大。通常,模拟器会将键维度压缩至目标值$\chi_{\max}$(若不截断则保持精确)。以下介绍标准双位置SVD扫描法,以得到键维度可控的MPS。
压缩位置1与位置2之间的键¶
将$\tilde A^{[1]}$和$\tilde A^{[2]}$沿共享索引$r_1$收缩,形成双位置张量$\Theta^{[1,2]}$:
首先,将$\tilde A^{[1]}$视为形状为$(\ell_0)\times (i_1)\times (r_1,\alpha)$的张量,将$\tilde A^{[2]}$视为形状为$(r_1,\alpha)\times (i_2)\times (r_2,\alpha)$的张量。沿$(r_1,\alpha)$对进行收缩: $$ \Theta_{(\ell_0,i_1),\,(i_2,r_2,\alpha)} = \sum_{(r_1,\alpha)} \tilde A^{[1]}_{\ell_0,i_1,(r_1,\alpha)} \;\tilde A^{[2]}_{(r_1,\alpha),\,i_2,\,(r_2,\alpha)}. $$
将$\Theta$重塑为矩阵$M$以进行SVD:
- 左侧索引$L=(\ell_0,i_1)$的维度为$1\cdot 2 = 2$。
- 右侧索引$R=(i_2,r_2,\alpha)$的维度为$2\cdot \chi_2 \cdot 2 = 4\chi_2$。
因此,$M$是一个$2 \times (4\chi_2)$的矩阵。
计算SVD: $$ M = U\,S\,V^\dagger. $$
截断至最多$\chi_{\mathrm{max}}$个奇异值(若需精确则保留全部)。设保留的秩为$\tilde\chi$。
此时进行如下设定:
- 新张量$A^{[1]}_{\text{new}}$:将$U$重塑为形状$(\ell_0,i_1,\tilde r_1)$,其中$\tilde r_1=\tilde\chi$。
- 构建$C = S\,V^\dagger$,其形状为$\tilde\chi \times (i_2,r_2,\alpha)$。将$C$重塑后合并到新的位置2张量中: $$ A^{[2]}_{\text{new}}( \tilde r_1,\, i_2,\, (r_2,\alpha) ) = C_{\tilde r_1,\,(i_2,r_2,\alpha)}. $$
通过这一步,左侧键维度从$\chi_1\cdot 2$降至$\tilde\chi$(若截断参数选择得当,可恢复至原始维度$\chi_1$)。
实现说明:通常会将MPS在切割处的右侧保持右规范形式,因此$U$会成为新的左侧张量,而$C$会被推至右侧。
压缩位置2与位置3之间的键¶
此时,$A^{[2]}_{\text{new}}$的左侧键维度为$\tilde r_1$,右侧键维度为$(r_2,\alpha)$。将$A^{[2]}_{\text{new}}$与$\tilde A^{[3]}$沿$(r_2,\alpha)$收缩,形成$\Theta^{[2,3]}$: $$ \Theta_{(\tilde r_1, i_2),\, i_3} = \sum_{(r_2,\alpha)} A^{[2]}_{\text{new}}(\tilde r_1,i_2,(r_2,\alpha))\; \tilde A^{[3]}_{(r_2,\alpha), i_3, r_3}. $$
将$\Theta$重塑以进行SVD:左侧维度为$\tilde r_1 \cdot 2$,右侧维度为$2\cdot 1 = 2$。计算SVD$\Theta = U S V^\dagger$,并截断至$\chi_{\max}$。随后设定:
- $A^{[2]}_{\text{final}}$:将$U$重塑为$(\tilde r_1,i_2,\tilde r_2)$,
- $A^{[3]}_{\text{final}}$:将$S V^\dagger$重塑为$(\tilde r_2,i_3,r_3)$。
完成扫描后,得到压缩后的3位置MPS:$A^{[1]}_{\text{new}},A^{[2]}_{\text{final}},A^{[3]}_{\text{final}}$,其键维度处于可控范围。
简洁总结(算法形式)¶
- 构建MPO分解:$\mathrm{CNOT} = \sum_{\alpha=0}^1 O_\alpha^{(1)}\otimes B_\alpha^{(3)}.$
- 局部应用:
- 位置1:$\tilde A^{[1]}_{\ell_0,i_1,(r_1,\alpha)}=\sum_{j_1}(O_\alpha)_{i_1 j_1}\,A^{[1]}_{\ell_0,j_1,r_1}.$
- 位置2:$\tilde A^{[2]}_{(r_1,\alpha),i_2,(r_2,\alpha)}=A^{[2]}_{r_1,i_2,r_2}.$
- 位置3:$\tilde A^{[3]}_{(r_2,\alpha),i_3,r_3}=\sum_{j_3}(B_\alpha)_{i_3 j_3}\,A^{[3]}_{r_2,j_3,r_3}.$
- 压缩:通过SVD扫描位置1–2和位置2–3之间的键,恢复所需的键维度。
实用建议¶
- 若需精确更新(不截断),需将$\chi_{\max}$设置为足够大的值(例如,考虑所有维度倍增因子)。对于量子比特和单个双位置门,精确更新时键维度增长较小(此处仅为×2)。
- 许多库(如ITensor、TeNPy)会执行相同步骤,但采用优化的融合操作(融合物理索引、单次执行SVD等)。
- 实现时,重塑张量以进行SVD时需注意索引顺序和内存布局;保持一致的规范形式(左规范/右规范)可简化SVD的定位操作。
一、 张量网络模拟器的作用原理¶
传统量子计算模拟器(如基于状态向量的模拟器)面临一个根本性挑战:指数级内存消耗。模拟一个 $n$ 量子比特的系统,其状态向量需要存储 $2^n$ 个复数振幅。当 $n$ 增大时(例如 $n > 30$),内存需求迅速超出经典计算机的极限。
张量网络模拟器的核心思想是利用量子态中可能存在的低纠缠结构来压缩表示,从而显著减少计算资源需求。其原理可以概括为以下几个关键点:
量子态的张量表示:
- 将 $n$ 量子比特的量子态 $|\psi\rangle$ 表示为一个由 $n$ 个张量(通常是阶数很小的张量)组成的网络结构。
- 每个张量对应一个物理量子比特(或一组量子比特)。
- 张量之间的连接(边)代表量子比特之间的纠缠或关联。没有连接的边代表该量子比特处于一个相对独立的状态(或与其他量子比特的纠缠较弱)。
- 最常用的张量网络结构是矩阵乘积态 (MPS),其张量网络呈链状结构(一维)。其他结构包括树状张量网络、投影纠缠对态 (PEPS) 等。
张量缩并:
- 张量网络模拟器的核心操作是张量缩并。缩并是指沿着张量网络中的特定边(指标)对张量进行求和运算,最终得到一个标量(如期望值)或一个更小的张量(如约化后的状态)。
- 关键点: 缩并的顺序和策略极大地影响计算效率。张量网络模拟器会利用网络的拓扑结构(如链状、树状)和可能的低秩特性,寻找最优的缩并路径,以最小化中间张量的尺寸(即“秩”或“键维度”),从而控制计算复杂度。
- 对于具有有限纠缠(即纠缠熵有界)的量子态,键维度 $\chi$ 可以远小于 $2^n$。这使得模拟所需的内存和计算时间从指数级 $O(2^n)$ 降低到多项式级 $O(n \cdot \chi^k)$(其中 $k$ 是一个常数,通常为2或3)。
量子门操作的实现:
- 当模拟器需要应用一个量子门 $U$ 到一个或多个量子比特上时,它并不会像状态向量模拟器那样直接对整个 $2^n$ 维向量进行矩阵乘法。
- 相反,它执行以下步骤:
- 定位: 找到网络中对应于目标量子比特的张量。
- 门张量化: 将量子门 $U$ 本身也表示为一个张量(通常阶数很低,例如单比特门是2阶张量,双比特门是4阶张量)。
- 网络更新: 将门张量“插入”到张量网络中,连接到目标量子比特对应的张量上。这通常意味着将门张量与目标张量(以及可能涉及的其他张量)进行缩并操作。
- 局部优化: 在插入门后,网络的局部结构可能发生变化(例如键维度增加)。模拟器会执行局部优化(如奇异值分解 SVD)来“压缩”网络,将键维度重新限制在预设的最大值 $\chi_{\text{max}}$ 之内。这一步是控制计算复杂度的关键,它近似地保持了量子态的主要信息,同时丢弃了超出 $\chi_{\text{max}}$ 的、对全局性质影响较小的纠缠细节。
- 通过这种方式,量子门操作被分解为一系列作用于网络局部小张量的操作和优化,避免了全局的大矩阵运算。
测量与期望值计算:
- 计算可观测量 $O$ 的期望值 $\langle\psi|O|\psi\rangle$ 也通过张量缩并完成。
- 将 $O$ 表示为作用于特定量子比特的张量(或张量网络)。
- 构建一个包含 $|\psi\rangle$ 的张量网络、$O$ 的张量网络以及 $\langle\psi|$ 的张量网络(通常是 $|\psi\rangle$ 网络的共轭转置)的更大网络。
- 对这个大网络进行高效的缩并,最终得到期望值这个标量。
总结张量网络模拟器原理: 它通过将指数维度的量子态分解为多个低维张量组成的网络结构,并利用量子态中可能存在的低纠缠特性(通过限制键维度 $\chi$),将全局的量子门操作和测量计算转化为一系列局部的张量操作和缩并。这使得模拟具有有限纠缠或特定几何结构(如一维链)的量子电路成为可能,其资源消耗远低于指数级。
二、 量子态的表示¶
在张量网络模拟器中,量子态 $|\psi\rangle$ 的表示是其核心。我们以最常用的矩阵乘积态 (MPS) 为例进行说明。
数学基础:
- 一个 $n$ 量子比特系统的纯态 $|\psi\rangle$ 可以写成 $2^n$ 个基态的叠加: $|\psi\rangle = \sum_{s_1=0,1} \sum_{s_2=0,1} \dots \sum_{s_n=0,1} c_{s_1s_2\dots s_n} |s_1s_2\dots s_n\rangle$ 其中 $c_{s_1s_2\dots s_n}$ 是复数振幅,满足归一化条件 $\sum |c_{s_1s_2\dots s_n}|^2 = 1$。
- 状态向量模拟器直接存储所有 $2^n$ 个振幅 $c_{s_1s_2\dots s_n}$。
矩阵乘积态 (MPS) 表示:
- MPS 将振幅 $c_{s_1s_2\dots s_n}$ 分解为一系列小矩阵(张量)的乘积:
$c_{s_1s_2\dots s_n} = A^{[1]}_{s_1} A^{[2]}_{s_2} \dots A^{[n]}_{s_n}$
- $A^{[i]}_{s_i}$ 是一个与第 $i$ 个量子比特物理指标 $s_i$ (取值0或1) 相关的矩阵。
- 这些矩阵的维度(称为键维度或键维数)是 $\chi_i \times \chi_{i+1}$。通常 $\chi_1 = \chi_{n+1} = 1$(边界条件),而中间的 $\chi_i$ 可以远小于 $2^n$。
- 图形化表示:
(χ₁) --- A^{[1]} --- (χ₂) --- A^{[2]} --- (χ₃) --- ... --- A^{[n]} --- (χ_{n+1}) | | | (s₁) (s₂) (sₙ)- 圆圈 $A^{[i]}$ 代表第 $i$ 个量子比特的张量。
- 水平线代表虚拟指标(键),连接相邻的张量,表示量子比特之间的纠缠。虚拟指标的维度就是键维度 $\chi_i$。
- 垂直线 $s_i$ 代表物理指标,对应于测量该量子比特时可能得到的结果(0或1)。
- 关键特性:
- 压缩性: 如果量子态的纠缠熵有界(即满足“面积定律”,常见于一维系统),那么键维度 $\chi$ 可以取一个较小的值(远小于 $2^n$),就能高精度地表示该态。MPS 的参数数量约为 $O(n \cdot d \cdot \chi^2)$($d=2$ 是物理维度),远小于 $O(2^n)$。
- 局部性: 每个张量 $A^{[i]}$ 只直接与相邻的张量 $A^{[i-1]}$ 和 $A^{[i+1]}$ 通过虚拟指标相连。这反映了量子态中纠缠的局部性。
- 高效操作: 作用于单个或少数几个相邻量子比特的量子门,可以高效地通过更新局部的几个张量来实现(结合 SVD 压缩)。
- MPS 将振幅 $c_{s_1s_2\dots s_n}$ 分解为一系列小矩阵(张量)的乘积:
$c_{s_1s_2\dots s_n} = A^{[1]}_{s_1} A^{[2]}_{s_2} \dots A^{[n]}_{s_n}$
其他表示:
- 密度矩阵: 对于混合态 $\rho$,张量网络模拟器通常使用矩阵乘积算符 (MPO) 表示。MPO 将密度矩阵算符 $\rho$ 表示为类似 MPS 的网络结构,但每个张量 $W^{[i]}$ 有两个物理指标(对应 $|s_i\rangle\langle t_i|$)和两个虚拟指标。计算期望值 $\langle O \rangle = \operatorname{Tr}(\rho O)$ 需要将 $\rho$ 的 MPO 和 $O$ 的 MPO(或张量网络)进行缩并。
- 其他网络结构: 对于二维系统或具有更复杂纠缠结构的态,会使用树状张量网络 (TTN)、投影纠缠对态 (PEPS) 等结构,它们用不同的网络拓扑来更有效地捕捉纠缠。
三、 量子门的作用¶
量子门是量子计算的基本操作单元,对应于量子比特状态空间上的酉变换。在张量网络模拟器中,量子门的作用是通过局部更新张量网络来实现的。
量子门的本质:
- 量子门 $U$ 是一个酉矩阵,满足 $U^\dagger U = U U^\dagger = I$($\dagger$ 表示共轭转置,$I$ 是单位矩阵)。酉变换保证了量子态的归一化在演化过程中保持不变。
- 单量子比特门(如 Hadamard 门 $H$, Pauli-X 门 $X$, Phase 门 $S$, T 门)作用于单个量子比特,是 $2 \times 2$ 的酉矩阵。
- 双量子比特门(如 CNOT 门 $CNOT$, Controlled-Z 门 $CZ$, SWAP 门)作用于两个量子比特,是 $4 \times 4$ 的酉矩阵。
- 多量子比特门(如 Toffoli 门 $CCNOT$)作用于三个或更多量子比特,是 $8 \times 8$ 或更大的酉矩阵。
在张量网络模拟器中的作用过程:
单量子比特门 $U$ 作用于第 $i$ 个量子比特:
- 定位: 找到网络中对应第 $i$ 个量子比特的张量 $A^{[i]}$。
- 门张量化: 将 $U$ 视为一个张量 $U_{s_i' s_i}$(两个物理指标:输入 $s_i$,输出 $s_i'$)。
- 局部缩并: 将门张量 $U$ 与张量 $A^{[i]}$ 沿着物理指标 $s_i$ 进行缩并: $A^{[i]'}_{\alpha \beta s_i'} = \sum_{s_i} U_{s_i' s_i} \cdot A^{[i]}_{\alpha \beta s_i}$ (这里 $\alpha, \beta$ 是 $A^{[i]}$ 的左右虚拟指标)。
- 替换: 用更新后的张量 $A^{[i]'}$ 替换原来的 $A^{[i]}$。
- 结果: 门操作只修改了目标量子比特对应的张量,网络的其余部分保持不变。由于只涉及一个张量,操作非常高效($O(\chi^2 \cdot d^2)$)。
双量子比特门 $U$ 作用于相邻量子比特 $i$ 和 $i+1$:
- 定位: 找到张量 $A^{[i]}$ 和 $A^{[i+1]}$。
- 门张量化: 将 $U$ 视为一个张量 $U_{s_i' s_{i+1}' s_i s_{i+1}}$(四个物理指标:输入 $s_i, s_{i+1}$,输出 $s_i', s_{i+1}'$)。
- 局部缩并: 将门张量 $U$ 与张量 $A^{[i]}$ 和 $A^{[i+1]}$ 沿着它们的物理指标 $s_i$ 和 $s_{i+1}$ 进行缩并。这通常涉及先将 $A^{[i]}$ 和 $A^{[i+1]}$ 沿着它们之间的虚拟指标 $\chi_{i+1}$ 合并成一个更大的张量 $\Theta_{\alpha \gamma s_i s_{i+1}}$($\alpha$ 是 $A^{[i]}$ 的左虚拟指标,$\gamma$ 是 $A^{[i+1]}$ 的右虚拟指标),然后再与门张量 $U$ 缩并: $\Theta'_{\alpha \gamma s_i' s_{i+1}'} = \sum_{s_i, s_{i+1}} U_{s_i' s_{i+1}' s_i s_{i+1}} \cdot \Theta_{\alpha \gamma s_i s_{i+1}}$
- 分解与压缩: 将更新后的大张量 $\Theta'$ 重新分解成两个张量 $A^{[i]'}$ 和 $A^{[i+1]'}$,并限制它们之间新的虚拟指标 $\chi_{i+1}'$ 的维度不超过最大键维度 $\chi_{\text{max}}$。这是通过奇异值分解 (SVD) 完成的:
- 将 $\Theta'$ 重塑为一个矩阵 $M$(行指标为 $(\alpha, s_i')$,列指标为 $(\gamma, s_{i+1}')$)。
- 对 $M$ 进行 SVD:$M = U S V^\dagger$。
- 截断:保留最大的 $\chi_{\text{max}}$ 个奇异值(及其对应的奇异向量),丢弃其余。得到截断后的 $U_{\text{trunc}}$, $S_{\text{trunc}}$, $V_{\text{trunc}}^\dagger$。
- 重塑:将 $U_{\text{trunc}}$ 重塑为新的张量 $A^{[i]'}$(维度 $\alpha \times \chi_{i+1}' \times s_i'$),将 $S_{\text{trunc}} V_{\text{trunc}}^\dagger$ 重塑为新的张量 $A^{[i+1]'}$(维度 $\chi_{i+1}' \times \gamma \times s_{i+1}'$)。
- 替换: 用 $A^{[i]'}$ 和 $A^{[i+1]'}$ 替换原来的 $A^{[i]}$ 和 $A^{[i+1]}$。
- 结果: 门操作修改了两个相邻的张量,并可能改变了它们之间的键维度 $\chi_{i+1}$(通过 SVD 截断压缩)。操作复杂度约为 $O(\chi^3 \cdot d^2)$($d=2$),远低于全局操作的 $O(2^{2n})$。截断引入了近似误差,但对于纠缠增长缓慢的电路,误差可控。
非相邻量子比特门: 如果门作用于不相邻的量子比特 $i$ 和 $j$ ($|i-j|>1$),通常需要先通过SWAP门将它们交换到相邻位置,应用目标门,然后再交换回去。或者,使用更复杂的网络操作(如张量重排和局部缩并)直接处理非相邻门,但效率通常低于处理相邻门。
四、 举例说明:制备 Bell 态 $|\Phi^+\rangle = (|00\rangle + |11\rangle)/\sqrt{2}$¶
假设我们使用一个 MPS 张量网络模拟器来模拟以下简单电路:
q0: |0⟩ --- H --- ● ---
|
q1: |0⟩ ---------- X ---
这个电路将两个初始态为 $|00\rangle$ 的量子比特制备成 Bell 态 $|\Phi^+\rangle = (|00\rangle + |11\rangle)/\sqrt{2}$。
初始态 $|00\rangle$¶
- 状态向量表示: $[1, 0, 0, 0]^\intercal$ (对应 $|00\rangle$ 振幅为1,其他为0)。
- MPS 表示:
- 量子比特 0 (
q0):张量 $A^{[1]}$。物理指标 $s_1$ (0或1)。初始态 $|0\rangle$,所以 $A^{[1]}$ 只在 $s_1=0$ 时有值。键维度 $\chi_1=1$, $\chi_2=1$。 $A^{[1]} = [[[1]]]$ (形状 $(1, 1, 2)$, 即 $A^{[1]}[0, 0, 0] = 1$, 其他为0) - 量子比特 1 (
q1):张量 $A^{[2]}$。物理指标 $s_2$ (0或1)。初始态 $|0\rangle$,所以 $A^{[2]}$ 只在 $s_2=0$ 时有值。键维度 $\chi_2=1$, $\chi_3=1$。 $A^{[2]} = [[[1]]]$ (形状 $(1, 1, 2)$, 即 $A^{[2]}[0, 0, 0] = 1$, 其他为0) - 网络图:
(1) --- A^{[1]} --- (1) --- A^{[2]} --- (1) | | (s₁) (s₂) - 计算振幅: $c_{s_1s_2} = A^{[1]}_{s_1} A^{[2]}_{s_2}$。只有当 $s_1=0$ 且 $s_2=0$ 时,$c_{00} = 1 \cdot 1 = 1$,其他 $c_{s_1s_2}=0$。正确表示 $|00\rangle$。
- 量子比特 0 (
步骤 1:对 q0 应用 Hadamard 门 ($H$)¶
- Hadamard 门矩阵: $H = \frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}$
- 作用过程 (单量子比特门):
- 定位 $A^{[1]}$。
- 门张量 $H_{s_1' s_1}$。
- 局部缩并:$A^{[1]'}_{\alpha \beta s_1'} = \sum_{s_1} H_{s_1' s_1} \cdot A^{[1]}_{\alpha \beta s_1}$
- $A^{[1]}$ 原始:$A^{[1]}[0, 0, 0] = 1$ (其他为0)。
- 计算 $A^{[1]'}[0, 0, 0] = \sum_{s_1} H_{0 s_1} \cdot A^{[1]}[0, 0, s_1] = H_{00} \cdot A^{[1]}[0,0,0] + H_{01} \cdot A^{[1]}[0,0,1] = (1/\sqrt{2})\cdot1 + (1/\sqrt{2})\cdot0 = 1/\sqrt{2}$
- 计算 $A^{[1]'}[0, 0, 1] = \sum_{s_1} H_{1 s_1} \cdot A^{[1]}[0, 0, s_1] = H_{10} \cdot A^{[1]}[0,0,0] + H_{11} \cdot A^{[1]}[0,0,1] = (1/\sqrt{2})\cdot1 + (-1/\sqrt{2})\cdot0 = 1/\sqrt{2}$
- 替换:$A^{[1]}$ 更新为 $A^{[1]'}$: $A^{[1]'} = [[[1/\sqrt{2}], [1/\sqrt{2}]]]$ (形状 $(1, 1, 2)$, 即 $A^{[1]'}[0, 0, 0] = 1/\sqrt{2}$, $A^{[1]'}[0, 0, 1] = 1/\sqrt{2}$)
- 当前 MPS:
- $A^{[1]'} = [[[1/\sqrt{2}], [1/\sqrt{2}]]]$
- $A^{[2]} = [[[1]]]$ (未变)
- 网络图:
(1) --- A^{[1]'} --- (1) --- A^{[2]} --- (1) | | (s₁) (s₂) - 计算振幅: $c_{s_1s_2} = A^{[1]'}_{s_1} A^{[2]}_{s_2}$
- $c_{00} = (1/\sqrt{2}) \cdot 1 = 1/\sqrt{2}$
- $c_{01} = (1/\sqrt{2}) \cdot 0 = 0$
- $c_{10} = (1/\sqrt{2}) \cdot 1 = 1/\sqrt{2}$
- $c_{11} = (1/\sqrt{2}) \cdot 0 = 0$
- 状态: $(1/\sqrt{2})|00\rangle + (1/\sqrt{2})|10\rangle = (|0\rangle + |1\rangle)/\sqrt{2} \otimes |0\rangle$。正确表示 H 门作用后
q0处于叠加态 $(|0\rangle+|1\rangle)/\sqrt{2}$,q1仍为 $|0\rangle$。此时两个量子比特尚未纠缠,键维度 $\chi_2=1$ 仍然很小。
步骤 2:对 q0 (控制) 和 q1 (目标) 应用 CNOT 门¶
- CNOT 门矩阵 (控制 q0, 目标 q1): $CNOT = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix}$ 作用:$|00\rangle \rightarrow |00\rangle$, $|01\rangle \rightarrow |01\rangle$, $|10\rangle \rightarrow |11\rangle$, $|11\rangle \rightarrow |10\rangle$。
- 作用过程 (相邻双量子比特门):
- 定位 $A^{[1]'}$ 和 $A^{[2]}$。
- 门张量 $CNOT_{s_1' s_2' s_1 s_2}$。
- 合并张量: 将 $A^{[1]'}$ 和 $A^{[2]}$ 沿虚拟指标 $\chi_2=1$ 合并成 $\Theta$。
- $\Theta_{\alpha \gamma s_1 s_2} = \sum_{\beta} A^{[1]'}_{\alpha \beta s_1} \cdot A^{[2]}_{\beta \gamma s_2}$
- $\alpha=0, \gamma=0, \beta=0$ (因为键维度都是1)。
- $\Theta[0, 0, 0, 0] = A^{[1]'}[0, 0, 0] \cdot A^{[2]}[0, 0, 0] = (1/\sqrt{2}) \cdot 1 = 1/\sqrt{2}$
- $\Theta[0, 0, 1, 0] = A^{[1]'}[0, 0, 1] \cdot A^{[2]}[0, 0, 0] = (1/\sqrt{2}) \cdot 1 = 1/\sqrt{2}$
- $\Theta$ 其他元素为 0(因为 $A^{[2]}$ 只在 $s_2=0$ 有值)。
- $\Theta$ 形状 $(1, 1, 2, 2)$,非零元素:$\Theta[0,0,0,0]=1/\sqrt{2}$, $\Theta[0,0,1,0]=1/\sqrt{2}$。
- 应用门: $\Theta'_{\alpha \gamma s_1' s_2'} = \sum_{s_1, s_2} CNOT_{s_1' s_2' s_1 s_2} \cdot \Theta_{\alpha \gamma s_1 s_2}$
- 计算 $\Theta'[0,0,0,0] = \sum_{s_1,s_2} CNOT_{00 s_1 s_2} \cdot \Theta[0,0,s_1,s_2] = CNOT_{0000}\cdot\Theta[0,0,0,0] + CNOT_{0001}\cdot\Theta[0,0,0,1] + CNOT_{0010}\cdot\Theta[0,0,1,0] + CNOT_{0011}\cdot\Theta[0,0,1,1] = 1\cdot(1/\sqrt{2}) + 0\cdot0 + 0\cdot(1/\sqrt{2}) + 0\cdot0 = 1/\sqrt{2}$
- 计算 $\Theta'[0,0,0,1] = \sum_{s_1,s_2} CNOT_{01 s_1 s_2} \cdot \Theta[0,0,s_1,s_2] = \dots = 0\cdot(1/\sqrt{2}) + 1\cdot0 + 0\cdot(1/\sqrt{2}) + 0\cdot0 = 0$
- 计算 $\Theta'[0,0,1,0] = \sum_{s_1,s_2} CNOT_{10 s_1 s_2} \cdot \Theta[0,0,s_1,s_2] = \dots = 0\cdot(1/\sqrt{2}) + 0\cdot0 + 0\cdot(1/\sqrt{2}) + 1\cdot0 = 0$
- 计算 $\Theta'[0,0,1,1] = \sum_{s_1,s_2} CNOT_{11 s_1 s_2} \cdot \Theta[0,0,s_1,s_2] = \dots = 0\cdot(1/\sqrt{2}) + 0\cdot0 + 1\cdot(1/\sqrt{2}) + 0\cdot0 = 1/\sqrt{2}$
- $\Theta'$ 非零元素:$\Theta'[0,0,0,0]=1/\sqrt{2}$, $\Theta'[0,0,1,1]=1/\sqrt{2}$。
- 分解与压缩 (SVD):
- 将 $\Theta'$ 重塑为矩阵 $M$ (行 $(\alpha, s_1')$ = $(0,0)$ 和 $(0,1)$;列 $(\gamma, s_2')$ = $(0,0)$ 和 $(0,1)$): $M = \begin{bmatrix} \Theta'[0,0,0,0] & \Theta'[0,0,0,1] \\ \Theta'[0,0,1,0] & \Theta'[0,0,1,1] \end{bmatrix} = \begin{bmatrix} 1/\sqrt{2} & 0 \\ 0 & 1/\sqrt{2} \end{bmatrix}$
- 对 $M$ 进行 SVD:$M = U S V^\dagger$。
- $U = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$ (单位矩阵)
- $S = \begin{bmatrix} 1/\sqrt{2} & 0 \\ 0 & 1/\sqrt{2} \end{bmatrix}$ (奇异值矩阵)
- $V^\dagger = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}$ (单位矩阵)
- 截断: 最大键维度 $\chi_{\text{max}}$ 通常设为大于等于 2(因为 Bell 态是最大纠缠态,需要键维度至少为 2 才能精确表示)。这里 $\chi_{\text{max}}=2$ 足够,无需截断。
- 重塑:
- $A^{[1]''}$:取 $U$ 的列向量重塑。$U$ 第一列 $[1, 0]^\intercal$ 对应 $s_1'=0$,第二列 $[0, 1]^\intercal$ 对应 $s_1'=1$。虚拟指标维度 $\chi_2'=2$ (来自 SVD 的秩)。 $A^{[1]''}[0, :, 0] = [1, 0]$ (对应 $s_1'=0$) $A^{[1]''}[0, :, 1] = [0, 1]$ (对应 $s_1'=1$) 形状 $(1, 2, 2)$。
- $A^{[2]'} = S V^\dagger$:$S V^\dagger = \begin{bmatrix} 1/\sqrt{2} & 0 \\ 0 & 1/\sqrt{2} \end{bmatrix}$。重塑:第一行 $[1/\sqrt{2}, 0]$ 对应 $s_2'=0$,第二行 $[0, 1/\sqrt{2}]$ 对应 $s_2'=1$。虚拟指标维度 $\chi_2'=2$ (输入), $\chi_3=1$ (输出)。 $A^{[2]'}[:, 0, 0] = [1/\sqrt{2}, 0]^\intercal$ (对应 $s_2'=0$) $A^{[2]'}[:, 0, 1] = [0, 1/\sqrt{2}]^\intercal$ (对应 $s_2'=1$) 形状 $(2, 1, 2)$。
- 替换: 用 $A^{[1]''}$ 和 $A^{[2]'}$ 替换原来的 $A^{[1]'}$ 和 $A^{[2]}$。
- 最终 MPS (表示 $|\Phi^+\rangle$):
- $A^{[1]''}$ (形状 $(1, 2, 2)$):
- $A^{[1]''}[0, 0, 0] = 1$ (物理指标 $s_1=0$)
- $A^{[1]''}[0, 1, 1] = 1$ (物理指标 $s_1=1$)
- 其他元素为 0。
- $A^{[2]'}$ (形状 $(2, 1, 2)$):
- $A^{[2]'}[0, 0, 0] = 1/\sqrt{2}$ (物理指标 $s_2=0$)
- $A^{[2]'}[1, 0, 1] = 1/\sqrt{2}$ (物理指标 $s_2=1$)
- 其他元素为 0。
- 网络图:
(1) --- A^{[1]''} --- (2) --- A^{[2]'} --- (1) | | (s₁) (s₂)- 关键变化: 两个张量之间的虚拟指标维度从 $\chi_2=1$ 增加到了 $\chi_2'=2$!这反映了
q0和q1之间产生了纠缠。键维度 $\chi=2$ 是精确表示这个最大纠缠两比特态所需的最小值。
- 关键变化: 两个张量之间的虚拟指标维度从 $\chi_2=1$ 增加到了 $\chi_2'=2$!这反映了
- 计算振幅: $c_{s_1s_2} = \sum_{\beta} A^{[1]''}_{0 \beta s_1} \cdot A^{[2]'}_{\beta 0 s_2}$
- $c_{00} = A^{[1]''}[0,0,0] \cdot A^{[2]'}[0,0,0] + A^{[1]''}[0,1,0] \cdot A^{[2]'}[1,0,0] = 1 \cdot (1/\sqrt{2}) + 0 \cdot 0 = 1/\sqrt{2}$
- $c_{01} = A^{[1]''}[0,0,0] \cdot A^{[2]'}[0,0,1] + A^{[1]''}[0,1,0] \cdot A^{[2]'}[1,0,1] = 1 \cdot 0 + 0 \cdot (1/\sqrt{2}) = 0$
- $c_{10} = A^{[1]''}[0,0,1] \cdot A^{[2]'}[0,0,0] + A^{[1]''}[0,1,1] \cdot A^{[2]'}[1,0,0] = 0 \cdot (1/\sqrt{2}) + 1 \cdot 0 = 0$
- $c_{11} = A^{[1]''}[0,0,1] \cdot A^{[2]'}[0,0,1] + A^{[1]''}[0,1,1] \cdot A^{[2]'}[1,0,1] = 0 \cdot 0 + 1 \cdot (1/\sqrt{2}) = 1/\sqrt{2}$
- 状态: $(1/\sqrt{2})|00\rangle + (1/\sqrt{2})|11\rangle = |\Phi^+\rangle$。完美表示了目标 Bell 态。
- $A^{[1]''}$ (形状 $(1, 2, 2)$):
总结示例¶
这个例子清晰地展示了张量网络模拟器(MPS)的工作流程:
- 初始态: 用小键维度 ($\chi=1$) 的简单张量网络表示可分离态 $|00\rangle$。
- 单比特门 (H): 只更新一个张量,键维度不变 ($\chi=1$),产生局部叠加态。
- 双比特门 (CNOT):
- 合并相邻张量。
- 应用门操作。
- 关键步骤: 通过 SVD 将结果张量重新分解回两个张量。由于 CNOT 门产生了纠缠,SVD 揭示出需要增加键维度 ($\chi=2$) 才能精确表示新的纠缠态 $|\Phi^+\rangle$。
- 最终网络结构反映了量子比特间的纠缠关系(通过 $\chi=2$ 的连接)。
- 结果: 用参数数量远小于 $2^2=4$ 的张量网络(总共 $1*2*2 + 2*1*2 = 8$ 个参数,但很多是 0,有效参数更少)精确表示了 Bell 态。对于更大的系统,如果纠缠增长缓慢(如一维系统),键维度 $\chi$ 可以远小于 $2^n$,从而实现高效模拟。
结论¶
张量网络模拟器是量子计算模拟领域的一项强大技术。其核心原理在于:
- 张量网络表示: 将指数维度的量子态分解为多个低维张量组成的网络结构(如 MPS),利用网络拓扑和键维度 $\chi$ 来编码量子比特间的纠缠关系。
- 局部操作与压缩: 量子门操作被转化为对网络局部张量的更新和缩并。通过奇异值分解 (SVD) 等技术在操作后对网络进行压缩(限制键维度 $\chi_{\text{max}}$),在保持主要物理信息的同时,将计算复杂度从指数级降低到多项式级($O(n \chi^k)$)。
- 高效缩并: 测量期望值等计算通过高效的张量网络缩并算法完成,同样利用了网络结构和低秩特性。
张量网络模拟器特别擅长模拟具有有限纠缠或特定几何结构(如一维链、二维平面)的量子电路,在量子化学、凝聚态物理、量子算法验证等领域发挥着不可替代的作用。然而,对于产生高度纠缠(如随机电路)或具有全连接结构的系统,其效率会显著下降,因为键维度 $\chi$ 可能需要增长到接近 $2^n$,此时优势消失。理解其原理、量子态表示和量子门作用机制,是有效运用这一工具的基础。