---
title: "Grover 振幅放大互动实验｜Sandbox Physics"
description: "再做一轮，答案反而更难找到？会。每做一次 oracle 加反射，量子态就朝目标转过一个固定角度。"
canonical_url: "https://sandboxphysics.com/zh/labs/grover-amplitude-amplification/"
language: "zh-CN"
page_type: "lab"
alternate_languages:
  en: "https://sandboxphysics.com/labs/grover-amplitude-amplification/"
last_modified: "2026-10-27"
---

Q047 · 标记 / 反射 / 停止

# Grover 振幅放大

**再做一轮，答案反而更难找到？** 会。每做一次 oracle 加反射，量子态就朝目标转过一个固定角度。超过最佳轮数就转过了头，成功概率反而下降。什么时候停，很关键。

选一个小搜索空间，标出目标条目，再一轮一轮往前走。跟着相位 oracle 和均值反射，看概率流向目标，又从目标流走。对读出采样，根据测到的成功率决定在哪一轮停下。

> 交互仿真：在浏览器中打开本页，即可调整参数并运行模型。

对四到六十四个条目，完整模拟复数状态向量。目标集合事先写进教学用的 oracle，并不是在真实数据库里查找。Oracle 和反射里的相位偏移属于相干误差；经典比特翻转作用在最后的读出上。电路中的查询单独计数；每个结果还要再用一次查询验证是不是目标，这一次也单独计数。没有计入 oracle 的构造成本和硬件成本。

证据与查询次数

模拟测量记录

## 寻找停止点

采集后查看记录。

彩色柱和点来自记录，灰色细标记是计入当前误差设置的模型。误差棒是输出比例或成功率的逐点 95% Wilson 区间。它不是相位置信区间，也不是同时置信带；看着数据决定何时停止时，它也不再有保证。

记录成功率与 95% Wilson 范围

$\text{—}$

已采样轮数中成功率最高的一轮

$\text{—}$

全部电路查询 / 结果验证查询

$\text{—}$

成功率最高的那一轮只是对这次有限扫描的描述，不是经过认证的最优值。每个输出都要用已知的教学 oracle 检验，这会多算一次验证查询。这里没有演示如何用真实数据构造 oracle，也没有展示硬件优势。

从可导出的试次重算

| 轮数 | 试次 | 成功 | 电路 / 验证查询 |
| --- | --- | --- | --- |

最近 12 次；CSV 保留全部试次

| 试次 | 设置 | 报告比特串 | 整数 | 电路查询 |
| --- | --- | --- | --- | --- |

物理教程

## 振幅放大需要合适的停止点

**背景** 量子态一开始在小搜索空间的每个条目上振幅相等。Oracle 改变目标条目的相位，第二个酉操作再把振幅关于均匀态反射。

**为什么值得理解** 算法只是把概率挪来挪去，不会凭空多出概率。状态转过最有利的方向之后，再重复同样的操作，成功率可能下降。

先抓重点

- **核心问题**: 测过的轮数里，哪一轮实测成功率最高？这次扫描一共用了多少次查询？
- **一句话直觉**: 单靠 oracle 不改变任何概率，改变概率的是反射里的干涉。两步合起来让理想状态不停地转，停在哪一轮就很要紧。

### 核心数学模型

#### 均匀制备

$$
|s\rangle=\frac{1}{\sqrt N}\sum_{x=0}^{N-1}|x\rangle,\quad N=2^n
$$

目标是从选定编号开始的一串连续条目，排到末尾就绕回开头。模拟器事先知道它们。

#### 相位 oracle

$$
O_{\epsilon_O}|x\rangle=\begin{cases}e^{i(\pi+\epsilon_O)}|x\rangle&x\in\mathcal M\\|x\rangle&x\notin\mathcal M\end{cases}
$$

相位偏移以度输入，计算时换成弧度。这种相干误差和随机的比特翻转不是一回事。

#### 含相位误差的反射

$$
D_{\epsilon_D}=-I+\bigl(1-e^{i(\pi+\epsilon_D)}\bigr)|s\rangle\langle s|
$$

前面的整体负号让无误差的算符正好是常见的均值反射。有误差时，算符仍然是酉的。

#### 完整电路

$$
|\psi_k\rangle=(D_{\epsilon_D}O_{\epsilon_O})^k|s\rangle
$$

每个复振幅都逐步更新。可以查看任意一次 oracle 或反射刚做完时的状态。

#### 理想情况的旋转公式

$$
P_{\mathcal M}(k)=\sin^2((2k+1)\alpha),\quad\sin^2\alpha=M/N
$$

这个旋转公式只在相位理想、还没有读出误差时成立。它用来独立对照，状态向量不是用它算的。

#### 实测成功率与电路成本

$$
\widehat P_{\mathcal M}(k)=N_{\mathrm{success},k}/N_{\mathrm{shots},k},\quad C_O=kN_{\mathrm{shots},k}
$$

每个报告的输出还要拿目标集合验证一次，这次额外查询单独记在验证查询里。

### 常见难点

#### Oracle 本身也有成本

**容易误解** 模拟器在真实数据库里找出了一个秘密。

**正确理解** 目标集合是事先交给教学 oracle 的。构造真实的 oracle 可能很昂贵，这个模型没有考虑这部分成本。

#### 负振幅不是负概率

**容易误解** 箭头朝负方向，就表示概率是负的。

**正确理解** 箭头方向是复相位，长度是振幅的模。概率是模的平方，永远不会是负的。

#### 动画快不等于量子优势

**容易误解** 浏览器动画很快，所以证明了量子优势。

**正确理解** 这里只是一个小规模的经典模拟。查询计数描述的是这个模型，不是真实量子硬件上的测量，也不是和经典搜索的完整对比。

### 动手实验

1. 01

   #### 先看相位，再看概率

   选择尚未放大，设为一轮，查看 oracle 那一步。

   **你会看到：** 目标振幅改变符号，此时概率还没有上升。

2. 02

   #### 停在峰值，再转过头

   比较在峰值附近停下与转过了头。

   **你会看到：** 同样的目标，多做几轮后反而可能难找得多。

3. 03

   #### 根据数据选轮数

   采集完整的轮数扫描。

   **你会看到：** 成功比例会有涨落。观测到的最高那一轮只描述这批有限数据，不保证就是最优轮数。

4. 04

   #### 加入误差

   分别尝试不完美 oracle 与读出翻转。

   **你会看到：** 相干相位误差在演化过程中改变振幅；读出翻转则在演化结束后改动报告的比特串。

物理结论

振幅放大靠干涉，也要花掉有限次数的查询。过了合适的停止点再多做几轮，收益可能被抵消。

量子与场 · 入门路径

## 从一次测量开始

先预测结果，再数一数实际测到了什么。从一个量子比特出发，一路走到波包、束缚态和双光子干涉。

[从这里开始 → **量子态与 Born 测量** 先预测一个概率，转动分析器，再拿预测和多次测量得到的频率比一比。 观察 · 15 分钟](https://sandboxphysics.com/zh/labs/qubit-state/)

1. [1 量子态与 Born 测量](https://sandboxphysics.com/zh/labs/qubit-state/)
2. [2 Stern–Gerlach 顺序测量台](https://sandboxphysics.com/zh/labs/stern-gerlach-sequence/)
3. [3 波包传播与不确定性](https://sandboxphysics.com/zh/labs/wave-packet-uncertainty/)
4. [4 量子谐振子态工作台](https://sandboxphysics.com/zh/labs/quantum-harmonic-oscillator/)
5. [5 路径标记与量子擦除](https://sandboxphysics.com/zh/labs/quantum-eraser/)
6. [6 Hong–Ou–Mandel 两光子干涉](https://sandboxphysics.com/zh/labs/hong-ou-mandel/)

[查看完整路径 →](https://sandboxphysics.com/zh/topics/quantum/#starter-path)
