<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Quantum Computing on kenji.blog</title><link>http://kenji.blog/zh-cn/categories/quantum-computing/</link><description>Recent content in Quantum Computing on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 20:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/zh-cn/categories/quantum-computing/index.xml" rel="self" type="application/rss+xml"/><item><title>使用Qiskit的量子编程超入门</title><link>http://kenji.blog/zh-cn/p/qiskit-quantum-programming-intro/</link><pubDate>Fri, 11 Sep 2026 20:00:00 +0900</pubDate><guid>http://kenji.blog/zh-cn/p/qiskit-quantum-programming-intro/</guid><description>&lt;img src="http://kenji.blog/p/qiskit-quantum-programming-intro/img/eyecatch.jpg" alt="Featured image of post 使用Qiskit的量子编程超入门" />&lt;h2 id="1-简介">1. 简介
&lt;/h2>&lt;p>现代计算机（经典计算机）极大地改变了我们的生活，以其强大的计算能力支撑着社会的方方面面。然而，在某些特定的问题上（例如，巨大数字的质因数分解、复杂分子结构的模拟、优化问题等），即使是当今最先进的超级计算机，已知也需要比宇宙年龄还要长的时间。&lt;/p>
&lt;p>有望打破这种“经典计算机极限”的正是&lt;strong>量子计算机（Quantum Computer）&lt;/strong>。人们认为，通过将量子力学的奇妙特性（叠加态和量子纠缠）作为计算资源来利用，可以极大地加速特定问题的解决。&lt;/p>
&lt;p>在本文中，我们将使用IBM提供的开源量子计算框架&lt;strong>Qiskit&lt;/strong>，迈出进入量子编程世界的第一步。这是一份非常详细的入门指南，涵盖了从仔细讲解物理和数学基础，到实际使用Python编写代码，并在模拟器上运行量子电路的全过程。&lt;/p>
&lt;hr>
&lt;h2 id="2-支撑量子计算的物理和数学基础">2. 支撑量子计算的物理和数学基础
&lt;/h2>&lt;p>为了理解量子编程，首先需要理解量子力学的基本概念。在这里，我们将解说量子比特、叠加态、量子纠缠这三个重要的支柱。&lt;/p>
&lt;h3 id="21-经典比特与量子比特qubit">2.1 经典比特与量子比特（Qubit）
&lt;/h3>&lt;p>经典计算机的信息单位是“比特（Bit）”。比特总是处于 &lt;code>0&lt;/code> 或 &lt;code>1&lt;/code> 两种状态之一。&lt;/p>
&lt;p>另一方面，量子计算机的信息最小单位被称为&lt;strong>量子比特（Qubit: Quantum bit）&lt;/strong>。量子比特不仅可以处于 &lt;code>0&lt;/code> 和 &lt;code>1&lt;/code> 的状态，而且还可以&lt;strong>同时保持这两种状态&lt;/strong>。&lt;/p>
&lt;p>在数学上，量子比特的状态 $|\psi\rangle$ 表示为基态 $|0\rangle$ 和 $|1\rangle$ 的线性组合（叠加）：&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>这里，$\alpha$ 和 $\beta$ 是复数，分别表示观测到状态 $|0\rangle$ 和 $|1\rangle$ 的概率幅。根据量子力学的基本原理，概率的总和必须为1，因此满足以下归一化条件：&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>也就是说，当我们“测量（观测）”这个量子比特时，得到 $|0\rangle$ 的概率为 $|\alpha|^2$，得到 $|1\rangle$ 的概率为 $|\beta|^2$。在测量之前，状态只能以概率的方式确定，这是它与经典比特决定性的不同之处。&lt;/p>
&lt;div class="mermaid">graph LR
A["经典比特 (Classical Bit)"] --> B["确定的状态: 0 或 1"]
C["量子比特 (Qubit)"] --> D["叠加态: 同时是 0 和 1"]
D --> E["通过测量以概率确定状态"]&lt;/div>
&lt;h3 id="22-叠加态superposition">2.2 叠加态（Superposition）
&lt;/h3>&lt;p>如前所述，$|0\rangle$ 和 $|1\rangle$ 的状态混合在一起的状态被称为&lt;strong>叠加态（Superposition）&lt;/strong>。&lt;/p>
&lt;p>例如，如果1个量子比特处于完全均匀的叠加态中，则 $\alpha = \frac{1}{\sqrt{2}}$，$\beta = \frac{1}{\sqrt{2}}$。&lt;/p>
$$
|\psi\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle
$$
&lt;p>当测量这个状态时，将各有50%的概率观测到 $|0\rangle$ 和 $|1\rangle$。
如果有2个量子比特，就可以产生 $|00\rangle, |01\rangle, |10\rangle, |11\rangle$ 4种状态的叠加。如果有 $n$ 个量子比特，就可以同时表示 $2^n$ 种状态，这也是量子计算机并行处理能力的一个源泉。&lt;/p>
&lt;h3 id="23-量子纠缠entanglement">2.3 量子纠缠（Entanglement）
&lt;/h3>&lt;p>在量子计算中，最强大且最神奇的特性是&lt;strong>量子纠缠（Entanglement）&lt;/strong>。爱因斯坦将其称为“幽灵般的超距作用”，这种现象是指两个或多个量子比特之间产生强烈的联系，一旦其中一个量子比特的状态被确定，无论物理距离有多远，另一个量子比特的状态也会瞬间确定。&lt;/p>
&lt;p>最著名的量子纠缠态之一“贝尔态（Bell State）”的 $\Phi^+$ 态表示如下：&lt;/p>
$$
|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}
$$
&lt;p>在这种状态下，不存在 $|01\rangle$ 或 $|10\rangle$ 这样的状态。因此，如果测量第一个量子比特得到 $|0\rangle$，那么无需测量第二个量子比特，它也必定是 $|0\rangle$。相反，如果第一个是 $|1\rangle$，第二个也必定是 $|1\rangle$。&lt;/p>
&lt;hr>
&lt;h2 id="3-量子逻辑门quantum-logic-gates">3. 量子逻辑门（Quantum Logic Gates）
&lt;/h2>&lt;p>就像经典计算机使用AND、OR、NOT等逻辑门进行计算一样，量子计算机也使用&lt;strong>量子门&lt;/strong>来操作量子比特的状态。由于量子态是一个向量，因此量子门表现为作用于该向量的“幺正矩阵”。&lt;/p>
&lt;h3 id="31-泡利门pauli-x-y-z">3.1 泡利门（Pauli-X, Y, Z）
&lt;/h3>&lt;p>泡利门是对单个量子比特的基本操作。&lt;/p>
&lt;p>&lt;strong>・Pauli-X 门 (NOT门)&lt;/strong>
相当于经典的NOT门。将 $|0\rangle$ 翻转为 $|1\rangle$，将 $|1\rangle$ 翻转为 $|0\rangle$。（在布洛赫球中绕X轴旋转180度）&lt;/p>
$$
X = \begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・Pauli-Y 门&lt;/strong>
绕Y轴进行180度旋转。具有同时翻转相位和比特的效果。&lt;/p>
$$
Y = \begin{pmatrix} 0 &amp; -i \\ i &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・Pauli-Z 门 (相位翻转门)&lt;/strong>
保持 $|0\rangle$ 的状态不变，将 $|1\rangle$ 状态的相位翻转（乘以 $-1$）。（在布洛赫球中绕Z轴旋转180度）&lt;/p>
$$
Z = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1 \end{pmatrix}
$$
&lt;h3 id="32-哈达玛门hadamard-gate">3.2 哈达玛门（Hadamard Gate）
&lt;/h3>&lt;p>哈达玛门（H门）是一个非常重要的门，它将确定的状态（$|0\rangle$ 或 $|1\rangle$）转换为叠加态。&lt;/p>
$$
H = \frac{1}{\sqrt{2}}
\begin{pmatrix}
1 &amp; 1 \\
1 &amp; -1
\end{pmatrix}
$$
&lt;p>将H门应用于 $|0\rangle$，会得到均匀的叠加态 $|+\rangle$。&lt;/p>
$$
H|0\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle = |+\rangle
$$
&lt;h3 id="33-相位门phase-gates">3.3 相位门（Phase Gates）
&lt;/h3>&lt;p>相位门是Z门的推广，将 $|1\rangle$ 状态的相位旋转指定的角度 $\theta$。&lt;/p>
$$
P(\theta) = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; e^{i\theta} \end{pmatrix}
$$
&lt;p>具有代表性的相位门包括S门（$\theta = \pi/2$）和 T门（$\theta = \pi/4$）。&lt;/p>
&lt;h3 id="34-cnot门controlled-not-gate">3.4 CNOT门（Controlled-NOT Gate）
&lt;/h3>&lt;p>CNOT门（CX门）是在两个量子比特之间进行操作的门，对于生成量子纠缠是不可或缺的。它由“控制（Control）比特”和“目标（Target）比特”组成。&lt;/p>
&lt;p>仅当控制比特为 $|1\rangle$ 时，才对目标比特应用X门（NOT操作）；如果控制比特为 $|0\rangle$，则不进行任何操作。&lt;/p>
$$
CNOT = \begin{pmatrix}
1 &amp; 0 &amp; 0 &amp; 0 \\
0 &amp; 1 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 0 &amp; 1 \\
0 &amp; 0 &amp; 1 &amp; 0
\end{pmatrix}
$$
&lt;hr>
&lt;h2 id="4-qiskit基础与环境搭建">4. Qiskit基础与环境搭建
&lt;/h2>&lt;p>从这里开始，我们将实际使用Python和Qiskit来编写量子程序。&lt;/p>
&lt;h3 id="41-什么是qiskit">4.1 什么是Qiskit？
&lt;/h3>&lt;p>&lt;strong>Qiskit&lt;/strong> 是IBM Quantum开发的开源量子计算软件开发工具包（SDK）。通过使用Python直观地构建量子电路，可以在本地模拟器上运行，也可以通过云端在IBM真实的量子计算机硬件上运行。&lt;/p>
&lt;h3 id="42-安装方法">4.2 安装方法
&lt;/h3>&lt;p>为了使用Qiskit，需要Python环境。使用以下命令安装Qiskit及相关包（模拟器和绘图库）。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install qiskit qiskit-aer qiskit-ibm-runtime matplotlib pylatexenc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="43-编程的基本流程">4.3 编程的基本流程
&lt;/h3>&lt;p>使用Qiskit进行量子编程主要按照以下步骤进行：&lt;/p>
&lt;div class="mermaid">graph TD
A["1. 构建电路 (Build)"] --> B["2. 编译/转译 (Compile)"]
B --> C["3. 运行 (Execute)"]
C --> D["4. 结果的分析与可视化 (Analyze)"]&lt;/div>
&lt;ol>
&lt;li>&lt;strong>构建电路&lt;/strong>: 创建 &lt;code>QuantumCircuit&lt;/code> 对象，并添加门。&lt;/li>
&lt;li>&lt;strong>编译&lt;/strong>: 针对要运行的后端（真机或模拟器）优化电路。&lt;/li>
&lt;li>&lt;strong>运行&lt;/strong>: 向后端发送作业，并获取结果。&lt;/li>
&lt;li>&lt;strong>分析&lt;/strong>: 绘制测量结果的直方图等。&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="5-实践构建生成贝尔态量子纠缠的电路">5. 实践：构建生成贝尔态（量子纠缠）的电路
&lt;/h2>&lt;p>让我们在Qiskit中实际创建理论中学习过的“量子纠缠（贝尔态）”。目标状态是 $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$。&lt;/p>
&lt;h3 id="51-电路设计">5.1 电路设计
&lt;/h3>&lt;p>为了产生贝尔态，需要遵循以下步骤：&lt;/p>
&lt;ol>
&lt;li>准备2个量子比特（初始状态均为 $|0\rangle$）。&lt;/li>
&lt;li>对第1个量子比特应用哈达玛门（H），使其变为叠加态。&lt;/li>
&lt;li>将第1个量子比特作为“控制比特”，第2个量子比特作为“目标比特”，应用CNOT门。&lt;/li>
&lt;li>进行测量（Measure）以读取结果。&lt;/li>
&lt;/ol>
&lt;h3 id="52-pythonqiskit-代码实现">5.2 Python/Qiskit 代码实现
&lt;/h3>&lt;p>那么，让我们来看看实际的代码。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">transpile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit_aer&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Aer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit.visualization&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">plot_histogram&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 1. 电路初始化&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 创建一个具有2个量子比特和2个经典比特的量子电路&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2. 应用H门&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 对量子比特 0 (q0) 应用哈达玛门&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 3. 应用CNOT门&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 将 q0 作为控制比特，q1 作为目标比特，应用 CNOT&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cx&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 4. 测量&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 测量量子比特 0 和 1，并分别写入经典比特 0 和 1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">measure&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 绘制电路图 (使用 matplotlib)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># qc.draw(&amp;#39;mpl&amp;#39;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">draw&lt;/span>&lt;span class="p">())&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>当执行这段代码时，控制台上将以ASCII艺术形式显示以下量子电路图。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl"> ┌───┐ ┌─┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">q_0: ┤ H ├──■──┤M├───
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └───┘┌─┴─┐└╥┘┌─┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">q_1: ─────┤ X ├─╫─┤M├
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └───┘ ║ └╥┘
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">c: 2/═══════════╩══╩═
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 0 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>H&lt;/code> 代表哈达玛门，&lt;code>■&lt;/code> 和 &lt;code>X&lt;/code> 的组合代表CNOT门，&lt;code>M&lt;/code> 代表测量。&lt;/p>
&lt;h3 id="53-在模拟器上运行并解释结果">5.3 在模拟器上运行并解释结果
&lt;/h3>&lt;p>接下来，我们将在IBM的高性能模拟器 &lt;code>Aer&lt;/code> 上运行此电路，并查看结果。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 获取 Aer 模拟器的后端&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">simulator&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Aer&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_backend&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;qasm_simulator&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 针对模拟器转译（优化）电路&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">compiled_circuit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">transpile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">simulator&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 运行电路（这里执行了 1000 次 shot）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">job&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">simulator&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shots&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1000&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 获取结果&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">job&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 获取状态的观测次数（计数）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">counts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_counts&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">测量结果:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">counts&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 绘制直方图&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># plot_histogram(counts)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># plt.show()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>结果解释&lt;/strong>&lt;/p>
&lt;p>控制台的输出应如下所示。
&lt;code>测量结果: {'00': 495, '11': 505}&lt;/code>
（※由于概率具有随机性，每次执行的具体数值会略有变动）&lt;/p>
&lt;p>在理想的模拟环境中，测量结果中 &lt;code>00&lt;/code> 和 &lt;code>11&lt;/code> 各有大约50%的观测概率，而完全不会观测到 &lt;code>01&lt;/code> 或 &lt;code>10&lt;/code>。
这与我们构建的贝尔态 $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$ 的理论预测完全一致。精确地模拟了“如果第一个量子比特是0，那么第二个也必然是0；如果是1，第二个也必然是1”的“量子纠缠”。&lt;/p>
&lt;p>需要注意的是，如果在真实的量子计算机（IBM Quantum Hardware）上运行，由于噪声（量子退相干和门误差）的影响，有时可能会观测到极少量的 &lt;code>01&lt;/code> 或 &lt;code>10&lt;/code>。如何减少这种噪声（量子纠错）是当前量子计算机研发中最大的课题之一。&lt;/p>
&lt;hr>
&lt;h2 id="6-扩展至更高级的算法">6. 扩展至更高级的算法
&lt;/h2>&lt;p>构建贝尔态可以说是量子编程的“Hello World”。以此为基础进一步发展，可以构建出超越经典计算机的强大算法。&lt;/p>
&lt;h3 id="61-多伊奇-乔萨算法deutsch-jozsa-algorithm">6.1 多伊奇-乔萨算法（Deutsch-Jozsa Algorithm）
&lt;/h3>&lt;p>该算法用于判断给定函数 $f(x)$ 到底是“常数函数”（无论输入什么，总是输出0或总是输出1）还是“平衡函数”（对一半的输入输出0，另一半输出1）的问题。
在最坏的情况下，经典计算机需要评估 $2^{n-1} + 1$ 次函数，而使用多伊奇-乔萨算法，利用量子并行性，&lt;strong>仅需评估1次&lt;/strong>即可做出判断。这展示了量子算法的基本模式：输入叠加态，利用干涉（Interference）抵消不需要的状态，并放大想要的答案。&lt;/p>
&lt;h3 id="62-grover-算法grovers-algorithm">6.2 Grover 算法（Grover&amp;rsquo;s Algorithm）
&lt;/h3>&lt;p>在从 $N$ 个未排序的数据库中寻找特定数据的搜索问题中，经典算法平均需要 $N/2$ 次计算，而Grover算法只需 $\sqrt{N}$ 次即可找到目标数据。
该算法使用称为“神谕（Oracle）”的黑盒来反转目标解的相位，然后进行“振幅放大（Amplitude Amplification）”，从而极大地提高观测到目标解的概率。&lt;/p>
&lt;div class="mermaid">graph TD
A["初始化 (所有状态的叠加)"] --> B["神谕 (反转正确答案的相位)"]
B --> C["扩散算子 (通过绕平均值反转进行振幅放大)"]
C --> D{"是否达到足够的概率？"}
D -- "否" --> B
D -- "是" --> E["测量"]&lt;/div>
&lt;hr>
&lt;h2 id="7-总结与后续学习">7. 总结与后续学习
&lt;/h2>&lt;p>本文详细解说了量子计算的根本概念，从叠加态和量子纠缠开始，介绍了使用Qiskit操作量子逻辑门，以及实际构建、模拟贝尔态并解释其结果。&lt;/p>
&lt;p>由于Qiskit可以使用平易近人的Python语言编写，它是一个强大的工具，能帮助我们跨越数学和物理的障碍，专注于算法的构建。虽然量子计算机目前处于带噪中等规模量子（NISQ: Noisy Intermediate-Scale Quantum）时代，但在量子机器学习（Quantum Machine Learning）、量子化学模拟（Quantum Chemistry）、密码破解等众多领域的应用研究正在世界各地迅速推进。&lt;/p>
&lt;p>请务必借此机会使用Qiskit自己动手制作各种量子电路，并在IBM Quantum的真实处理器上运行一下。你一定能亲手体验到未来的计算范式。&lt;/p>
&lt;h3 id="参考资料">参考资料
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://qiskit.org/documentation/" target="_blank" rel="noopener"
>Qiskit官方文档&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://qiskit.org/textbook/ja/preface.html" target="_blank" rel="noopener"
>Qiskit Textbook&lt;/a> - 推荐给想深入学习数学背景和算法的人的官方教材&lt;/li>
&lt;li>IBM Quantum Learning&lt;/li>
&lt;/ul>
&lt;p>欢迎来到量子世界！&lt;/p></description></item><item><title>什么是量子超越性？Google与IBM的最新动态</title><link>http://kenji.blog/zh-cn/p/what-is-quantum-supremacy-google-ibm/</link><pubDate>Fri, 11 Sep 2026 18:00:00 +0900</pubDate><guid>http://kenji.blog/zh-cn/p/what-is-quantum-supremacy-google-ibm/</guid><description>&lt;img src="http://kenji.blog/p/what-is-quantum-supremacy-google-ibm/img/eyecatch.jpg" alt="Featured image of post 什么是量子超越性？Google与IBM的最新动态" />&lt;h2 id="1-引言量子计算的黎明与量子超越性">1. 引言：量子计算的黎明与“量子超越性”
&lt;/h2>&lt;p>量子计算通过将作为物理学根本原理的量子力学应用于信息处理，蕴含着解决经典计算机（我们现在日常使用的个人电脑和超级计算机）在现实时间内无法解决的复杂问题的潜力。这一领域长期以来以理论研究为主，但近年来，随着硬件的快速进步，迈向实用化的竞争正日益激烈。&lt;/p>
&lt;p>其中最受瞩目的关键词之一就是“量子超越性（Quantum Supremacy）”。这指的是在特定的计算任务中，量子计算机展现出压倒经典计算机计算能力的瞬间。本文将从量子超越性的严格定义出发，详细探讨2019年宣布在世界上首次达成这一里程碑的Google“Sycamore”处理器的实验细节、IBM对此的反驳及独特方法，以及迈向真正实用化的最大障碍——“量子纠错（Quantum Error Correction: QEC）”和“容错量子计算（Fault-Tolerant Quantum Computing: FTQC）”的最新路线图，并进行技术和数学层面的深入解说。&lt;/p>
&lt;hr>
&lt;h2 id="2-理论背景量子计算的基础与复杂性类">2. 理论背景：量子计算的基础与复杂性类
&lt;/h2>&lt;p>为了理解量子超越性，首先需要理解量子计算的数学基础及其在计算复杂性理论中的定位。&lt;/p>
&lt;h3 id="量子比特与叠加态">量子比特与叠加态
&lt;/h3>&lt;p>经典计算机中信息的最小单位是比特（0或1），而量子计算机使用的是量子比特（Qubit）。1个量子比特的状态 $|\psi\rangle$ 可以表示为基态 $|0\rangle$ 和 $|1\rangle$ 的复数线性组合。&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>这里，$\alpha, \beta \in \mathbb{C}$，且满足归一化条件 $|\alpha|^2 + |\beta|^2 = 1$。这种性质被称为“叠加（Superposition）”。&lt;/p>
&lt;h3 id="纠缠entanglement与张量积">纠缠（Entanglement）与张量积
&lt;/h3>&lt;p>当存在多个量子比特时，整个系统的状态由各个量子比特状态空间的张量积表示。$n$ 个量子比特的系统是 $2^n$ 维希尔伯特空间 $\mathcal{H}^{\otimes n}$ 上的向量。&lt;/p>
$$
|\Psi\rangle = \sum_{x \in \{0, 1\}^n} c_x |x\rangle
$$
&lt;p>这里，$\sum |c_x|^2 = 1$。量子比特之间并不独立，一个的状态依赖于另一个状态的情形被称为“量子纠缠（Quantum Entanglement）”。借助这一点，量子计算机具有同时处理呈指数级广阔状态空间的潜力。&lt;/p>
&lt;h3 id="量子超越性的计算复杂性理论定义">量子超越性的计算复杂性理论定义
&lt;/h3>&lt;p>在计算复杂性理论中，经典计算机能够高效（在多项式时间内）解决的问题类被称为 &lt;strong>BPP&lt;/strong> (Bounded-error Probabilistic Polynomial time)。另一方面，量子计算机能够高效解决的问题类是 &lt;strong>BQP&lt;/strong> (Bounded-error Quantum Polynomial time)。&lt;/p>
&lt;p>实证量子超越性意味着“在实际的量子硬件上执行包含在BQP中但不包含在BPP中（或可能性极高）的特定任务，并在时间与资源上凌驾于经典超级计算机的模拟”。可以说，这是通过物理实验来反驳扩展丘奇-图灵论题（“所有物理上可实现的计算模型都能由概率图灵机在多项式时间内模拟”）的历史性尝试。&lt;/p>
&lt;hr>
&lt;h2 id="3-2019年google对量子超越性的实证">3. 2019年：Google对量子超越性的实证
&lt;/h2>&lt;p>2019年10月，Google Quantum AI团队在科学期刊《Nature》上宣布，他们使用53个量子比特的超导处理器“Sycamore（悬铃木）”实现了量子超越性。&lt;/p>
&lt;h3 id="sycamore处理器的架构">Sycamore处理器的架构
&lt;/h3>&lt;p>Sycamore处理器由呈二维网格状排列的54个Transmon型超导量子比特组成（实验中由于1个出现故障，实际使用了53个）。相邻量子比特之间配置了可调耦合器（Tunable Coupler），实现了高速且高精度的双量子比特门（iSWAP门和控制Z门的混合）。&lt;/p>
&lt;div class="mermaid">graph TD
A["输入量子算法"] --> B["Sycamore处理器（53个量子比特）"]
B --> C["应用随机量子门"]
C --> D["测量量子态（比特串）"]
D --> E["交叉熵基准测试（XEB）"]
E --> F["验证量子超越性"]&lt;/div>
&lt;h3 id="随机量子电路采样random-circuit-sampling-rcs">随机量子电路采样（Random Circuit Sampling: RCS）
&lt;/h3>&lt;p>Google选择的任务是“随机量子电路采样”。该任务通过在多个周期（深度 $m$）内应用随机选择的单量子比特门和双量子比特门，测量最终状态，并从获得的比特串的概率分布中进行采样。&lt;/p>
&lt;p>理想（无噪声）的随机量子电路输出比特串 $x$ 的概率并不是均匀分布的，而是呈现出一种被称为波特-托马斯分布（Porter-Thomas distribution）的类似干涉条纹的模式。为了在经典计算机上从该分布中采样，需要模拟整个状态向量，计算量相对于量子比特数 $n$ 和电路深度 $m$ 呈指数级增长。&lt;/p>
&lt;h3 id="保真度fidelity的评估线性交叉熵基准测试xeb">保真度（Fidelity）的评估：线性交叉熵基准测试（XEB）
&lt;/h3>&lt;p>为了证明实验结果不仅仅是噪声，而是实际进行了量子计算的结果，Google使用了线性交叉熵基准测试（Linear Cross-Entropy Benchmarking: XEB）。通过经典计算机计算实验中获得的比特串 $x_i$ 对应的电路理想概率 $P(x_i)$，并通过以下公式求得保真度 $\mathcal{F}_{\text{XEB}}$。&lt;/p>
$$
\mathcal{F}_{\text{XEB}} = 2^n \langle P(x_i) \rangle_{i} - 1
$$
&lt;p>如果 $\mathcal{F}_{\text{XEB}}$ 为0，则意味着完全是噪声；如果是1，则意味着是没有噪声的理想量子处理器。Sycamore处理器在深度为20的电路中实现了 $\mathcal{F}_{\text{XEB}} \approx 0.002$ (0.2%)。乍一看似乎很低，但它在统计学上是显著大于零的值，并且是控制了 $2^{53} \approx 9 \times 10^{15}$ 状态空间的惊人成果。&lt;/p>
&lt;p>整体的错误率被近似建模为各个门错误、测量错误等的乘积。&lt;/p>
$$
\mathcal{F} \approx (1 - e_1)^{N_1}(1 - e_2)^{N_2} \cdots \approx \prod_{g \in 1Q} (1 - e_g) \prod_{g \in 2Q} (1 - e_g) \prod_{q} (1 - e_{RO})
$$
&lt;p>（※ $e_g$ 为门错误，$e_{RO}$ 为测量错误）&lt;/p>
&lt;p>Google声称，使用经典超级计算机（Summit）模拟这个电路需要大约1万年。相比之下，Sycamore仅用了200秒就完成了采样。&lt;/p>
&lt;hr>
&lt;h2 id="4-ibm的反驳从超越性到实用性utility">4. IBM的反驳：从“超越性”到“实用性（Utility）”
&lt;/h2>&lt;p>Google的宣布震惊了世界，但开发了世界最大超级计算机“Summit”并同样引领量子计算机开发的IBM，立即发表论文反驳了这一主张。&lt;/p>
&lt;h3 id="通过张量网络收缩改善经典模拟">通过张量网络收缩改善经典模拟
&lt;/h3>&lt;p>IBM反驳的核心在于“经典计算机一侧的算法和资源优化不足”。Google基于直接计算薛定谔方程时间演化的状态向量模拟器，得出了需要1万年的估计，但IBM指出，通过使用一种称为“张量网络（Tensor Network）”的方法，可以显著缩短模拟时间。&lt;/p>
&lt;p>在张量网络中，量子电路的门操作被表示为多维数组（张量）的运算，并对网络的“收缩（Contraction）”顺序进行优化。此外，IBM主张如果充分利用Summit拥有的250 PB巨大存储空间（磁盘与内存分层），可以在保留整个状态向量的同时，在仅仅“两天半”内进行更高精度的模拟。&lt;/p>
&lt;h3 id="quantum-advantage-与-quantum-utility">Quantum Advantage 与 Quantum Utility
&lt;/h3>&lt;p>以此争论为契机，整个行业的趋势从执着于“执行经典计算机无法完成的人工任务（Supremacy）”，逐渐转变为“在现实社会的有用问题上，展现出相比经典方法实质性的优势（Quantum Advantage）”，进而迈入“量子计算机作为科学发现的新工具发挥作用（Quantum Utility）”的阶段。&lt;/p>
&lt;p>IBM自身避开了“超越性”一词，提出了作为量子处理器综合性能指标的“量子体积（Quantum Volume）”和“CLOPS (Circuit Layer Operations Per Second)”，并推动了注重硬件规模与质量平衡的研发。&lt;/p>
&lt;div class="mermaid">timeline
title "量子里程碑的演进"
2019 : "Google Sycamore (53Q)" : "宣布实现量子超越性"
2019 : "IBM反驳" : "Summit超级计算机2.5天内完成模拟"
2021 : "IBM Eagle (127Q)" : "突破100量子比特大关"
2022 : "IBM Osprey (433Q)" : "推进处理器规模扩大"
2023 : "Google表面码" : "扩展错误纠正（d=3 到 d=5）"
2023 : "IBM量子实用性" : "在127Q上进行复杂自旋模型模拟"
2024 : "未来" : "逻辑量子比特与错误缓解时代"&lt;/div>
&lt;hr>
&lt;h2 id="5-下一个前沿错误缓解error-mitigation与量子纠错qec">5. 下一个前沿：错误缓解（Error Mitigation）与量子纠错（QEC）
&lt;/h2>&lt;p>目前的量子计算机被称为“NISQ（Noisy Intermediate-Scale Quantum）”，容易受到噪声（由于与外部环境相互作用或控制不完善导致的错误）的影响，如果进行长时间计算，结果就会被噪声淹没。为了克服这个问题，主要有“错误缓解（Error Mitigation）”和“量子纠错（Quantum Error Correction）”两种方法。&lt;/p>
&lt;h3 id="错误缓解error-mitigation">错误缓解（Error Mitigation）
&lt;/h3>&lt;p>错误缓解是一种不改变量子硬件，通过经典后处理从计算结果的期望值中去除噪声影响的方法。IBM在2023年将127量子比特的“Eagle”处理器与“零噪声外推（Zero-Noise Extrapolation: ZNE）”等错误缓解技术相结合，在复杂伊辛模型的时间演化模拟中，达到了超越最先进近似张量网络法的精度，从而实证了“Quantum Utility（量子实用性）”。&lt;/p>
&lt;h3 id="量子纠错qec与逻辑量子比特">量子纠错（QEC）与逻辑量子比特
&lt;/h3>&lt;p>然而，为了最终执行任意复杂的算法（例如Shor的因数分解算法或复杂的量子化学计算），仅靠错误缓解是不够的，必须要有动态检测并纠正错误的“量子纠错（QEC）”。&lt;/p>
&lt;p>QEC的主流方法是“表面码（Surface Code）”。这种方法将多个物理量子比特（数据量子比特）排列成二维网格，并在它们之间放置用于测量的量子比特（辅助量子比特），以连续进行被称为“稳定子（Stabilizer）”的奇偶校验。&lt;/p>
&lt;div class="mermaid">graph LR
Q1["数据量子比特（Data）"] --- M1["测量X稳定子（辅助）"]
Q2["数据量子比特（Data）"] --- M1
Q3["数据量子比特（Data）"] --- M2["测量Z稳定子（辅助）"]
Q4["数据量子比特（Data）"] --- M2
M1 --> EC["错误症状解码（经典）"]
M2 --> EC
EC --> LQ["逻辑量子比特状态更新"]&lt;/div>
&lt;h4 id="阈值定理threshold-theorem与距离-d">阈值定理（Threshold Theorem）与距离 $d$
&lt;/h4>&lt;p>量子纠错存在“阈值定理”。当物理量子比特的错误率 $p$ 低于特定阈值 $p_{th}$（在表面码的情况下约为 1% 左右）时，通过增加码距（Distance）$d$（将更多物理量子比特分配给1个逻辑量子比特），可以呈指数级地降低逻辑错误率 $p_L$。&lt;/p>
&lt;p>逻辑错误率的近似公式表示如下：&lt;/p>
$$
p_L \approx \Lambda \left( \frac{p}{p_{th}} \right)^{\frac{d+1}{2}}
$$
&lt;p>这里，$\Lambda$ 是常数。只要 $p &lt; p_{th}$，随着 $d$ 的增大，$p_L$ 就会变得越小。然而，如果 $p > p_{th}$，增加物理量子比特反而会导致噪声积累，从而恶化逻辑错误率。&lt;/p>
&lt;h4 id="google的2023年里程碑通过扩展距离实证错误降低">Google的2023年里程碑：通过扩展距离实证错误降低
&lt;/h4>&lt;p>2023年2月，Google在《Nature》上发表了一篇具有里程碑意义的论文。他们使用第三代Sycamore处理器，在世界上首次实证了当表面码的距离从 $d=3$（使用17个物理量子比特）扩展到 $d=5$（使用49个物理量子比特）时，逻辑错误率从 3.028% 略微下降到 2.914%。&lt;/p>
&lt;p>这意味着他们已经踏入了 $p &lt; p_{th}$ 的区域，表明随着物理量子比特数量的增加，性能也会随之提升，这标志着迈向FTQC最重要的原理验证（Proof of Concept）已经完成。&lt;/p>
&lt;hr>
&lt;h2 id="6-迈向ftqc容错量子计算的路线图与展望">6. 迈向FTQC（容错量子计算）的路线图与展望
&lt;/h2>&lt;p>Google和IBM虽然采用了不同的架构和方法，但都在为了最终目标——FTQC（Fault-Tolerant Quantum Computing）而展开激烈的研发竞争。&lt;/p>
&lt;h3 id="ibm的方法模块化与重六边形网格">IBM的方法：模块化与重六边形网格
&lt;/h3>&lt;p>IBM在致力于将错误率降至最低的同时，也专注于处理器的规模扩大。在以“Eagle(127Q)”、“Osprey(433Q)”、“Condor(1121Q)”挑战单芯片极限的同时，他们还发布了名为“Quantum System Two”的模块化架构。此外，在量子比特的耦合拓扑结构上，采用了能够减少不必要的串扰并提高稳定性的“重六边形（Heavy-Hex）网格”。IBM的战略是在短期内通过高级错误缓解来追求实用性，同时分阶段引入QEC的混合方法。&lt;/p>
&lt;h3 id="google的方法提升逻辑量子比特的质量">Google的方法：提升逻辑量子比特的质量
&lt;/h3>&lt;p>Google的战略侧重于将单个逻辑量子比特的错误率降至极限（例如降至 $10^{-6}$），而不是急剧增加物理量子比特的数量。在此基础上，确立在模块之间传输量子态的技术（Quantum Interconnects），旨在打造能让数千至数万个物理量子比特并行运行的大规模系统。&lt;/p>
&lt;p>要以容错的方式执行魔法状态蒸馏（Magic State Distillation）等非克利福德门，相关的协议实现也将是未来重大的技术障碍。据说为了执行实用的Shor算法以破解2048位的RSA加密，需要数千个错误率在 $10^{-8}$ 以下的逻辑量子比特，换算成物理量子比特则需要数百万至数千万个，道路依然漫长。&lt;/p>
&lt;hr>
&lt;h2 id="7-结语">7. 结语
&lt;/h2>&lt;p>在量子计算机的历史中，“量子超越性”是通过物理方式证明计算机理论潜力的重要里程碑。Google在2019年的实证以及IBM建设性的反驳，将整个行业从单纯的理论证明推向了追求实际实用性（Utility）以及最终迈向容错量子计算（FTQC）的真正工程时代。&lt;/p>
&lt;p>如今，我们正见证着从充满噪声的NISQ设备向具备错误纠正功能的逻辑量子比特设备的过渡期。在未来几年到十年间，新的材料科学发现、新药研发流程的革命，以及优化问题的突破，都将随着这种量子硬件的演进而成为现实。&lt;/p>
&lt;p>塑造未来计算机科学的Google和IBM，以及世界各地研究人员的动态，将持续值得我们密切关注。&lt;/p></description></item><item><title>后量子时代的区块链和虚拟货币将如何改变？</title><link>http://kenji.blog/zh-cn/p/post-quantum-blockchain-and-crypto/</link><pubDate>Fri, 11 Sep 2026 17:00:00 +0900</pubDate><guid>http://kenji.blog/zh-cn/p/post-quantum-blockchain-and-crypto/</guid><description>&lt;img src="http://kenji.blog/p/post-quantum-blockchain-and-crypto/img/eyecatch.jpg" alt="Featured image of post 后量子时代的区块链和虚拟货币将如何改变？" />&lt;h2 id="1-引言后量子时代的脚步声与区块链的危机">1. 引言：后量子时代的脚步声与区块链的危机
&lt;/h2>&lt;p>自2009年中本聪（Satoshi Nakamoto）创造比特币（Bitcoin）以来，区块链技术作为“去中心化且不可篡改的账本”，已成长为全球金融系统和应用程序的基础设施。支撑这种坚如磐石的安全性的是**公钥密码学（Public Key Cryptography）&lt;strong>和&lt;/strong>密码学哈希函数（Cryptographic Hash Functions）**等现代密码技术。&lt;/p>
&lt;p>这些密码技术保证安全性的依据是数学上的“计算困难性”，即使用经典计算机（我们现在使用的个人电脑和超级计算机），即使花费宇宙寿命般漫长的时间也无法破解。&lt;/p>
&lt;p>然而，这一前提正随着物理学和信息科学的前沿领域——**量子计算机（Quantum Computers）**的快速发展和实用化，面临着被彻底颠覆的危险。利用量子力学特有的“叠加态（Superposition）”和“量子纠缠（Entanglement）”，量子计算机在某些特定数学问题上展现出压倒传统经典计算机的计算能力，即所谓的“量子霸权（Quantum Supremacy）”。&lt;/p>
&lt;p>本文将深入探讨区块链技术具体面临着量子计算机的哪些威胁，并从技术和数学的角度，彻底解析作为解决方案的**抗量子计算密码学（PQC：Post-Quantum Cryptography）**的最新动态，以及加密资产网络的过渡方案。&lt;/p>
&lt;hr>
&lt;h2 id="2-量子计算机的基础及对区块链的两大威胁">2. 量子计算机的基础及对区块链的两大威胁
&lt;/h2>&lt;p>当前的区块链系统主要由以下两种密码要素构成，它们分别面临着不同量子算法的威胁。&lt;/p>
&lt;div class="mermaid">graph TD
A["量子计算机惊人的计算能力"] --> B["Shor算法 (Shor's Algorithm)"]
A --> C["Grover算法 (Grover's Algorithm)"]
B --> D["公钥密码学 (ECDSA/RSA/DSA) 的崩溃"]
C --> E["对密码学哈希函数 (SHA-256) 的影响"]
D --> F["破解他人私钥・伪造交易"]
E --> G["PoW挖矿的优势・对部分地址的攻击"]
F --> H["区块链中致命且直接的威胁"]
G --> I["可通过调整算法 (如增加密钥长度等) 应对的威胁"]
style H fill:#ff9999,stroke:#cc0000,stroke-width:2px;
style I fill:#ffff99,stroke:#cccc00,stroke-width:2px;&lt;/div>
&lt;h3 id="21-椭圆曲线密码学ecdsa的基础与计算困难性">2.1. 椭圆曲线密码学（ECDSA）的基础与计算困难性
&lt;/h3>&lt;p>包括比特币和以太坊（Ethereum）在内的许多区块链，都采用了**椭圆曲线数字签名算法（ECDSA：Elliptic Curve Digital Signature Algorithm）**作为其数字签名算法。具体而言，比特币使用的是参数名为 &lt;code>secp256k1&lt;/code> 的椭圆曲线。&lt;/p>
&lt;p>椭圆曲线密码学的安全性依赖于**椭圆曲线离散对数问题（ECDLP：Elliptic Curve Discrete Logarithm Problem）**的计算困难性。
椭圆曲线由以下Weierstrass标准形式的方程定义：&lt;/p>
$$
y^2 \equiv x^3 + ax + b \pmod{p}
$$
&lt;p>在比特币的 &lt;code>secp256k1&lt;/code> 中，$a = 0, b = 7$，且 $p$ 是一个极大的素数。
设该曲线上的一基点（参考点）为 $G$，随机选择的256位巨大整数（私钥）为 $k$。此时，公钥 $K$ 可以通过对基点进行 $k$ 次加法（标量乘法）求得。&lt;/p>
$$
K = k \times G = \underbrace{G + G + \dots + G}_{k \text{ 次}}
$$
&lt;p>使用经典计算机，从公开的公钥 $K$ 和基点 $G$ 反推私钥 $k$（求解离散对数），即使使用Pollard&amp;rsquo;s rho算法等最佳经典算法，也需要 $\mathcal{O}(\sqrt{p})$ 的指数级计算时间。对于256位的密钥，大约需要进行 $2^{128}$ 次运算，这即使让目前的超级计算机运行几十亿年也无法破解。&lt;/p>
&lt;h3 id="22-shor算法shors-algorithm导致的崩溃">2.2. Shor算法（Shor&amp;rsquo;s Algorithm）导致的崩溃
&lt;/h3>&lt;p>然而，彼得·肖尔（Peter Shor）在1994年提出的&lt;strong>Shor算法&lt;/strong>彻底打破了这一前提。Shor算法最初是为了在多项式时间内解决整数分解问题（RSA密码的基础）而提出的，但它同样适用于离散对数问题和椭圆曲线离散对数问题。&lt;/p>
&lt;p>Shor算法的核心在于利用**量子傅里叶变换（QFT：Quantum Fourier Transform）**来快速找到函数的“周期（Period）”。&lt;/p>
$$
\text{经典计算的复杂度} = \mathcal{O}(2^{n/2}) \quad (n\text{为位长})
$$
$$
\text{量子算法的复杂度} = \mathcal{O}(n^3)
$$
&lt;p>这样，Shor算法将指数级的时间急剧缩短到了&lt;strong>多项式时间（Polynomial Time）&lt;/strong>。一旦拥有足够多逻辑量子比特的量子计算机问世，攻击者就能在几分钟甚至几秒钟内，从网络上公开的公钥 $K$ 中推导出私钥 $k$。这将使攻击者能够轻易获取他人钱包的私钥，从而完全控制其资金。&lt;/p>
&lt;h4 id="221-shor算法破解ecdlp的分步解析">2.2.1 Shor算法破解ECDLP的分步解析
&lt;/h4>&lt;p>让我们逐步了解量子计算机是如何解决椭圆曲线离散对数问题（ECDLP）的。&lt;/p>
&lt;p>问题设定：在 $K = k \times G$ 中，$G$ 和 $K$ 已知，求未知的整数 $k$（私钥）。设椭圆曲线的阶为 $N$。&lt;/p>
&lt;p>&lt;strong>Step 1: 创建叠加态&lt;/strong>
首先，准备两个量子寄存器，并分别应用阿达马门（Hadamard Gate），创建所有可能整数组合的叠加态。
&lt;/p>
$$
|\psi_1\rangle = \frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} |x\rangle |y\rangle |0\rangle
$$
&lt;p>&lt;strong>Step 2: 应用量子预言机（函数评估）&lt;/strong>
接着，使用执行椭圆曲线点加法的量子电路（预言机），在第三个寄存器中计算函数 $f(x, y) = x \times G + y \times K$。
&lt;/p>
$$
|\psi_2\rangle = \frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} |x\rangle |y\rangle |x \times G + y \times K\rangle
$$
&lt;p>
这里的关键是，由于 $K = k \times G$，因此可以重写为 $f(x, y) = (x + y \cdot k) \times G$。&lt;/p>
&lt;p>&lt;strong>Step 3: 测量第三个寄存器&lt;/strong>
当测量第三个寄存器时，它会坍缩到椭圆曲线上的某个点 $R$。此时，第一和第二个寄存器会坍缩到满足 $x + y \cdot k \equiv c \pmod{N}$（$c$ 为常数）的 $(x, y)$ 组合的叠加态。
&lt;/p>
$$
|\psi_3\rangle = \frac{1}{\sqrt{N}} \sum_{y=0}^{N-1} |c - y \cdot k \pmod{N}\rangle |y\rangle
$$
&lt;p>&lt;strong>Step 4: 应用量子傅里叶变换（QFT）&lt;/strong>
这个状态具有与周期 $k$ 相关的周期性。通过对其应用逆量子傅里叶变换（Inverse QFT），可以引起相位干涉，将周期信息转换为振幅。&lt;/p>
&lt;p>&lt;strong>Step 5: 测量与经典后处理&lt;/strong>
测量第一和第二个寄存器后，将以极高的概率获得包含 $k$ 相关信息的值。对测量出的值应用连分数展开（Continued Fractions）等经典的数论算法，就可以完全确定未知的私钥 $k$。&lt;/p>
&lt;p>整个过程所需的量子门数量为 $\mathcal{O}(\log^3 N)$，它能以经典计算机 $\mathcal{O}(\sqrt{N})$ 搜索完全无法比拟的超高速度破解出私钥。&lt;/p>
&lt;h3 id="23-grover算法grovers-algorithm及对哈希函数的影响">2.3. Grover算法（Grover&amp;rsquo;s Algorithm）及对哈希函数的影响
&lt;/h3>&lt;p>另一个威胁是洛夫·格罗弗（Lov Grover）在1996年提出的&lt;strong>Grover算法&lt;/strong>。这会对哈希函数（例如：SHA-256）产生重大影响。&lt;/p>
&lt;p>在区块链中，哈希函数被用于保证数据的完整性、生成地址，以及作为比特币&lt;strong>PoW（工作量证明）挖矿&lt;/strong>的基础。哈希函数的反向计算（原像计算）可以被视为一个“非结构化数据库搜索问题”，即寻找一个输入值 $x$，使得 $H(x)$ 等于某个特定的输出值 $y$。&lt;/p>
&lt;p>在经典计算机中，要从 $N$ 个可能性中找到正确答案，平均需要 $\frac{N}{2}$ 次尝试，最坏情况下需要 $N$ 次尝试。即计算复杂度为 $\mathcal{O}(N)$。
然而，Grover算法使用了一种称为“振幅放大（Amplitude Amplification）”的量子技术。通过迭代放大处于叠加态的所有可能性中正确答案状态的概率振幅，将搜索时间缩短到其平方根。&lt;/p>
$$
\text{Grover算法的计算复杂度} = \mathcal{O}(\sqrt{N})
$$
&lt;p>对于SHA-256而言，$N = 2^{256}$，因此经典的穷举搜索大约需要 $2^{256}$ 次尝试。但是，如果使用Grover算法，则只需要 $\sqrt{2^{256}} = 2^{128}$ 次尝试。这意味着，256位的哈希函数在面对量子计算机时，其&lt;strong>安全强度实质上减半至128位&lt;/strong>。&lt;/p>
&lt;h4 id="231-sha-256-能否幸存哈希中的量子霸权">2.3.1. SHA-256 能否幸存？（哈希中的量子霸权）
&lt;/h4>&lt;p>尽管安全性减半，但“128位的安全性”依然极其坚固。即使从当前的技术水平来看，$2^{128}$ 次运算也是一个天文数字，需要耗费宇宙寿命级别的时间。
因此，业界普遍认为**“SHA-256 在面对量子计算机时依然能够保持实用的安全性”**。如果未来需要提高安全余量，只需简单地将哈希的输出长度加倍（例如从SHA-256迁移到SHA-512），就可以在量子世界中维持经典的256位安全性。&lt;/p>
&lt;p>总而言之，可以说量子计算机对哈希函数的威胁是“轻微且可应对的”，而对公钥密码学（ECDSA）的威胁则是“致命的”。&lt;/p>
&lt;hr>
&lt;h2 id="3-对当前加密资产bitcoin-ethereum的具体影响分析">3. 对当前加密资产（Bitcoin, Ethereum）的具体影响分析
&lt;/h2>&lt;p>在一个能够用量子计算机破解ECDSA的世界里，加密资产网络具体会面临怎样的漏洞呢？在这里，我们将以比特币的机制为例，从**“公钥暴露时机”**的角度进行详细分析。&lt;/p>
&lt;h3 id="31-地址的生成与公钥的非公开性">3.1. 地址的生成与公钥的“非公开性”
&lt;/h3>&lt;p>比特币地址（如P2PKH: Pay-to-Public-Key-Hash 或 P2WPKH: Pay-to-Witness-Public-Key-Hash）并不是公钥本身，而是经过多次哈希处理后的公钥。&lt;/p>
$$
\text{比特币地址} = \text{Base58Check}(\text{RIPEMD160}(\text{SHA256}(\text{公钥})))
$$
&lt;p>如前所述，哈希函数对量子攻击（Grover算法）具有抗性，因此即使是量子计算机，也无法从作为哈希值的“地址”反推出原始的“公钥”。
也就是说，对于**“未使用的地址（从未进行过资金发送的地址）”**，公钥完全没有暴露在区块链上，只记录了哈希值。因此，由于不知道公钥，Shor算法就没有执行的目标，也就无法计算出私钥。这种状态下的钱包可以说是量子安全的（Quantum-safe）。&lt;/p>
&lt;h3 id="32-发送交易时的致命漏洞抢跑攻击">3.2. 发送交易时的致命漏洞（抢跑攻击）
&lt;/h3>&lt;p>问题出现在用户发送资金的时候。
当向网络广播（发送）交易时，为了进行验证，用户必须附上数字签名，并&lt;strong>将自己的公钥包含在交易数据中，向整个网络公开&lt;/strong>。&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant User as "用户 (Alice)"
participant Mempool as "Mempool (未确认交易池)"
participant QuantumAttacker as "量子攻击者"
participant Miner as "矿工 (生成区块)"
User->>Mempool: 发送交易 (包含公钥 + 签名)
Mempool-->>QuantumAttacker: 拦截网络上的公钥
note right of QuantumAttacker: 在几分钟内运行Shor算法&lt;br/>(从公钥计算出私钥)
QuantumAttacker->>QuantumAttacker: 使用Alice的私钥生成新签名
QuantumAttacker->>Mempool: 以更高的矿工费广播欺诈转账
Miner->>Miner: 优先将高费用(Gas)的欺诈交易打包进区块
Miner-->>User: 记录到区块链 (Alice损失资金)&lt;/div>
&lt;p>一旦公钥被发送到Mempool（未确认交易的等待区），该数据就会被全球的节点共享。如果攻击者拥有超高速的量子计算机，就可以通过以下过程盗取资金：&lt;/p>
&lt;ol>
&lt;li>从Mempool中拦截合法用户（Alice）的交易，并&lt;strong>提取公钥&lt;/strong>。&lt;/li>
&lt;li>运行Shor算法，在**几分钟内（区块确认之前）**从公钥计算出私钥。&lt;/li>
&lt;li>使用获取的私钥，&lt;strong>创建一笔伪造的交易&lt;/strong>，将Alice的资金发送到攻击者的地址。&lt;/li>
&lt;li>为这笔伪造的交易设置比Alice原交易&lt;strong>高得多的矿工费（Fee）&lt;/strong>，并发送到网络中。&lt;/li>
&lt;/ol>
&lt;p>矿工受经济利益驱使，会优先将手续费高的交易打包进区块。结果就是，攻击者的欺诈转账被率先确认（Confirm），而Alice的合法转账则因“余额不足（Double Spend）”被丢弃。
这一系列流程被称为&lt;strong>抢跑攻击（Front-running Attack）&lt;/strong>。在量子计算机普及的世界里，这会导致当有人按下发送按钮的瞬间，资金就会被黑客卷走的可怕局面。&lt;/p>
&lt;h3 id="33-重用地址与旧地址p2pk的危机">3.3. 重用地址与旧地址（P2PK）的危机
&lt;/h3>&lt;p>更严重的问题是，那些过去哪怕只发送过一次资金的地址（例如被重复用作找零地址的情况），其公钥已经永久记录在区块链上了。这些地址根本不需要等待发送交易，随时都面临着被计算出私钥并盗走余额的风险。&lt;/p>
&lt;p>此外，包括中本聪早期挖矿奖励（约100万枚以上的BTC）在内的，在2009年至2010年间主流的**P2PK（Pay-to-Public-Key）**格式中，公钥本身并没有经过哈希处理，而是直接作为地址记录在区块链上。这些大量休眠的比特币将成为量子计算机最容易攻击的目标，一旦被集中盗取并在市场上抛售，可能会引发价格的暴跌。&lt;/p>
&lt;hr>
&lt;h2 id="4-向抗量子计算密码学pqc-post-quantum-cryptography的过渡方案">4. 向抗量子计算密码学（PQC: Post-Quantum Cryptography）的过渡方案
&lt;/h2>&lt;p>为了避免这种“Q-Day（量子计算机破解密码之日）”的灾难，密码学界和区块链社区正在计划向**抗量子计算密码学（PQC）**过渡，这种密码学即使使用量子算法也很难破解。
美国国家标准与技术研究院（NIST）多年来一直在推进PQC的标准化进程，经过多轮严格的评估，已选定了几种极具潜力的密码方案作为最终标准。&lt;/p>
&lt;p>下面我们将结合数学机制，详细介绍有望替代区块链数字签名的主要PQC算法。&lt;/p>
&lt;h3 id="41-基于哈希的签名hash-based-signatures">4.1. 基于哈希的签名（Hash-Based Signatures）
&lt;/h3>&lt;p>基于哈希的签名是一种仅依赖于“哈希函数的抗碰撞性”这一极其简单而坚固的基础的安全密码方案。如前所述，只要有128位的安全余量，哈希函数对量子计算机的安全性就已得到证明，因此这是一种非常可靠的方法。
代表性的算法包括&lt;strong>Lamport签名（Lamport Signatures）&lt;/strong>、其扩展版WOTS（Winternitz One-Time Signature），以及NIST标准化候选算法&lt;strong>SPHINCS+&lt;/strong>（现在称为FIPS 205，即SLH-DSA）。&lt;/p>
&lt;h4 id="411-lamport签名的数学细节一次性签名">4.1.1. Lamport签名的数学细节（一次性签名）
&lt;/h4>&lt;p>让我们进一步从数学上详细了解Lamport签名的机制。
设哈希函数为 $H: \{0, 1\}^* \to \{0, 1\}^{256}$。&lt;/p>
&lt;p>&lt;strong>【密钥生成】&lt;/strong>
Alice（发送方）使用真随机数生成器（TRNG）生成256对私钥对。
&lt;/p>
$$
\text{sk}_{i,0} \in \{0, 1\}^{256}, \quad \text{sk}_{i,1} \in \{0, 1\}^{256} \quad (1 \le i \le 256)
$$
&lt;p>
因此，私钥 $\text{sk}$ 共有512个256位的字符串（大小：$512 \times 32 = 16,384$ 字节）。&lt;/p>
&lt;p>接下来计算公钥 $\text{pk}$。对每个私钥组件进行哈希处理。
&lt;/p>
$$
\text{pk}_{i,0} = H(\text{sk}_{i,0}), \quad \text{pk}_{i,1} = H(\text{sk}_{i,1})
$$
&lt;p>
公钥同样为 $16,384$ 字节。将该公钥发布到区块链网络中。&lt;/p>
&lt;p>&lt;strong>【签名生成】&lt;/strong>
为了对交易数据 $M$ 进行签名，Alice首先计算其哈希值。
&lt;/p>
$$
h = H(M) \in \{0, 1\}^{256}
$$
&lt;p>
设哈希值 $h$ 的第 $i$ 位为 $h_i \in \{0, 1\}$。
Alice的签名 $\sigma$ 就是与每一位 $h_i$ 相对应的私钥组件的集合。
&lt;/p>
$$
\sigma = (\text{sk}_{1, h_1}, \text{sk}_{2, h_2}, \dots, \text{sk}_{256, h_{256}})
$$
&lt;p>
也就是说，如果消息哈希的某一位是 &lt;code>0&lt;/code>，则公开 $\text{sk}_{i,0}$；如果是 &lt;code>1&lt;/code>，则公开 $\text{sk}_{i,1}$。签名的大小为 $256 \times 32 = 8,192$ 字节。&lt;/p>
&lt;p>&lt;strong>【签名验证】&lt;/strong>
矿工（验证方）使用接收到的交易 $M$、签名 $\sigma = (s_1, s_2, \dots, s_{256})$ 以及公钥 $\text{pk}$ 进行验证。
重新计算交易的哈希值 $h = H(M)$，并检查对每个 $s_i$ 进行哈希处理后的结果是否与公钥中对应的元素 $\text{pk}_{i, h_i}$ 一致。
&lt;/p>
$$
H(s_i) \overset{?}{=} \text{pk}_{i, h_i} \quad (\text{对于所有 } 1 \le i \le 256)
$$
&lt;p>这个过程在数学上极其简单，只要量子计算机无法对 $H$ 进行逆向计算，就不可能伪造签名。但是，由于一旦签名，一半的私钥就会暴露在网络上，如果使用同一个密钥对为另一条消息签名，暴露的私钥组件就会增加，从而给攻击者留下伪造的余地。因此产生了“只能使用一次（One-Time）”的强限制。
为了使其能够投入实际应用，研究人员开发了使用默克尔树（Merkle Tree）将大量一次性密钥捆绑到一个根公钥上的&lt;strong>XMSS&lt;/strong>技术，以及无状态的**SPHINCS+**等技术，但它们的缺点是签名大小动辄达到几十KB。&lt;/p>
&lt;h3 id="42-基于格的密码学lattice-based-cryptography">4.2. 基于格的密码学（Lattice-Based Cryptography）
&lt;/h3>&lt;p>目前作为PQC主流最受期待，并且被NIST采纳为主要标准规格（FIPS 204: ML-DSA / 前称CRYSTALS-Dilithium，以及Falcon等）的，就是&lt;strong>格密码学（Lattice-Based Cryptography）&lt;/strong>。&lt;/p>
&lt;p>格密码学的安全性依赖于“多维格中的最短向量问题（SVP: Shortest Vector Problem）”以及“带错学习问题（LWE: Learning With Errors）”等在数学上已被证明为困难的问题。即使使用量子计算机，目前也还没有发现能够有效解决格问题的算法。&lt;/p>
&lt;p>&lt;strong>LWE（Learning With Errors）的数学模型：&lt;/strong>
LWE问题的基本思路是，通过在联立一次方程组中故意加入“微小的噪声（误差）”，使得问题的求解变得极其困难。
设未知的秘密向量为 $\mathbf{s} \in \mathbb{Z}_q^n$。
有一个随机选择的巨大公开矩阵 $\mathbf{A} \in \mathbb{Z}_q^{m \times n}$，以及故意附加的微小噪声向量 $\mathbf{e} \in \mathbb{Z}_q^m$。
公钥 $\mathbf{b}$ 的计算方法如下：&lt;/p>
$$
\mathbf{b} = \mathbf{A}\mathbf{s} + \mathbf{e} \pmod{q}
$$
&lt;p>即使矩阵 $\mathbf{A}$ 和向量 $\mathbf{b}$（公钥）是公开的，由于噪声 $\mathbf{e}$ 的存在，从中反推私钥 $\mathbf{s}$ 会变得极其困难。如果没有噪声，仅用高斯消元法就能解开；但加入了噪声之后，所有维度上的搜索空间将呈爆炸性增长，从而为对抗经典和量子计算机提供了坚固的安全性。
在区块链等实际使用的算法（如Dilithium等）中，会将此问题扩展到多项式环上（即&lt;strong>Ring-LWE&lt;/strong>或&lt;strong>Module-LWE&lt;/strong>），以减小密钥大小并提高计算速度。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>优点&lt;/strong>：与基于哈希的签名相比，其公钥和签名大小相对较小（几KB左右），而且签名生成和验证的计算速度非常快（等于或快于ECDSA）。&lt;/li>
&lt;li>&lt;strong>缺点&lt;/strong>：数学结构复杂，且经过历史验证的时间较短，未来发现新的破解算法的风险并不为零。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="5-区块链向pqc过渡中的技术挑战">5. 区块链向PQC过渡中的技术挑战
&lt;/h2>&lt;p>尽管PQC算法（如Dilithium或SPHINCS+等）已经存在，但这并不意味着我们明天就可以直接将其引入到比特币或以太坊中。分布式系统特有的许多沉重课题仍然存在。&lt;/p>
&lt;h3 id="51-签名大小膨胀与可扩展性的崩溃">5.1. 签名大小膨胀与可扩展性的崩溃
&lt;/h3>&lt;p>引入PQC面临的最大障碍是数据量的大幅膨胀。
目前的ECDSA签名大小约为70字节，而格密码学Dilithium（ML-DSA）的签名大小约为2,420到4,595字节（取决于安全级别），公钥大小也超过1,300字节。基于哈希的SPHINCS+的单个签名大小更是高达几万字节。&lt;/p>
&lt;p>如果比特币在不改变现有区块大小上限（包含SegWit在内约4MB的权重）的情况下引入PQC，那么一个区块能容纳的交易数量将急剧下降。网络的吞吐量（TPS：Transactions Per Second）将遭到毁灭性打击，转账拥堵将成为常态。
为了解决这个问题，需要大幅提高区块大小，但这会增加全节点的存储和网络带宽要求，让个人运行节点变得更加困难，从而陷入导致&lt;strong>网络中心化&lt;/strong>的困境。&lt;/p>
&lt;div class="mermaid">pie title "区块链中签名数据大小比较 (概念图)"
"ECDSA (约70 Bytes)" : 2
"Dilithium ML-DSA (约2,500 Bytes)" : 58
"SPHINCS+ (约17,000 Bytes)" : 40&lt;/div>
&lt;p>&lt;em>(※ 引入PQC带来的交易数据膨胀，将成为限制可扩展性的致命瓶颈)&lt;/em>&lt;/p>
&lt;h3 id="52-对以太坊虚拟机evm的影响及预编译合约">5.2. 对以太坊虚拟机（EVM）的影响及预编译合约
&lt;/h3>&lt;p>在像以太坊这样图灵完备的智能合约平台中，引入PQC需要对EVM（以太坊虚拟机）进行底层的升级。
在当前的EVM中，为了验证ECDSA签名，准备了一个名为 &lt;code>ecrecover&lt;/code>（地址：&lt;code>0x01&lt;/code>）的预编译合约（Precompiled Contract），它经过了优化，能以非常低的Gas费用（3000 Gas）执行签名验证。&lt;/p>
&lt;p>然而，Dilithium或Falcon等新格密码算法的验证处理涉及复杂的多项式和矩阵运算，如果仅使用现有的EVM操作码（Opcode）来实现，一次签名验证可能就会消耗数百万甚至数千万Gas。这足以在单笔交易中就耗尽目前的区块Gas限制（约3000万Gas）。&lt;/p>
&lt;p>为了避免这种情况，必须通过网络硬分叉，将用于验证PQC的新预编译合约（例如：将 &lt;code>0x10&lt;/code> 分配给 DilithiumVerify）直接内置到EVM中。这需要各个以太坊客户端（如Geth、Nethermind、Erigon等）的核心开发者协同合作，在C++、Go、Rust等语言层面上优化实现格密码学验证逻辑，并进行安全审计，这是一个极其漫长的过程。&lt;/p>
&lt;h3 id="53-硬分叉达成共识的困难性">5.3. 硬分叉达成共识的困难性
&lt;/h3>&lt;p>要更改底层的签名算法，就必须进行**硬分叉（Hard Fork）**以更新整个网络的协议。然而，在一个像比特币这样极度重视“不改变规则、保持去中心化”的社区中，达成共识的过程在政治层面上是极其艰难的。关于过渡到PQC的BIP（比特币改进提案）从提出到最终实现，可能需要长达数年的讨论和测试。&lt;/p>
&lt;hr>
&lt;h2 id="6-q-day何时到来-过渡路线图">6. “Q-Day”何时到来？ 过渡路线图
&lt;/h2>&lt;p>“量子计算机完全破解256位椭圆曲线密码学的日子（Q-Day）”究竟何时到来？
虽然研究人员之间存在分歧，但许多专家预测，拥有数千至数万个稳定的逻辑量子比特（具备容错和错误纠正能力的量子比特）的大规模量子计算机，将会在**“2030年代中期到2040年代”**出现。不过，如果硬件架构取得突破，或是发现了更高效的量子算法，这一时间表也有可能提前（2030年左右）。&lt;/p>
&lt;p>加密资产的生态系统应当在为时已晚之前采取以下路线图：&lt;/p>
&lt;h3 id="阶段1混合签名与账户抽象现在2028年左右">阶段1：混合签名与账户抽象（现在〜2028年左右）
&lt;/h3>&lt;p>当前的区块链领域，尤其是以太坊的核心开发团队（如Vitalik Buterin等），正在探讨将ECDSA和PQC（基于哈希的签名或格密码学）相结合的**“混合签名”**方案。这是一种在交易中同时附加现有的、安全的ECDSA签名和PQC签名的方法，即使其中一种被破解也能保持安全性。
此外，借助账户抽象（Account Abstraction, ERC-4337），开发者正在努力让智能合约钱包能够在无需等待协议层硬分叉的情况下，选择性地（Opt-in，仅限有意愿的用户）实现和支持PQC签名。&lt;/p>
&lt;h3 id="阶段2利用零知识证明zk-rollups2025年">阶段2：利用零知识证明（ZK-Rollups）（2025年〜）
&lt;/h3>&lt;p>作为解决PQC最大弱点——“签名数据膨胀”的王牌，业界寄希望于Layer 2技术的&lt;strong>ZK-Rollups（零知识证明）&lt;/strong>。
不是将庞大的PQC签名数据直接写入Layer 1（主链），而是在Layer 2上验证并汇总大量PQC交易。然后，使用ZK-SNARKs或ZK-STARKs将它们压缩成一个极小的“证明数据（Proof）”，再将其记录到Layer 1中。
需要注意的是，部分SNARKs的构造（如Groth16等）本身也具有量子脆弱性，因此采用仅依赖具有抗量子能力的哈希函数的&lt;strong>ZK-STARKs&lt;/strong>将成为关键。&lt;/p>
&lt;h3 id="阶段3协议层面的硬分叉2030年左右">阶段3：协议层面的硬分叉（2030年左右）
&lt;/h3>&lt;p>当NIST的PQC标准化完全落地，行业标准库也已齐备并经过充分测试后，预计Bitcoin和Ethereum等主流公链将进行硬分叉，把默认的签名方式完全迁移到PQC。在这一过渡期，各方将会进行大规模的宣发，呼吁用户“将资金从旧钱包转移到支持PQC的新钱包”。&lt;/p>
&lt;h3 id="先锋项目案例">先锋项目案例
&lt;/h3>&lt;p>一些区块链项目已经提前预见到了量子威胁，从初期阶段便打出抗量子特性进行开发。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>QRL (Quantum Resistant Ledger)&lt;/strong>：一个早期的区块链项目，在协议层原生实现了一种名为XMSS（扩展默克尔签名方案）的基于哈希的PQC。&lt;/li>
&lt;li>&lt;strong>Algorand / Cellframe&lt;/strong>：这些项目采用了灵活的模块化密码层架构，着眼于未来的PQC升级，正在积极探索整合格密码学方案。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="7-结论加密资产的未来与保护我们的资产">7. 结论：加密资产的未来与保护我们的资产
&lt;/h2>&lt;p>“后量子时代”的到来不再仅仅是科幻小说（SF）中的空想，它已经作为现实密码系统面临的具体技术挑战，逼近了我们的眼前。&lt;/p>
&lt;p>Shor算法和Grover算法这两把量子计算机的利剑，分别威胁着当前区块链根基的公钥密码学和哈希函数。特别是ECDSA的漏洞是致命的，为了避免因抢跑攻击而导致资金被盗的风险，向抗量子计算密码学（PQC）过渡是绝对无法回避的道路。&lt;/p>
&lt;p>然而，科技界和区块链社区并没有坐以待毙。格密码学和基于哈希的签名等PQC算法的选型和标准化正在稳步推进；通过利用零知识证明（ZK-STARKs）和Layer 2扩容技术，克服PQC引入最大障碍（数据大小膨胀）的路径也已初现端倪。&lt;/p>
&lt;p>对于我们普通的加密资产用户和投资者而言，现在无需恐慌并立刻抛售所有资产。但重要的是，我们必须具备以下基本的认知和自我保护意识：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>避免地址重用&lt;/strong>：不仅出于隐私保护的考量，更应从安全性出发，坚决不在“已使用的地址（哪怕只发送过一次资金，公钥已暴露在区块链上的地址）”中长期存放资金。&lt;/li>
&lt;li>&lt;strong>关注技术动向&lt;/strong>：时刻留意主要网络关于PQC迁移的讨论或硬分叉新闻（如Bitcoin的BIP、Ethereum的EIP等），确保在需要时能妥善完成钱包的迁移工作。&lt;/li>
&lt;/ul>
&lt;p>区块链的历史，也是一部不断应对新技术威胁进行升级与自我修复（Resilience）的历史。正如克服可扩展性问题和环境问题（从PoW转向PoS等）一样，面对这前所未有的量子威胁，整个生态系统也定会摸索出解决方案并成功适应。
我们有理由期待，量子计算机这一人类新智慧的结晶，与去中心化分布式账本这一信任技术的碰撞，将不会走向毁灭，而是升华为更高维度、更加坚不可摧的融合系统。&lt;/p>
&lt;hr>
&lt;p>&lt;em>参考文献・相关链接:&lt;/em>&lt;/p>
&lt;ul>
&lt;li>National Institute of Standards and Technology (NIST) - Post-Quantum Cryptography Standardization Project&lt;/li>
&lt;li>Shor, P. W. (1994). Algorithms for quantum computation: discrete logarithms and factoring.&lt;/li>
&lt;li>Grover, L. K. (1996). A fast quantum mechanical algorithm for database search.&lt;/li>
&lt;li>Buterin, V. (2024). How to hard-fork to save most users&amp;rsquo; funds in a quantum emergency.&lt;/li>
&lt;/ul></description></item><item><title>通俗易懂地解说量子退火与量子门模型的区别</title><link>http://kenji.blog/zh-cn/p/quantum-annealing-vs-gate-model-explained/</link><pubDate>Fri, 11 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/zh-cn/p/quantum-annealing-vs-gate-model-explained/</guid><description>&lt;img src="http://kenji.blog/p/quantum-annealing-vs-gate-model-explained/img/eyecatch.jpg" alt="Featured image of post 通俗易懂地解说量子退火与量子门模型的区别" />&lt;h1 id="通俗易懂地解说量子退火与量子门模型的区别">通俗易懂地解说量子退火与量子门模型的区别
&lt;/h1>&lt;p>量子计算是下一代计算技术，它利用量子力学原理（叠加态和量子纠缠），有望以突飞猛进的速度解决现代经典计算机（包括传统超级计算机）需要耗费大量时间才能解决的特定问题。&lt;/p>
&lt;p>目前，实现量子计算机的方法主要分为两大主流范式：&lt;strong>“量子退火（Quantum Annealing）”&lt;strong>和&lt;/strong>“量子门模型（Quantum Gate Model）”&lt;/strong>。这两种方法在底层物理途径、擅长的计算任务以及硬件实现的挑战上存在巨大差异。&lt;/p>
&lt;p>本文将从非常详细且专业的技术视角，对这两种方法进行彻底的比较与解说，涵盖物理原理、数学模型（如Ising模型、QUBO、酉变换等）、当前的技术局限性，直至具体的应用场景。&lt;/p>
&lt;hr>
&lt;h2 id="1-量子计算的基础与经典计算机的根本区别">1. 量子计算的基础：与经典计算机的根本区别
&lt;/h2>&lt;p>经典计算机处理信息时使用的是状态为“0”或“1”的“比特（Bit）”。而量子计算机使用的是“量子比特（Qubit）”。由于量子力学的“叠加（Superposition）”原理，量子比特可以同时以一定概率拥有0和1的状态。&lt;/p>
&lt;p>此外，通过利用被称为“量子纠缠（Entanglement）”的现象，多个量子比特的状态会相互产生强烈的相关性，对一个量子比特的操作会瞬间影响整个系统。这使得类似于并行处理的计算（量子并行性）成为可能。&lt;/p>
&lt;p>然而，量子状态对外部噪声（如热量和电磁波等）非常脆弱，状态遭到破坏而退化为经典状态的“退相干（Decoherence）”是一个重大难题。针对这一噪声问题的不同处理方式，导致了量子退火和门模型在设计思想上的巨大差异。&lt;/p>
&lt;hr>
&lt;h2 id="2-量子退火-quantum-annealing-详解">2. 量子退火 (Quantum Annealing) 详解
&lt;/h2>&lt;p>量子退火主要是一种专用于解决**“组合优化问题”**的专用计算架构。它基于东京工业大学的门胁万平和西森秀稔在1998年提出的理论，随后由加拿大的D-Wave Systems公司在世界上首次实现商业化而广为人知。&lt;/p>
&lt;h3 id="21-物理机制横向磁场ising模型与量子涨落">2.1. 物理机制：横向磁场Ising模型与量子涨落
&lt;/h3>&lt;p>量子退火利用了自然界物理系统倾向于稳定在“最低能量状态（基态）”的特性来进行计算。&lt;/p>
&lt;p>在经典的“模拟退火（Simulated Annealing）”方法中，利用热涨落（热波动）来逃离局部最优解。而在量子退火中，则是利用“量子涨落（Quantum Fluctuation）”，通过“量子隧道效应（Quantum Tunneling）”穿透能量势垒，从而更高效地寻找全局最优解。&lt;/p>
&lt;p>量子退火系统的时间演化可由以下哈密顿量（表示系统总能量的算符）$H(t)$ 来描述：&lt;/p>
$$ H(t) = A(t) H_0 + B(t) H_P $$
&lt;p>其中，$t$ 表示时间，$A(t)$ 是逐渐减小的函数，$B(t)$ 是逐渐增大的函数。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>$H_0$（初始哈密顿量）&lt;/strong>: 表示横向磁场（Transverse field），用于产生量子涨落。
$$ H_0 = - \sum_{i} \sigma_i^x $$
（$\sigma_i^x$ 为泡利X矩阵，表示比特的翻转。）&lt;/li>
&lt;li>&lt;strong>$H_P$（问题哈密顿量）&lt;/strong>: 表示要解决的优化问题的Ising模型（Ising Model）。&lt;/li>
&lt;/ul>
&lt;p>在初始状态（$t=0$）下，$A(0)$ 达到最大，系统处于 $H_0$ 的基态（所有状态均匀叠加的状态）。然后随着时间的推移，缓慢地减弱横向磁场，同时增强问题哈密顿量的相互作用。&lt;/p>
&lt;h3 id="22-绝热量子计算-adiabatic-quantum-computation">2.2. 绝热量子计算 (Adiabatic Quantum Computation)
&lt;/h3>&lt;p>在这一过程中，关键在于**“绝热定理（Adiabatic Theorem）”**。根据绝热定理，只要系统的变化“足够缓慢（绝热）”，系统就会始终保持在当前哈密顿量的基态。&lt;/p>
&lt;p>也就是说，当最终 $A(t) \to 0$ 且 $B(t) \to 1$ 时，系统就会处于 $H_P$ 的基态，即得到了**“优化问题的精确解”**。&lt;/p>
&lt;div class="mermaid">graph TD
A["哈密顿量 H_0 (初始状态)"] -->|"绝热变化 (足够缓慢)"| B["始终保持基态"]
A -->|"非绝热变化 (过快/热噪声)"| C["跃迁至激发态 (错误)"]
B --> D["哈密顿量 H_P (全局最优解)"]
C --> E["陷入局部最优解"]
D --> F["读取结果"]
E --> F&lt;/div>
&lt;h3 id="23-从qubo到ising模型的映射">2.3. 从QUBO到Ising模型的映射
&lt;/h3>&lt;p>要在量子退火机上解决实际问题，必须将问题转化为**QUBO（Quadratic Unconstrained Binary Optimization：无约束二次伪布尔优化）**的形式。&lt;/p>
&lt;p>QUBO的目标函数定义如下：
&lt;/p>
$$ \min_{x \in \{0,1\}^n} \sum_{i} Q_{ii} x_i + \sum_{i &lt; j} Q_{ij} x_i x_j $$
&lt;p>
其中，$x_i \in \{0, 1\}$ 是二值变量，$Q$ 是权重矩阵。&lt;/p>
&lt;p>由于硬件（如D-Wave）处理的是物理自旋（向上/向下），我们需要将其转换为使用变量 $\sigma_i \in \{-1, +1\}$ 的Ising模型。转换公式如下：
&lt;/p>
$$ x_i = \frac{1 - \sigma_i}{2} \quad \text{或} \quad \sigma_i = 1 - 2x_i $$
&lt;p>将此公式代入QUBO方程并整理，即可得到Ising模型的哈密顿量 $H_P$：
&lt;/p>
$$ H_P = - \sum_{i&lt;j} J_{ij} \sigma_i^z \sigma_j^z - \sum_{i} h_i \sigma_i^z $$
&lt;ul>
&lt;li>$J_{ij}$: 自旋之间的相互作用（耦合系数）。代表物理量子比特之间的耦合强度。&lt;/li>
&lt;li>$h_i$: 作用于每个自旋的局部磁场（偏置）。&lt;/li>
&lt;/ul>
&lt;h3 id="24-量子退火的硬件与挑战以d-wave为例">2.4. 量子退火的硬件与挑战（以D-Wave为例）
&lt;/h3>&lt;p>D-Wave的量子处理器是使用超导量子干涉器件（SQUID）实现的。物理量子比特之间的连接依赖于硬件布线，并非全连接（即所有比特相互连接）。
从早期的“嵌合体图（Chimera graph）”，到“飞马图（Pegasus）”，再到“和风图（Zephyr）”，虽然连接度有所提升，但仍存在限制。&lt;/p>
&lt;p>因此，需要一种称为**“次图嵌入（Minor Embedding）”**的处理，将具有复杂图结构的问题映射到物理图上。通过这种方式，一个逻辑变量由多个物理量子比特（链）表示，这会导致可用的实际量子比特数减少，并降低计算精度。&lt;/p>
&lt;hr>
&lt;h2 id="3-量子门模型-quantum-gate-model-详解">3. 量子门模型 (Quantum Gate Model) 详解
&lt;/h2>&lt;p>量子门模型是经典计算机逻辑门（如AND、OR、NOT等）的量子力学扩展，是一种能够实现**“通用量子计算（Universal Quantum Computation）”**的架构。包括IBM、Google、Rigetti、IonQ等在内的许多公司都采用了这种方法。&lt;/p>
&lt;h3 id="31-酉变换与状态向量">3.1. 酉变换与状态向量
&lt;/h3>&lt;p>在量子门模型中，整个量子比特系统的状态用“状态向量（State Vector）” $|\psi\rangle$ 来表示。一个量子比特的状态可以表示为基态 $|0\rangle$ 和 $|1\rangle$ 的线性组合：
&lt;/p>
$$ |\psi\rangle = \alpha |0\rangle + \beta |1\rangle $$
&lt;p>
这里，$\alpha$ 和 $\beta$ 是复概率幅，且满足 $|\alpha|^2 + |\beta|^2 = 1$。从几何学上看，这种状态可以可视化为“布洛赫球面（Bloch Sphere）”上的一个点。&lt;/p>
&lt;p>量子计算的步骤被描述为对状态向量应用&lt;strong>酉算符（Unitary Operator） $U$&lt;/strong>。酉矩阵具有 $U^\dagger U = I$（与其埃尔米特共轭的乘积为单位矩阵）的性质，对应于量子力学中薛定谔方程时间演化的可逆操作。
&lt;/p>
$$ |\psi_{t+1}\rangle = U_t |\psi_t\rangle $$
&lt;h3 id="32-基本量子门与电路模型">3.2. 基本量子门与电路模型
&lt;/h3>&lt;p>量子计算算法被设计为一系列量子门的操作序列（量子电路）。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>泡利门 (X, Y, Z)&lt;/strong>: 对应于布洛赫球面上绕各轴旋转180度。X门相当于经典计算中的NOT门。&lt;/li>
&lt;li>&lt;strong>阿达马门 (H)&lt;/strong>: 将 $|0\rangle$ 转换为 $\frac{|0\rangle + |1\rangle}{\sqrt{2}}$，从而创造叠加态。
$$ H = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 &amp; 1 \\ 1 &amp; -1 \end{pmatrix} $$&lt;/li>
&lt;li>&lt;strong>CNOT门 (Controlled-NOT)&lt;/strong>: 这是一个双量子比特门。只有当控制比特（Control qubit）为 $|1\rangle$ 时，才对目标比特（Target qubit）应用X门操作。这可以生成量子纠缠（Entanglement）。&lt;/li>
&lt;/ul>
&lt;p>任何量子算法都可以通过少量单量子比特门和CNOT门的组合进行近似表达（通用门集）。&lt;/p>
&lt;div class="mermaid">graph LR
Q0["量子比特 0: |0>"] --> H1["阿达马门 (H)"]
Q1["量子比特 1: |0>"] --> I1["恒等操作 (I)"]
H1 --> C1["控制比特 (Control)"]
I1 --> T1["目标比特 (Target)"]
C1 -. "纠缠" .- T1
C1 --> M0["测量 (Measurement)"]
T1 --> M1["测量 (Measurement)"]
M0 --> Result["经典结果 (0或1)"]
M1 --> Result&lt;/div>
&lt;h3 id="33-纠错以及从nisq到ftqc之路">3.3. 纠错以及从NISQ到FTQC之路
&lt;/h3>&lt;p>量子门模型最大的挑战在于量子状态因噪声而受到破坏的“退相干”现象。随着计算步骤（门深度）的增加，错误会逐渐积累。&lt;/p>
&lt;p>为了进行理想的计算，**量子纠错（Quantum Error Correction）**是必不可少的。例如，通过“表面码（Surface Code）”等方法，将多个物理量子比特捆绑在一起，构成一个没有错误的“逻辑量子比特（Logical Qubit）”。然而，要构建一个逻辑量子比特，需要数千至数万个物理量子比特，这将带来巨大的开销。&lt;/p>
&lt;p>我们目前所处的阶段是&lt;strong>NISQ（Noisy Intermediate-Scale Quantum：含噪声中型量子）&lt;strong>时代，设备拥有数十至数百个量子比特但缺乏纠错能力。要实现具备完全纠错能力的&lt;/strong>FTQC（Fault-Tolerant Quantum Computing：容错量子计算）&lt;/strong>，仍需要取得许多突破。&lt;/p>
&lt;hr>
&lt;h2 id="4-技术与数学对比总结">4. 技术与数学对比总结
&lt;/h2>&lt;p>下面对比这两种架构的根本差异：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">对比项目&lt;/th>
&lt;th style="text-align:left">量子退火 (Quantum Annealing)&lt;/th>
&lt;th style="text-align:left">量子门模型 (Gate Model)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>计算模型&lt;/strong>&lt;/td>
&lt;td style="text-align:left">绝热量子计算（哈密顿量的连续时间演化）&lt;/td>
&lt;td style="text-align:left">酉变换（离散的门操作序列）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>适用问题&lt;/strong>&lt;/td>
&lt;td style="text-align:left">组合优化问题 (QUBO, Ising模型)&lt;/td>
&lt;td style="text-align:left">通用型（量子化学模拟、质因数分解、搜索等）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>表达能力&lt;/strong>&lt;/td>
&lt;td style="text-align:left">启发式优化（近似解）&lt;/td>
&lt;td style="text-align:left">等同于通用量子图灵机（理论上可以进行所有计算）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>实现案例&lt;/strong>&lt;/td>
&lt;td style="text-align:left">D-Wave Systems&lt;/td>
&lt;td style="text-align:left">IBM, Google, Quantinuum, IonQ 等&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>抗噪能力&lt;/strong>&lt;/td>
&lt;td style="text-align:left">相对较强（由于停留在基态附近，可容忍一定程度的热噪声）&lt;/td>
&lt;td style="text-align:left">非常弱（轻微的噪声即可导致相位偏移，破坏计算结果）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>可扩展性&lt;/strong>&lt;/td>
&lt;td style="text-align:left">数千至数万量子比特规模（依赖物理结构。逻辑比特化较困难）&lt;/td>
&lt;td style="text-align:left">数百量子比特规模（走向FTQC需要数百万规模）&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>量子退火作为一种“特定目的的协处理器”，非常适合用于弥补经典计算机的不足以解决优化问题。相比之下，量子门模型是“通用计算机”的量子版，最终目标是实现超越经典计算机的计算能力（量子霸权），但其硬件的构建极为困难。&lt;/p>
&lt;hr>
&lt;h2 id="5-当前的局限与挑战">5. 当前的局限与挑战
&lt;/h2>&lt;h3 id="量子退火的局限">量子退火的局限
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>连接度限制（Connectivity）&lt;/strong>: 由于前述的次图嵌入，当问题规模增大时，所需的物理量子比特数量会呈指数级增长。&lt;/li>
&lt;li>&lt;strong>系数精度（Precision）&lt;/strong>: 在硬件上设置 $J_{ij}$ 和 $h_i$ 等模拟参数时的物理误差会直接影响解的质量。&lt;/li>
&lt;li>&lt;strong>温度与非绝热跃迁&lt;/strong>: 因为系统温度并非绝对零度，热激发可能导致系统偏离最优解。&lt;/li>
&lt;/ol>
&lt;h3 id="量子门模型的局限">量子门模型的局限
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>相干时间（Coherence Time）&lt;/strong>: 维持量子状态的时间非常短，通常只有几微秒到几毫秒，这严格限制了在此期间可执行的门数量（电路深度）。&lt;/li>
&lt;li>&lt;strong>门保真度（Gate Fidelity）&lt;/strong>: 双量子比特门（如CNOT）的操作错误率仍然不够低（通常在99.x%左右）。要实现FTQC，必须将其提高到99.99%以上。&lt;/li>
&lt;li>&lt;strong>量子体积（Quantum Volume）&lt;/strong>: 目前最大的挑战在于，如何提升不仅考虑量子比特数量，还结合互连性和错误率在内的实际计算能力（量子体积）。&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="6-具体的应用场景与算法">6. 具体的应用场景与算法
&lt;/h2>&lt;p>让我们看看每种方法擅长的具体应用领域。&lt;/p>
&lt;h3 id="61-量子退火的应用场景">6.1. 量子退火的应用场景
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>物流与路线规划&lt;/strong>: 大量车辆的配送路线优化（旅行商问题的变体）。考虑交通拥堵的实时路线探索。&lt;/li>
&lt;li>&lt;strong>金融工程&lt;/strong>: 投资组合优化。在风险最小化的同时探索回报最大化的投资组合。&lt;/li>
&lt;li>&lt;strong>机器学习&lt;/strong>: 特征选择（Feature Selection）。从海量数据集中提取对预测贡献最大的变量组合。&lt;/li>
&lt;li>&lt;strong>制造业&lt;/strong>: 工厂中的车间作业调度问题（确定哪个机器按什么顺序加工哪个零件速度最快）。&lt;/li>
&lt;/ul>
&lt;h3 id="62-量子门模型的应用场景">6.2. 量子门模型的应用场景
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>量子化学模拟&lt;/strong>: 高精度模拟分子的能量状态和化学反应。&lt;/li>
&lt;li>&lt;strong>质因数分解（Shor算法）&lt;/strong>: 能够在多项式时间内分解巨大合数的算法。一旦该算法投入实际应用，目前的RSA等公钥加密基础设施将被破解，因此向抗量子密码（PQC）过渡已迫在眉睫。&lt;/li>
&lt;li>&lt;strong>数据库搜索（Grover算法）&lt;/strong>: 在未排序的数据库中搜索目标数据时，经典计算机需要 $O(N)$ 步，而Grover算法只需 $O(\sqrt{N})$ 步即可完成搜索。&lt;/li>
&lt;/ul>
&lt;h3 id="63-nisq时代的混合算法vqe与qaoa">6.3. NISQ时代的混合算法：VQE与QAOA
&lt;/h3>&lt;p>为了克服NISQ设备量子电路较浅的限制，结合了量子计算机和经典计算机优点的“变分量子算法（Variational Quantum Algorithms）”正备受关注。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>VQE (Variational Quantum Eigensolver：变分量子本征求解器)&lt;/strong>: 用于求解分子基态能量的算法。使用带参数的量子电路（Ansatz）制备量子态，并测量能量期望值 $\langle \psi(\theta) | H | \psi(\theta) \rangle$。将此期望值作为目标函数，利用经典的优化算法（如梯度下降法）更新参数 $\theta$。不断重复直至收敛，从而求得分子的精确能量状态。&lt;/li>
&lt;li>&lt;strong>QAOA (Quantum Approximate Optimization Algorithm：量子近似优化算法)&lt;/strong>: 使用量子门模型解决组合优化问题的算法。它通过“Trotter展开（Trotterization）”将量子退火的绝热时间演化近似为离散的门操作，通过交替施加哈密顿量来获得近似解。QAOA被寄予厚望，有望成为通过门模型解决优化问题的有效手段。&lt;/li>
&lt;/ul>
&lt;div class="mermaid">graph TD
User["用户问题"] --> Formulation{"问题的性质"}
Formulation -- "组合优化" --> QA_Path["量子退火 / Ising机"]
QA_Path --> QUBO["QUBO公式化"]
QUBO --> DWave["在D-Wave上运行"]
Formulation -- "化学计算・通用计算" --> Gate_Path["量子门模型"]
Gate_Path --> Circuit["量子电路设计 (VQE / QAOA)"]
Circuit --> IBMGoogle["在IBM / Google量子硬件上运行"]&lt;/div>
&lt;hr>
&lt;h2 id="7-总结">7. 总结
&lt;/h2>&lt;p>量子退火和量子门模型在利用量子力学的奇妙特性作为计算资源方面是相同的，但它们的方法和目标却有很大不同。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>量子退火&lt;/strong> 是一种“专用启发式引擎”，旨在针对组合优化这一特定的实际问题，尽早取得实用成果。目前许多企业已经在推进各种概念验证（PoC）。&lt;/li>
&lt;li>&lt;strong>量子门模型&lt;/strong> 是一种“通用量子计算机”，具有从根本上颠覆计算机科学范式的潜力，涵盖从严格的物理和化学模拟到密码破解等领域。然而，要克服纠错这一巨大障碍，还需要长期的研究和开发。&lt;/li>
&lt;/ul>
&lt;p>在未来，预计将建立起一种以经典超级计算机（HPC）为核心，调用退火机处理优化任务，并调用门模型量子计算机处理量子化学计算的**“异构（Heterogeneous）计算”**环境。&lt;/p>
&lt;p>虽然量子计算机仍在发展中，但其硬件和算法都取得了日新月异的进步。理解Ising模型的数学原理和量子电路的基础知识，将成为迎接即将到来的量子原生时代的强大武器。&lt;/p>
&lt;hr>
&lt;p>&lt;em>本文全面解说了从量子计算的基本概念到最新的硬件动态。请继续关注未来的最新研究动向。&lt;/em>&lt;/p></description></item><item><title>在Python中模拟秀尔算法</title><link>http://kenji.blog/zh-cn/p/shors-algorithm-simulation-python/</link><pubDate>Fri, 11 Sep 2026 08:00:00 +0900</pubDate><guid>http://kenji.blog/zh-cn/p/shors-algorithm-simulation-python/</guid><description>&lt;img src="http://kenji.blog/p/shors-algorithm-simulation-python/img/eyecatch.jpg" alt="Featured image of post 在Python中模拟秀尔算法" />&lt;h1 id="1-引言量子计算机带来的密码危机">1. 引言：量子计算机带来的密码危机
&lt;/h1>&lt;p>现代互联网社会的大部分安全性都依赖于&lt;strong>公钥密码体制&lt;/strong>（尤其是RSA加密）。当我们在网上购物发送信用卡信息，或交换高度机密的数据时，这些通信内容都受到RSA加密的坚固保护。&lt;/p>
&lt;p>RSA加密安全性的基础依赖于一个数学事实：“&lt;strong>使用经典计算机（我们日常使用的PC或超级计算机）对巨大的整数进行质因数分解是极其困难的&lt;/strong>”。然而，彼得·秀尔（Peter Shor）在1994年发表的“&lt;strong>秀尔算法（Shor&amp;rsquo;s Algorithm）&lt;/strong>”从根本上颠覆了这一前提。在数学上已经证明，如果在大型量子计算机上运行秀尔算法，可以在短短几分钟到几个小时内解开经典计算机需要花费超过宇宙年龄的时间才能完成的质因数分解。&lt;/p>
&lt;p>在本文中，我们将极其详细地讲解秀尔算法如何高速进行质因数分解，从其数学原理到使用Python和量子计算框架&lt;strong>Qiskit&lt;/strong>的具体模拟实现。&lt;/p>
&lt;hr>
&lt;h1 id="2-计算复杂度的剧烈变化从指数级到多项式时间">2. 计算复杂度的剧烈变化：从指数级到多项式时间
&lt;/h1>&lt;p>为什么质因数分解如此困难？即使使用被称为经典计算机中最好的质因数分解算法的“普通数域筛选法（General Number Field Sieve, GNFS）”，其时间复杂度也是次指数级的。&lt;/p>
&lt;p>在经典方法中，对位数为 $N$ 的合数进行质因数分解所需的时间复杂度如下：&lt;/p>
$$ O\left(\exp\left( c (\log N)^{1/3} (\log \log N)^{2/3} \right)\right) $$
&lt;p>因此，只要增加密钥长度（例如增加到2048位或4096位），在经典计算机上的破解就会耗费数千年、数万年这种不切实际的时间。&lt;/p>
&lt;p>但是，如果在量子计算机上使用&lt;strong>秀尔算法&lt;/strong>，计算复杂度将针对输入的位数 $\log N$ 剧烈降低到多项式时间。&lt;/p>
$$ O((\log N)^3) $$
&lt;p>这意味着，如果将位数翻倍，经典计算机的计算时间会呈天文数字般增长，而在量子计算机上，计算时间最多只会增加约8倍。这种&lt;strong>从指数级时间到多项式时间的计算复杂度类的降低（被包含在BQP类中）&lt;/strong>，正是秀尔算法的真正厉害之处。&lt;/p>
&lt;div class="mermaid">graph TD
A["输入大小(位数) N增加"] --> B{"算法选择"}
B -->|经典: 普通数域筛选法| C["次指数级增长 O(exp(...))"]
B -->|量子: 秀尔算法| D["多项式时间 O((log N)^3)"]
C --> E["数千年〜数十亿年 (无法破解)"]
D --> F["几分钟〜几小时 (现实时间内破解)"]&lt;/div>
&lt;hr>
&lt;h1 id="3-算法全貌与数学背景">3. 算法全貌与数学背景
&lt;/h1>&lt;p>秀尔算法实际上并非完全在量子计算机上运行。它是通过经典计算机的前处理与后处理，以及量子计算机的核心部分（周期寻找算法）协同工作而构成的。&lt;/p>
&lt;p>算法的整体流程如下：&lt;/p>
&lt;div class="mermaid">graph TD
A["输入: 想要进行质因数分解的合数 N"] --> B["选择随机数 a 使得 a &lt; N"]
B --> C{"gcd(a, N) > 1 ?"}
C -- "Yes" --> D["输出平凡因子 gcd(a, N) 并结束"]
C -- "No" --> E["使用量子算法寻找 f(x) = a^x mod N 的周期 r"]
E --> F{"r 是偶数 且 a^(r/2) ≢ -1 mod N ?"}
F -- "No" --> B
F -- "Yes" --> G["计算因子 p = gcd(a^(r/2) - 1, N), q = gcd(a^(r/2) + 1, N)"]
G --> H["输出: p, q"]&lt;/div>
&lt;h2 id="从质因数分解归约到周期寻找问题">从质因数分解归约到周期寻找问题
&lt;/h2>&lt;p>秀尔的天才之处在于将“&lt;strong>质因数分解问题&lt;/strong>”转换为了“&lt;strong>周期寻找问题（Order Finding Problem）&lt;/strong>”。&lt;/p>
&lt;p>考虑整数 $N$（想要进行质因数分解的数）和一个互质的整数 $a$（$1 &lt; a &lt; N$）。我们定义如下的模指数函数：&lt;/p>
$$ f(x) = a^x \bmod N $$
&lt;p>这个函数具有某个周期 $r$。也就是说，对于任意的 $x$，都满足 $f(x+r) = f(x)$。特别是在 $x=0$ 时：&lt;/p>
$$ a^r \equiv 1 \pmod N $$
&lt;p>满足这个条件的最小正整数 $r$ 被称为“$a$ 模 $N$ 的阶（Order）”。如果能找到这个周期 $r$，就可以通过以下方式导出质因数。&lt;/p>
&lt;p>对公式进行变形：
&lt;/p>
$$ a^r - 1 \equiv 0 \pmod N $$
&lt;p>
如果 $r$ 是偶数，就可以使用平方差公式进行因式分解：
&lt;/p>
$$ (a^{r/2} - 1)(a^{r/2} + 1) \equiv 0 \pmod N $$
&lt;p>这意味着 $N$ 与 $(a^{r/2} - 1)$ 或 $(a^{r/2} + 1)$ 之一有公约数（但必须满足条件 $a^{r/2} \not\equiv -1 \pmod N$）。因此，使用欧几里得算法计算：&lt;/p>
$$ p = \gcd(a^{r/2} - 1, N) $$
$$ q = \gcd(a^{r/2} + 1, N) $$
&lt;p>就可以找到 $N$ 的非平凡质因数 $p, q$。这个计算（计算最大公约数或生成随机数）在经典计算机上可以非常快速地完成。问题的焦点就集中在&lt;strong>如何高速寻找周期 $r$&lt;/strong> 上。在经典计算机上，寻找这个周期 $r$ 本身就需要指数级的时间。这里就轮到量子计算机出场了。&lt;/p>
&lt;hr>
&lt;h1 id="4-量子算法部分周期寻找的机制">4. 量子算法部分：周期寻找的机制
&lt;/h1>&lt;p>使用量子计算机寻找周期 $r$ 的子程序由以下4个步骤组成：&lt;/p>
&lt;div class="mermaid">graph LR
subgraph "量子状态演化"
S1["|0⟩|0⟩ (初始化)"] --> S2["H门: 叠加态 Σ|x⟩|0⟩"]
S2 --> S3["神谕 U: Σ|x⟩|a^x mod N⟩"]
S3 --> S4["QFT: 通过干涉提取周期"]
S4 --> S5["测量: 获取近似值 y"]
end&lt;/div>
&lt;h2 id="步骤1量子寄存器的初始化与叠加">步骤1：量子寄存器的初始化与叠加
&lt;/h2>&lt;p>首先，准备两个量子寄存器。第1个寄存器用于输入状态，第2个寄存器用于存储函数的计算结果。
初始状态全为 $|0\rangle$。&lt;/p>
$$ |\psi_0\rangle = |0\rangle_1 |0\rangle_2 $$
&lt;p>对第1个寄存器的所有量子比特应用阿达马门（Hadamard Gate），创造出所有可能输入 $x$（从 $0$ 到 $Q-1$，$Q=2^n$）的等概率叠加态。&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle_1 |0\rangle_2 $$
&lt;p>由此，量子计算机将在一次运算中同时保持所有 $Q$ 个输入的状态。这是&lt;strong>量子并行性&lt;/strong>的强大源泉。&lt;/p>
&lt;h2 id="步骤2应用神谕函数模幂运算">步骤2：应用神谕函数（模幂运算）
&lt;/h2>&lt;p>接下来，使用量子运算电路 $U_f$ 计算函数 $f(x) = a^x \bmod N$，并将其结果存储到第2寄存器中。&lt;/p>
$$ |\psi_2\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle_1 |a^x \bmod N\rangle_2 $$
&lt;p>此时，第1寄存器和第2寄存器处于**量子纠缠（Entanglement）**状态。如果（假设）观测第2寄存器并得到了一个特定的值 $k = a^{x_0} \bmod N$，那么第1寄存器的状态将坍缩为给出该值 $k$ 的 $x$ 的叠加态。由于函数的周期是 $r$，剩余的状态将是以 $r$ 为间隔的值，即 $x_0, x_0+r, x_0+2r, \dots$。&lt;/p>
$$ |\psi_3\rangle = \sqrt{\frac{r}{Q}} \sum_{j=0}^{M-1} |x_0 + j r\rangle_1 |k\rangle_2 $$
&lt;p>但是，我们想知道的并不是 $x_0$，而是周期 $r$ 本身。从这个状态直接观测 $r$ 是不可能的。因此，我们使用量子傅里叶变换。&lt;/p>
&lt;h2 id="步骤3通过量子傅里叶变换qft产生相位干涉">步骤3：通过量子傅里叶变换（QFT）产生相位干涉
&lt;/h2>&lt;p>对第1寄存器应用&lt;strong>量子傅里叶变换（Quantum Fourier Transform, QFT）&lt;/strong>。QFT是经典离散傅里叶变换的量子版本，它转换状态向量的振幅。QFT对基态 $|x\rangle$ 的作用定义如下：&lt;/p>
$$ QFT |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} \omega^{xy} |y\rangle $$
&lt;p>这里，$\omega = e^{2\pi i / Q}$。&lt;/p>
&lt;p>应用QFT后，状态的振幅会产生干涉。省略数学细节，对于具有周期 $r$ 的状态应用QFT时，只有当 $y$ 非常接近 $Q/r$ 的整数倍时，波才会发生&lt;strong>相长干涉（Constructive Interference）&lt;/strong>。对于其他状态，由于&lt;strong>相消干涉（Destructive Interference）&lt;/strong>，概率振幅会相互抵消并趋向于零。&lt;/p>
&lt;h2 id="步骤4测量与连分数展开">步骤4：测量与连分数展开
&lt;/h2>&lt;p>最后测量第1寄存器。通过测量得到的值 $y$，以很高的概率满足以下条件：&lt;/p>
$$ y \approx c \frac{Q}{r} \implies \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>（$c$ 是 $0 \le c &lt; r$ 的未知整数）&lt;/p>
&lt;p>对得到的有理数 $y/Q$ 应用经典算法&lt;strong>连分数展开（Continued Fraction Expansion）&lt;/strong>，计算出近似分数 $c/r$，然后从分母中提取出周期 $r$。&lt;/p>
&lt;hr>
&lt;h1 id="5-使用python和qiskit的模拟实现">5. 使用Python和Qiskit的模拟实现
&lt;/h1>&lt;p>仅凭理论很难有切实的感受，让我们实际使用Python和IBM的量子计算框架&lt;strong>Qiskit&lt;/strong>来模拟秀尔算法吧。&lt;/p>
&lt;p>在这里，我们将实现最经典著名的例子：&lt;strong>“使用 $a=7$ 对 $N=15$ 进行质因数分解”&lt;/strong> 的场景。&lt;/p>
&lt;h2 id="运行环境准备">运行环境准备
&lt;/h2>&lt;p>请预先安装Qiskit。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install qiskit qiskit-aer numpy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="python实现代码全貌">Python实现代码全貌
&lt;/h2>&lt;p>以下代码是专为 $N=15, a=7$ 编写的秀尔算法实现示例。由于在当前的模拟器中构建通用的模幂电路计算成本过高，因此我们将特定 $a=7$ 情况下的门操作硬编码了。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;span class="lnt">102
&lt;/span>&lt;span class="lnt">103
&lt;/span>&lt;span class="lnt">104
&lt;/span>&lt;span class="lnt">105
&lt;/span>&lt;span class="lnt">106
&lt;/span>&lt;span class="lnt">107
&lt;/span>&lt;span class="lnt">108
&lt;/span>&lt;span class="lnt">109
&lt;/span>&lt;span class="lnt">110
&lt;/span>&lt;span class="lnt">111
&lt;/span>&lt;span class="lnt">112
&lt;/span>&lt;span class="lnt">113
&lt;/span>&lt;span class="lnt">114
&lt;/span>&lt;span class="lnt">115
&lt;/span>&lt;span class="lnt">116
&lt;/span>&lt;span class="lnt">117
&lt;/span>&lt;span class="lnt">118
&lt;/span>&lt;span class="lnt">119
&lt;/span>&lt;span class="lnt">120
&lt;/span>&lt;span class="lnt">121
&lt;/span>&lt;span class="lnt">122
&lt;/span>&lt;span class="lnt">123
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit_aer&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">AerSimulator&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit.visualization&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">plot_histogram&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">fractions&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Fraction&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">math&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 1. 构建逆量子傅里叶变换 (QFT†) 的函数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">qft_dagger&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;生成n量子比特的逆量子傅里叶变换电路&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 用于反转顺序的SWAP门&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">qubit&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qubit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">qubit&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 应用受控相位门和H门&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">j&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">m&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cp&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pi&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="nb">float&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">)),&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">j&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;QFT_dagger&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">qc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2. 构建 7^x mod 15 的受控模幂运算的函数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">c_amod15&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">power&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;为特定的a和幂生成受控U门 (N=15专用)&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">_&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">power&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># a=7 时 7^x mod 15 的硬编码逻辑&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">13&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">8&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">11&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">11&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">13&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">q&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">q&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">to_gate&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">^&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">power&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> mod 15&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">c_U&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">control&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">c_U&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 3. 主量子电路构建&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">shor_circuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_count&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># n_count: 控制寄存器的比特数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 目标寄存器为了表示 0〜15，需要 4比特&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 初始化第1寄存器（控制寄存器）（生成叠加态）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">q&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">q&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 将第2寄存器（目标寄存器）初始化为 |1&amp;gt; (0001)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">n_count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 应用受控模幂运算（神谕）&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">q&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 应用 2^q 次方的运算&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">c_amod15&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="n">q&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">[&lt;/span>&lt;span class="n">q&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="n">n_count&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">)])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 对第1寄存器应用逆量子傅里叶变换&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qft_dagger&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 测量第1寄存器&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">measure&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">qc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># --- 执行部分 ---&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;__main__&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">N&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n_count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">8&lt;/span> &lt;span class="c1"># 控制寄存器使用8个量子比特 (Q=256)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;搜索设置: N=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">N&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">, a=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">, 控制量子比特数=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 生成电路&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">shor_circuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 在模拟器上运行&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sim&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">AerSimulator&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 在最新的Qiskit中推荐使用transpile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">transpile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">compiled_circuit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">transpile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sim&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">job&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sim&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shots&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1024&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">job&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">counts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_counts&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">测量结果(比特串: 观测次数):&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">bitstring&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">count&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">counts&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">items&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">bitstring&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">count&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">次&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 经典后处理: 通过连分数展开确定周期r&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">--- 周期计算与质因数分解 ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">phases&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">output&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">counts&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 将比特串转换为十进制数&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">decimal&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 相位 = 测量值 / 2^n_count&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">phase&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">decimal&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">phases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">phase&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 通过连分数展开获取近似分数。分母上限为 N=15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">frac&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Fraction&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">phase&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">limit_denominator&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">15&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">r&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frac&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">denominator&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;观测值: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">decimal&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s2">3d&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> | 相位: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">phase&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s2">.4f&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> | 连分数: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">frac&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> | 估计周期 r = &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">r&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># 确认周期 r 是否为偶数并能带来有效结果&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">r&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">guess1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">math&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">r&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">guess2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">math&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">r&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">guess1&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">guess2&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; =&amp;gt; 成功！ &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">N&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> 的质因数是 &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">guess1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> 和 &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">guess2&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">。&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; =&amp;gt; 仅得到平凡因子。重试。&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; =&amp;gt; 周期为奇数，失败。&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="代码解析与执行结果分析">代码解析与执行结果分析
&lt;/h2>&lt;p>运行上述代码，作为控制寄存器的测量结果，将以极高的概率获得特定的峰值（观测值）。在 &lt;code>n_count=8&lt;/code>（$Q=256$）的情况下，如果是理想的量子计算机（或模拟器），观测值如 &lt;code>0&lt;/code>, &lt;code>64&lt;/code>, &lt;code>128&lt;/code>, &lt;code>192&lt;/code> 等出现的概率会非常大。&lt;/p>
&lt;p>将它们除以 $Q=256$，相位 $y/Q$ 分别为 $0.0$, $0.25$, $0.5$, $0.75$。
对这些相位进行连分数展开：&lt;/p>
&lt;ul>
&lt;li>$0.25 \to 1/4$ （估计周期 $r=4$）&lt;/li>
&lt;li>$0.50 \to 1/2$ （估计周期 $r=2$）&lt;/li>
&lt;li>$0.75 \to 3/4$ （估计周期 $r=4$）&lt;/li>
&lt;/ul>
&lt;p>使用这里得到的周期 $r=4$，计算质因数。
因为 $a=7, r=4$，
$p = \gcd(7^2 - 1, 15) = \gcd(48, 15) = 3$
$q = \gcd(7^2 + 1, 15) = \gcd(50, 15) = 5$&lt;/p>
&lt;p>精彩地，成功完成了 $15 = 3 \times 5$ 的质因数分解。&lt;/p>
&lt;blockquote>
&lt;p>[!TIP]
如果观测值为 $y=128$（相位 $0.5$），分母将变为 $2$，从而得到其约数而不是真实周期 $r=4$。在这种情况下，可以通过多次运行算法，或者检查所得到的 $r$ 的倍数来找到真实周期。&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h1 id="6-走向实用化的课题与-nisq-时代的局限">6. 走向实用化的课题与 NISQ 时代的局限
&lt;/h1>&lt;p>虽然在模拟器上可以轻松地对 $N=15$ 进行质因数分解，但要对现实社会中使用的 RSA-2048（617位的十进制数）进行质因数分解，现实的量子计算机还面临许多障碍。&lt;/p>
&lt;p>我们现在所处的时代被称为&lt;strong>NISQ（Noisy Intermediate-Scale Quantum：含噪声中等规模量子）时代&lt;/strong>。量子比特对外部环境的噪声极其敏感，在计算过程中会发生“退相干”导致状态破坏。&lt;/p>
&lt;p>为了准确运行像秀尔算法这样深（门数量多）的电路，必须使用纠正噪声的&lt;strong>量子纠错（Quantum Error Correction）&lt;/strong>。为了创造一个没有噪声的“逻辑量子比特”，需要使用表面码（Surface Code）等编码数千个“物理量子比特”。&lt;/p>
&lt;p>据估计，为了破解2048位的RSA加密，需要数千个完美的逻辑量子比特，而要实现这一点，需要搭载&lt;strong>数百万到数千万个物理量子比特&lt;/strong>的容错量子计算机。即使是当前最先进的量子处理器，也只有几百到几千个物理量子比特的规模，因此全世界的密码不会立即被破解。&lt;/p>
&lt;blockquote>
&lt;p>[!WARNING]
然而，存在一种称为“Store Now, Decrypt Later（现在存储，以后解密）”的威胁模型。攻击者可能会将现在加密的机密通信以加密数据的形式大量保存下来，并在10到20年后强大的量子计算机完成的瞬间，采取将它们全部解密的策略。&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h1 id="7-向抗量子计算密码pqc过渡">7. 向抗量子计算密码（PQC）过渡
&lt;/h1>&lt;p>为了应对这样的“Q-Day（量子计算机破解密码之日）”的到来，以美国国家标准与技术研究院（NIST）为首，全世界的密码学家都在推动**抗量子计算密码（Post-Quantum Cryptography, PQC）**的制定。&lt;/p>
&lt;p>PQC基于新的数学问题（如格问题、多变量多项式问题、基于哈希函数等），在数学上被认为即使使用秀尔算法（或使用格罗弗算法）也无法高效求解。已经有诸如“CRYSTALS-Kyber”和“CRYSTALS-Dilithium”等算法被选为标准规范，并正逐步引入Apple的iMessage和各种Web浏览器的通信协议中。&lt;/p>
&lt;p>对于管理IT基础设施的工程师来说，将系统从现有的RSA或椭圆曲线加密向PQC过渡，并建立“密码敏捷性（Crypto-Agility：能够快速切换加密方式的设计）”，将是未来的重要使命。&lt;/p>
&lt;hr>
&lt;h1 id="8-结语">8. 结语
&lt;/h1>&lt;p>在本文中，我们从秀尔算法的理论数学背景开始，讲解了使用量子傅里叶变换提取周期的机制，以及使用Python和Qiskit的具体模拟代码，以1万字规模的篇幅进行了极其详细的解说。&lt;/p>
&lt;p>量子力学这个微观世界的物理定律，竟然能从根本上颠覆作为宏观信息科学基础的计算复杂性理论和密码学理论，这一事实是科学史上最激动人心的范式转换之一。我们不能将目光从不断发展演进的量子计算技术与应对它的新密码技术的攻防战中移开。&lt;/p>
&lt;p>请务必在您自己的环境中运行这次介绍的Python代码，亲身体验量子态的叠加与干涉所产生的“计算魔法”。&lt;/p>
&lt;hr>
&lt;p>&lt;strong>参考文献&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Shor, P. W. (1994). &amp;ldquo;Algorithms for quantum computation: discrete logarithms and factoring&amp;rdquo;. Proceedings 35th Annual Symposium on Foundations of Computer Science.&lt;/li>
&lt;li>Nielsen, M. A., &amp;amp; Chuang, I. L. (2010). &amp;ldquo;Quantum Computation and Quantum Information&amp;rdquo;. Cambridge University Press.&lt;/li>
&lt;li>Qiskit Documentation: &lt;a class="link" href="https://qiskit.org/documentation/" target="_blank" rel="noopener"
>https://qiskit.org/documentation/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>【图解PQC】抗量子密码学主要算法比较</title><link>http://kenji.blog/zh-cn/p/post-quantum-cryptography-algorithms-comparison/</link><pubDate>Fri, 11 Sep 2026 07:00:00 +0900</pubDate><guid>http://kenji.blog/zh-cn/p/post-quantum-cryptography-algorithms-comparison/</guid><description>&lt;img src="http://kenji.blog/p/post-quantum-cryptography-algorithms-comparison/img/eyecatch.jpg" alt="Featured image of post 【图解PQC】抗量子密码学主要算法比较" />&lt;h2 id="1-引言量子计算机带来的密码危机">1. 引言：量子计算机带来的“密码危机”
&lt;/h2>&lt;p>在现代互联网社会中，为了保护通信的机密性和数据的完整性，公钥密码技术作为基础设施是不可或缺的。目前广泛使用的RSA加密和椭圆曲线加密（ECC），分别依赖于“大整数素数分解的困难性”和“椭圆曲线上离散对数问题的困难性”等数学壁垒来保证安全性。在经典计算机（包括超级计算机在内的我们目前使用的计算机）上，解开这些数学问题被证明需要比宇宙年龄还要长的时间，这一直是其安全性的依据。&lt;/p>
&lt;p>然而，这一坚固的前提正随着&lt;strong>量子计算机&lt;/strong>的理论与实用化进展而面临被彻底颠覆的危险。1994年，密码学家彼得·秀尔（Peter Shor）发表了“&lt;strong>Shor算法&lt;/strong>”，理论上证明了在具备足够性能的容错通用量子计算机（CRQC: Cryptographically Relevant Quantum Computer）上运行该算法，能够在“多项式时间”内破解素数分解问题和离散对数问题。这意味着目前使用的所有公钥密码都将被使其无效化。&lt;/p>
&lt;div class="mermaid">graph TD
A["大规模量子计算机 (CRQC)"] -->|执行| B["Shor算法"]
B -->|多项式时间内破解| C["素数分解问题 (RSA)"]
B -->|多项式时间内破解| D["离散对数问题 (ECC / ECDSA)"]
C --> E["加密通信的窃听、数据篡改、身份伪造"]
D --> E
F["Store Now, Decrypt Later (SNDL)"] --> E&lt;/div>
&lt;p>认为“真正的量子计算机还需要数十年才能完成，所以没有问题”是非常危险的。因为被称为**Store Now, Decrypt Later (SNDL：现在存储，稍后解密)**的攻击手法已经成为现实的威胁。这是一种恶意国家或黑客组织将当前加密的通信数据（如TLS流量等）大量存储起来，等到将来强大的量子计算机可用时，瞬间将其全部解密的攻击。国家机密、基础设施信息、需要长期保护的医疗数据等，已经暴露在这种威胁之下。&lt;/p>
&lt;p>此外，针对对称密钥加密（如AES）和哈希函数（如SHA-256），1996年发现的&lt;strong>Grover算法&lt;/strong>也同样存在。它能够将暴力破解（穷举攻击）的计算量减少到原来的平方根。也就是说，AES-128的安全级别实际上减半到了2的64次方，因此在量子时代，建议使用AES-256和SHA-384等更长的密钥和哈希长度。&lt;/p>
&lt;p>为了应对这场前所未有的密码危机，基于即便使用量子计算机也难以破解的新数学问题的**抗量子密码学（Post-Quantum Cryptography: PQC）**应运而生。本文将基于美国国家标准与技术研究院（NIST）主导推进的PQC标准化进程的结果，从数学背景、机制到架构比较，极其详尽地解说主要的PQC算法。&lt;/p>
&lt;hr>
&lt;h2 id="2-nist的pqc标准化项目全貌与历史">2. NIST的PQC标准化项目全貌与历史
&lt;/h2>&lt;p>密码技术的迁移，包括协议的重新设计、系统的更新、硬件的更换等，需要数年至数十年的时间。因此，全世界的密码学家们很早就开始了PQC的研究。其中发挥核心作用的是美国的NIST（国家标准与技术研究院）。NIST在2016年公开招募了PQC的标准化流程，接受来自全世界密码学社区的全新密码算法提案。&lt;/p>
&lt;p>标准化的对象主要分为以下两个类别：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>公钥密码 / 密钥封装机制 (KEM: Key Encapsulation Mechanism)&lt;/strong>: 在TLS连接等场景中，为了加密通信路径，安全共享（分发）对称密钥的机制。&lt;/li>
&lt;li>&lt;strong>数字签名 (Digital Signatures)&lt;/strong>: 在软件更新或电子证书中，证明数据未被篡改且发送者身份真实（真实性）的机制。&lt;/li>
&lt;/ol>
&lt;p>经过大约6年非常激烈的评估、分析与密码破解竞争（Round 1〜Round 3），部分算法还进行了Round 4的追加评估。最终结果是，2024年以下算法作为正式的联邦信息处理标准（FIPS）发布，并确立为未来世界的标准。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>FIPS 203 (ML-KEM)&lt;/strong>: 基于CRYSTALS-Kyber的KEM&lt;/li>
&lt;li>&lt;strong>FIPS 204 (ML-DSA)&lt;/strong>: 基于CRYSTALS-Dilithium的数字签名&lt;/li>
&lt;li>&lt;strong>FIPS 205 (SLH-DSA)&lt;/strong>: 基于SPHINCS+的无状态基于哈希的签名&lt;/li>
&lt;li>&lt;strong>（未来计划制定）FN-DSA&lt;/strong>: 基于FALCON的数字签名&lt;/li>
&lt;/ul>
&lt;p>这些被选定的算法所依赖的数学“困难性问题”各不相同，确保了即使某个算法将来被发现存在致命漏洞，整个系统也不会崩溃的多样性（Crypto Agility）。在标准化流程中，基于性能方面的考虑，格密码学（Lattice-based cryptography）成为了主力，而基于哈希的密码和基于编码的密码则作为强大的备份被采用。&lt;/p>
&lt;hr>
&lt;h2 id="3-pqc主要数学方法的分类">3. PQC主要数学方法的分类
&lt;/h2>&lt;p>PQC算法根据其安全性依据的数学问题，主要分为以下五大类。本文将特别深入探讨前三类。&lt;/p>
&lt;ol>
&lt;li>&lt;strong>格密码学 (Lattice-based Cryptography)&lt;/strong>:
基于多维格空间中的最短向量问题（SVP）、最近向量问题（CVP）及其衍生出的LWE问题。它是NIST标准化的核心，Kyber、Dilithium、FALCON均属于此类。处理速度、公钥大小和密文大小的平衡最出色，适合通用场景。&lt;/li>
&lt;li>&lt;strong>基于哈希的密码学 (Hash-based Cryptography)&lt;/strong>:
仅依赖于密码学哈希函数（如SHA-2、SHAKE等）的“抗碰撞性”和“单向性”作为安全性依据。只能应用于数字签名（如SPHINCS+），但其安全性证明最为坚固，对未知的数学攻击具有极高的抵抗力。&lt;/li>
&lt;li>&lt;strong>基于编码的密码学 (Code-based Cryptography)&lt;/strong>:
基于纠错码理论，依赖于伴随式解码问题（Syndrome Decoding Problem）的困难性。代表是20世纪70年代提出的Classic McEliece，拥有悠久的历史和已被验证的安全性，但缺点是公钥尺寸极大，达到兆字节级别。&lt;/li>
&lt;li>&lt;strong>多变量多项式密码学 (Multivariate Polynomial Cryptography)&lt;/strong>:
基于求解有限域上多变量非线性二次方程组（MQ问题）的困难性。主要作为数字签名提出（如Rainbow等），但在NIST最后一轮评估期间，被发现只需一台普通电脑运行几天即可破解的强大攻击手段，导致许多算法退出了标准化。&lt;/li>
&lt;li>&lt;strong>基于同源的密码学 (Isogeny-based Cryptography)&lt;/strong>:
基于椭圆曲线同源（Isogeny）图上的路径搜索问题。密钥尺寸非常小，曾被寄予厚望成为ECC的正统继任者，但最终候选者“SIKE”在2022年被利用经典数学（如Castryck-Decru攻击）在一台普通PC上仅耗时数小时就被完全破解，这场戏剧性的落幕象征着PQC设计的艰难与可怕。&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="4-格密码学的深渊lwe问题与module-lwe的数学基础">4. 格密码学的深渊：LWE问题与Module-LWE的数学基础
&lt;/h2>&lt;p>目前最被看好并成为标准化核心的正是&lt;strong>格密码学&lt;/strong>。其安全性的根基在于&lt;strong>LWE问题 (Learning with Errors: 带错学习问题)&lt;/strong>。2005年由Oded Regev提出，这一划时代的成就让他获得了哥德尔奖。不理解LWE问题，就无法谈论现代PQC。&lt;/p>
&lt;h3 id="41-什么是lwe问题-learning-with-errors">4.1. 什么是LWE问题 (Learning with Errors)
&lt;/h3>&lt;p>首先，我们来考虑一个简单的线性方程组。假设在某个模 $q$ （模 $q$）下，有一个已知的随机矩阵 $A$，一个未知的秘密向量 $\vec{s}$，并给出了它们的乘积 $\vec{b}$。&lt;/p>
$$ \vec{b} = A\vec{s} \pmod q $$
&lt;p>此时，从公开信息 $A$ 和 $\vec{b}$ 求解未知的 $\vec{s}$ 是非常简单的。利用经典算法“高斯消元法”，可以在多项式时间内轻松计算出 $\vec{s}$。&lt;/p>
&lt;p>但是，如果在等式中加入“微小的故意误差（噪声）”，问题的难度就会呈指数级飙升。这就是&lt;strong>LWE问题&lt;/strong>。&lt;/p>
&lt;p>准备一个未知的秘密向量 $\vec{s} \in \mathbb{Z}_q^n$ 和一个随机选择的矩阵 $A \in \mathbb{Z}_q^{m \times n}$。接着，准备一个按照正态分布或二项分布等选择的“元素值足够小”的误差向量 $\vec{e} \in \mathbb{Z}_q^m$，按如下方式计算 $\vec{b}$：&lt;/p>
$$ \vec{b} = A\vec{s} + \vec{e} \pmod q $$
&lt;p>&lt;strong>Search LWE问题&lt;/strong>就是“从公开信息 $(A, \vec{b})$ 中求出秘密信息 $\vec{s}$”的问题。由于存在这个误差 $\vec{e}$，如果尝试使用高斯消元法等代数解法，在方程的加减过程中，误差 $\vec{e}$ 会像滚雪球一样被放大，最终变得与随机值无法区分从而宣告失败。&lt;/p>
&lt;p>LWE问题的伟大之处在于，存在一个强大的理论证明（规约）：除非存在能够解决格上“最坏情况复杂度问题（Worst-case hardness）”——如GapSVP（判定最短向量问题）或SIVP（最短独立向量问题）——的量子算法，否则LWE问题在平均情况（Average-case）下也是无法求解的。也就是说，即使是随机生成的加密密钥，也能保证其具有由理论上限支撑的坚固安全性。&lt;/p>
&lt;h3 id="42-ring-lwe与module-lwe带来的效率飞跃">4.2. Ring-LWE与Module-LWE带来的效率飞跃
&lt;/h3>&lt;p>普通的LWE问题（Standard LWE）安全性依据非常明确，但矩阵 $A$ 的尺寸会变得非常大，导致密钥大小达到兆字节级别，并不实用。于是有人提出了利用多项式环（Polynomial Rings）赋予代数结构的方法。&lt;/p>
&lt;p>&lt;strong>Ring-LWE问题&lt;/strong>中，不使用简单的向量或矩阵，而是使用某个多项式环 $R_q$ 的元素（多项式）。NIST标准中通常使用的是如下的分圆多项式环：&lt;/p>
$$ R_q = \mathbb{Z}_q[X]/(X^n + 1) $$
&lt;p>这里，$n$ 是 2 的幂（例如：256），$q$ 是一个适当的素数。在这个环上，使用元素 $a, s, e \in R_q$ 计算 $b = a \cdot s + e \pmod q$。因为一个多项式 $a$ 拥有 $n$ 个系数，所以可以大幅压缩数据，并且通过使用一种称为&lt;strong>NTT (Number Theoretic Transform: 数论变换)&lt;/strong> 的快速傅里叶变换（FFT）的有限域版本，可以以 $O(n \log n)$ 的计算复杂度超高速地进行多项式乘法。&lt;/p>
&lt;p>但是，Ring-LWE 存在一种担忧：“起因于环的特殊代数结构，可能存在未知的漏洞”。此外，在更改安全级别（如相当于AES-128, 192, 256等）时，必须改变多项式的次数 $n$ 本身，伴随而来的是必须重写包括NTT算法在内的整个实现，这在工程上是个难题。&lt;/p>
&lt;p>因此，被标准化的算法Kyber和Dilithium采用了&lt;strong>Module-LWE (M-LWE) 问题&lt;/strong>。Module-LWE 是位于无结构的Standard LWE和结构性过强的Ring-LWE之间的折中方案，它使用以多项式环 $R_q$ 的元素为成分的 $k \times k$ 矩阵（模块）。&lt;/p>
$$ \vec{b} = A\vec{s} + \vec{e} \pmod{R_q} \quad (A \in R_q^{k \times k}, \vec{s}, \vec{e} \in R_q^k) $$
&lt;p>Module-LWE 的最大优势在于，保持多项式的次数 $n$（NIST标准中 $n=256$）固定不变，仅通过改变矩阵的维度 $k$，就可以轻松实现安全级别的扩展。
例如，Kyber按如下方式调整维度 $k$：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Kyber512 (Level 1)&lt;/strong>: $k = 2$ （相当于AES-128）&lt;/li>
&lt;li>&lt;strong>Kyber768 (Level 3)&lt;/strong>: $k = 3$ （相当于AES-192）&lt;/li>
&lt;li>&lt;strong>Kyber1024 (Level 5)&lt;/strong>: $k = 4$ （相当于AES-256）&lt;/li>
&lt;/ul>
&lt;p>这使得底层的NTT代码和多项式运算硬件电路能够在所有安全级别下实现100%的代码复用，极大地提高了实现的安全性与效率。&lt;/p>
&lt;hr>
&lt;h2 id="5-crystals-kyber-ml-kem下一代密钥封装机制">5. CRYSTALS-Kyber (ML-KEM)：下一代密钥封装机制
&lt;/h2>&lt;p>被正式标准化为 &lt;strong>FIPS 203 (ML-KEM)&lt;/strong> 的 CRYSTALS-Kyber，是基于前述Module-LWE问题的密钥封装机制（KEM）。未来，它将成为TLS 1.3、SSH等协议中安全共享会话密钥的事实上的全球标准。&lt;/p>
&lt;h3 id="51-kem-key-encapsulation-mechanism-的架构">5.1. KEM (Key Encapsulation Mechanism) 的架构
&lt;/h3>&lt;p>在PQC时代，不再像RSA那样采用“客户端生成对称密钥，用服务器公钥加密后发送”的直接方法，而是将KEM这种封装框架作为标准。&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant Client as "客户端 (Alice)"
participant Server as "服务器 (Bob)"
Note over Client: "ML-KEM KeyGen()"
Client->>Client: "生成私钥 (sk) 与公钥 (pk)"
Client->>Server: "发送公钥 (pk)"
Note over Server: "ML-KEM Encaps()"
Server->>Server: "生成随机对称密钥 (K)"
Server->>Server: "用pk封装K，创建密文 (c)"
Server->>Client: "发送密文 (c)"
Note over Client: "ML-KEM Decaps()"
Client->>Client: "使用私钥 (sk) 解密密文 (c)"
Client->>Client: "解开封装，取出对称密钥 (K)"
Note over Client, Server: "利用共享的对称密钥 (K)，开始基于AES等的加密通信"&lt;/div>
&lt;h3 id="52-kyber的内部算法机制与藤崎-冈本变换">5.2. Kyber的内部算法机制与藤崎-冈本变换
&lt;/h3>&lt;p>Kyber的设计非常优雅。首先，它构建了一个仅对CPA（选择明文攻击）安全的公钥加密方案（Kyber.CPAPKE），然后应用一种被称为&lt;strong>藤崎-冈本变换 (Fujisaki-Okamoto Transform)&lt;/strong> 的极强密码学方法，将其升级为对CCA（适应性选择密文攻击）也安全的完美KEM。&lt;/p>
&lt;p>CPAPKE核心的加密和解密机制如下：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>密钥生成 (Key Generation)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>从随机种子值在NTT域上生成矩阵 $A \in R_q^{k \times k}$。模数 $q$ 使用 $3329$。&lt;/li>
&lt;li>从中心二项分布（CBD）中采样具有小系数的秘密向量 $\vec{s}$ 和误差向量 $\vec{e}$。&lt;/li>
&lt;li>计算 $\vec{t} = A\vec{s} + \vec{e}$。公钥为 $(A, \vec{t})$，私钥为 $\vec{s}$。（实际上 $A$ 以种子值的形式公开，以节省带宽）。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>加密 (Encryption)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>将希望共享的32字节消息（对称密钥材料）$m$ 编码为多项式。&lt;/li>
&lt;li>生成新的随机向量 $\vec{r}$ 以及微小误差 $\vec{e_1}, e_2$。&lt;/li>
&lt;li>$\vec{u} = A^T\vec{r} + \vec{e_1}$&lt;/li>
&lt;li>$v = \vec{t}^T\vec{r} + e_2 + \lfloor q/2 \rceil \cdot m$&lt;/li>
&lt;li>密文即为 $(\vec{u}, v)$。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>解密 (Decryption)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>接收方计算 $v - \vec{s}^T\vec{u}$。&lt;/li>
&lt;li>将该式展开如下：
$v - \vec{s}^T\vec{u} = (\vec{t}^T\vec{r} + e_2 + \lfloor q/2 \rceil \cdot m) - \vec{s}^T(A^T\vec{r} + \vec{e_1})$&lt;/li>
&lt;li>代入 $\vec{t} = A\vec{s} + \vec{e}$ 后，主项 $\vec{s}^TA^T\vec{r}$ 相互抵消。&lt;/li>
&lt;li>剩下的部分为 $\lfloor q/2 \rceil \cdot m + (\vec{e}^T\vec{r} + e_2 - \vec{s}^T\vec{e_1})$。&lt;/li>
&lt;li>括号内的项是“微小误差的乘积和求和”，因此整体依然是一个足够小的值（噪声）。于是，通过阈值判定每个系数是接近 $0$ 还是接近 $q/2$，即可完全无误差地还原原消息 $m$ 的每一位（0 或 1）。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>Kyber最大的优势在于其压倒性的&lt;strong>处理速度&lt;/strong>和&lt;strong>适中的密钥大小&lt;/strong>。在Kyber768的情况下，公钥尺寸为1,184字节，密文尺寸为1,088字节，虽然相比于RSA-3072（密钥约384字节）要大，但可以无需进行数据包分割地容纳在现代互联网通信的MTU（最大传输单元）内，对网络延迟几乎没有负面影响。&lt;/p>
&lt;hr>
&lt;h2 id="6-crystals-dilithium-ml-dsa基于格的通用数字签名">6. CRYSTALS-Dilithium (ML-DSA)：基于格的通用数字签名
&lt;/h2>&lt;p>在数字签名的标准化过程中，同样是基于格密码学方法，拥有不同设计理念的算法相互竞争。其中，作为通用数字签名被选定为 &lt;strong>FIPS 204 (ML-DSA)&lt;/strong> 的是 &lt;strong>CRYSTALS-Dilithium&lt;/strong>。&lt;/p>
&lt;h3 id="61-带有中止的fiat-shamir范式-fiat-shamir-with-aborts">6.1. 带有中止的Fiat-Shamir范式 (Fiat-Shamir with Aborts)
&lt;/h3>&lt;p>与Kyber一样，Dilithium也是一种基于Module-LWE（以及Module-SIS问题）的数字签名方案。其设计基础采用了一个极其重要的范式——“&lt;strong>带有中止的Fiat-Shamir变换 (Fiat-Shamir with Aborts)&lt;/strong>”。&lt;/p>
&lt;p>Fiat-Shamir变换本身是将交互式零知识证明协议转换为非交互式数字签名的一种标准方法。证明方（签名者）生成承诺 $y$，计算 $w = Ay$ 并通过哈希函数处理，获得随机挑战 $c$，随后计算响应 $z = y + cs$。&lt;/p>
&lt;p>然而，在格密码学中如果简单应用这一方法，响应 $z$ 的分布会依赖于私钥 $s$ 的值而发生扭曲，导致观察到大量签名的攻击者可以一点点地泄露私钥 $s$ 的信息，这是一个致命的问题（侧信道数学泄露）。&lt;/p>
&lt;p>Dilithium的设计团队（Lyubashevsky等人）引入了“&lt;strong>拒绝采样 (Rejection Sampling)&lt;/strong>”方法。即如果签名计算结果 $z$ 的系数未能落入预设的安全阈值范围内，就废弃（Abort）整个签名过程，利用新的随机数 $y$ 从头开始计算。&lt;/p>
&lt;p>通过这种方法，最终输出的签名 $z$ 成为完全均匀的分布，不再依赖于任何私钥信息，在数学上完美地防范了信息泄露。&lt;/p>
&lt;h3 id="62-dilithium的优势与易实现性">6.2. Dilithium的优势与易实现性
&lt;/h3>&lt;p>Dilithium设计上的巨大优势在于，在签名生成过程中&lt;strong>完全不使用&lt;/strong>复杂的“高斯分布采样”和“浮点运算”。仅需使用均匀分布采样、简单的整数模运算、NTT以及哈希函数（SHAKE）即可实现，因此无论是在嵌入式微控制器还是在云端服务器上，都能轻易地实现安全且恒定时间（Constant-time）的代码。这使得它对针对物理侧信道的定时攻击等具有极强的抵抗力。&lt;/p>
&lt;hr>
&lt;h2 id="7-falcon-fn-dsa极致紧凑的格签名">7. FALCON (FN-DSA)：极致紧凑的格签名
&lt;/h2>&lt;p>NIST选择了**FALCON (Fast-Fourier Lattice-based Compact Signatures over NTRU)**作为具备与Dilithium不同特性的另一款基于格的签名标准化候选方案（目前正作为FN-DSA起草草案）。&lt;/p>
&lt;h3 id="71-ntru格与高斯采样">7.1. NTRU格与高斯采样
&lt;/h3>&lt;p>FALCON最大的特点在于它不使用LWE问题，而是使用自1996年起就存在的历史悠久的&lt;strong>NTRU (N-th degree Truncated polynomial Ring Units) 格&lt;/strong>。此外，它还采用了基于GPV (Gentry-Peikert-Vaikuntanathan) 框架的“&lt;strong>哈希与签名 (Hash-and-Sign)&lt;/strong>”范式。&lt;/p>
&lt;p>在Hash-and-Sign中，将消息的哈希值作为空间内的一个目标点，找到距离该目标点最近的格上的点（最近向量问题的近似解）作为签名。这要求使用作为私钥的“优质的短基”，按照离散高斯分布对点进行采样。&lt;/p>
&lt;p>FALCON利用被称为“&lt;strong>快速傅里叶正交化 (Fast Fourier Orthogonalization: FFO)&lt;/strong>”的技术，使得这种繁重的计算实现了极其显著的加速。&lt;/p>
&lt;h3 id="72-falcon的优缺点">7.2. FALCON的优缺点
&lt;/h3>&lt;p>FALCON压倒性的优势在于其&lt;strong>签名尺寸和公钥尺寸极小（非常紧凑）&lt;/strong>。相较于Dilithium3的签名尺寸约为3,309字节，FALCON-512的签名尺寸仅约666字节。公钥尺寸也非常小，为897字节，在通信带宽受限严重的环境、物联网（IoT）设备或特定网络协议中，它是无可替代的救星。&lt;/p>
&lt;p>然而，它也存在一个重大缺陷。签名生成时必须进行涉及复杂**浮点运算（64位IEEE 754）**的离散高斯采样，因此要实现防止时间泄露的恒定时间实现（Constant-time implementation）极其困难，代码也会变得十分庞大。因此，相对于通用用途（Dilithium），FALCON被定位为面向特定用途的强大特化型算法。&lt;/p>
&lt;div class="mermaid">graph LR
A["数字签名的要求"] --> B{"最优先的约束是什么？"}
B -->|"实现简单、通用性、易于恒定时间实现"| C["Dilithium (ML-DSA)"]
B -->|"通信带宽最小化、数据尺寸的紧凑性"| D["FALCON (FN-DSA)"]
C --> E["通用TLS证书、软件数字签名"]
D --> F["限制封包大小的协议、特殊环境"]&lt;/div>
&lt;hr>
&lt;h2 id="8-sphincs-slh-dsa拥有最强安全性的哈希签名">8. SPHINCS+ (SLH-DSA)：拥有最强安全性的哈希签名
&lt;/h2>&lt;p>为了防范“未来某位天才数学家取得突破从而破解格密码学安全性”这一最坏情况（万一之事），NIST制定了与格密码学截然不同路径的标准——&lt;strong>FIPS 205 (SLH-DSA)&lt;/strong>，即&lt;strong>SPHINCS+&lt;/strong>。&lt;/p>
&lt;p>SPHINCS+ 属于&lt;strong>基于哈希的签名&lt;/strong>。其安全性的依据仅依赖于唯一一点：“所使用的密码学哈希函数（如SHA-2或SHAKE256等）具有抗碰撞性和单向性”。由于它不依赖于LWE或素数分解等具有特定代数结构的数学问题，因此未来无论出现多么强大的量子算法，只需单纯延长哈希函数的输出长度即可应对，夸耀着其极其坚固的安全性（最保守的安全级别）。&lt;/p>
&lt;h3 id="81-利用wots与fors实现的无状态架构">8.1. 利用WOTS+与FORS实现的无状态架构
&lt;/h3>&lt;p>基于哈希的签名历史悠久，可以追溯到20世纪70年代的Lamport签名和Winternitz一次性签名（WOTS）。这些是“只能安全签名一次”的用后即弃密钥。为了能多次使用，开发出了结合默克尔树（Merkle Tree）将无数次一次性密钥统一由一个根哈希来管理的XMSS（eXtended Merkle Signature Scheme）和LMS等算法。&lt;/p>
&lt;p>但是，XMSS和LMS存在一个叫做“&lt;strong>有状态（Stateful）&lt;/strong>”的严重缺陷。每次签名都必须在非易失性内存中严格记录“使用了第几个一次性密钥”的索引状态，如果因为虚拟机快照恢复等原因导致状态回溯，同一个一次性密钥被使用两次，私钥就会立刻泄露导致系统崩溃。&lt;/p>
&lt;p>SPHINCS+则解决了这种状态管理的繁琐，是“&lt;strong>无状态（Stateless）&lt;/strong>”的基于哈希的签名。
其核心技术由以下部分组合而成：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>WOTS+ (Winternitz One-Time Signature Plus)&lt;/strong>: 基本的一次性签名。&lt;/li>
&lt;li>&lt;strong>FORS (Forest of Random Subsets)&lt;/strong>: 少次签名（Few-Time Signature）技术。即使重复使用该密钥数次也能保持安全。&lt;/li>
&lt;li>&lt;strong>Hyper-Tree (巨大树结构)&lt;/strong>: 将默克尔树多层叠加而成的庞大结构。&lt;/li>
&lt;/ol>
&lt;p>SPHINCS+在进行签名时，不再管理状态，而是利用伪随机数从Hyper-Tree底部的海量FORS密钥中随机挑选一个进行签名。由于树叶的数量属于天文数字量级，偶然两次选中同一个密钥的概率（碰撞）小到可以忽略不计，从而实现了无状态化。&lt;/p>
&lt;p>SPHINCS+唯一也是最大的弱点在于，&lt;strong>签名尺寸非常庞大&lt;/strong>。根据参数不同，签名尺寸可达17千字节至49千字节，签名生成速度也远慢于格密码学。因此，相比于日常网络浏览，它更适合被用于软件更新签名或根证书颁发机构（CA）证书等不需频繁签名，且强烈要求长期绝对安全的场景。&lt;/p>
&lt;hr>
&lt;h2 id="9-基于编码的密码学classic-mceliece这个古老而优秀的巨人">9. 基于编码的密码学：Classic McEliece这个古老而优秀的巨人
&lt;/h2>&lt;p>在NIST标准化进程中，作为Round 4的最终候选仍在继续评估的一个重要方案是，&lt;strong>基于编码的密码学&lt;/strong>中的&lt;strong>Classic McEliece&lt;/strong>。&lt;/p>
&lt;p>1978年由Robert McEliece提出的这一算法，是公钥密码学历史中与RSA并肩最古老的算法之一。它利用了被称为“Goppa码（哥帕码）”的代数几何码，在消息中故意加入错误（噪声向量）进行加密，只有拥有作为私钥的Goppa码奇偶校验矩阵的人，才能利用其强大的纠错能力消除错误，从而解密出原始消息。这基于“&lt;strong>伴随式解码问题 (Syndrome Decoding Problem)&lt;/strong>”。&lt;/p>
$$ \vec{c} = \vec{m} G + \vec{e} $$
&lt;p>
（$G$ 是公开的被置换过的生成矩阵，$\vec{e}$ 是汉明重量为 $t$ 的错误向量）&lt;/p>
&lt;p>Classic McEliece令人惊叹之处在于，&lt;strong>它提出已逾40年，经历了全世界密码学界猛烈的破解研究，却从未被发现存在根本性的漏洞&lt;/strong>，展示了压倒性的实绩。在PQC中，它是最具“时间证明之坚固安全性”的算法。&lt;/p>
&lt;p>此外，它的密文尺寸非常小（仅有约100至200字节）。然而，它存在一个致命的缺点：&lt;strong>公钥的尺寸达到了兆字节（MB）级别&lt;/strong>。即便是最低的安全级别（相当于AES-128），公钥也有约250KB，高安全级别下更是超过1MB。&lt;/p>
&lt;p>正因如此，它完全无法适用于诸如TLS握手等每次通信都需要在网络上传输公钥的场景。不过，在预共享VPN密钥交换、将公钥硬编码至固件、或者是卫星通信等可以提前将公钥部署到系统中的特殊用例中，因其强大的安全性，它仍作为一个极具希望的选项被持续探讨。&lt;/p>
&lt;hr>
&lt;h2 id="10-各pqc算法的性能比较与权衡">10. 各PQC算法的性能比较与权衡
&lt;/h2>&lt;p>对于前面解说的各主要算法，在一般安全级别（相当于NIST Level 2〜3、AES-128〜192）下的性能特征，总结于下表。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">算法 (标准名)&lt;/th>
&lt;th style="text-align:left">类别&lt;/th>
&lt;th style="text-align:left">数学基础&lt;/th>
&lt;th style="text-align:left">公钥尺寸&lt;/th>
&lt;th style="text-align:left">私钥尺寸&lt;/th>
&lt;th style="text-align:left">密文/签名尺寸&lt;/th>
&lt;th style="text-align:left">处理速度倾向&lt;/th>
&lt;th style="text-align:left">主要特征与用途&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Kyber768&lt;/strong>&lt;br>(ML-KEM)&lt;/td>
&lt;td style="text-align:left">KEM&lt;/td>
&lt;td style="text-align:left">Module-LWE&lt;/td>
&lt;td style="text-align:left">1,184 Bytes&lt;/td>
&lt;td style="text-align:left">2,400 Bytes&lt;/td>
&lt;td style="text-align:left">1,088 Bytes&lt;/td>
&lt;td style="text-align:left">非常快&lt;/td>
&lt;td style="text-align:left">密钥尺寸与速度平衡最佳。TLS 1.3等通用KEM标准。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Dilithium3&lt;/strong>&lt;br>(ML-DSA)&lt;/td>
&lt;td style="text-align:left">签名&lt;/td>
&lt;td style="text-align:left">Module-LWE&lt;/td>
&lt;td style="text-align:left">1,952 Bytes&lt;/td>
&lt;td style="text-align:left">4,032 Bytes&lt;/td>
&lt;td style="text-align:left">3,309 Bytes&lt;/td>
&lt;td style="text-align:left">生成与验证均快&lt;/td>
&lt;td style="text-align:left">实现简单。通用数字签名标准。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>FALCON-512&lt;/strong>&lt;br>(FN-DSA)&lt;/td>
&lt;td style="text-align:left">签名&lt;/td>
&lt;td style="text-align:left">NTRU格&lt;/td>
&lt;td style="text-align:left">897 Bytes&lt;/td>
&lt;td style="text-align:left">1,281 Bytes&lt;/td>
&lt;td style="text-align:left">666 Bytes&lt;/td>
&lt;td style="text-align:left">签名生成偏慢，验证超快&lt;/td>
&lt;td style="text-align:left">签名尺寸极小。但需要浮点运算。适合嵌入式与IoT。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>SPHINCS+&lt;/strong>&lt;br>(SLH-DSA)&lt;/td>
&lt;td style="text-align:left">签名&lt;/td>
&lt;td style="text-align:left">哈希函数&lt;/td>
&lt;td style="text-align:left">32 Bytes&lt;/td>
&lt;td style="text-align:left">64 Bytes&lt;/td>
&lt;td style="text-align:left">约 17,000 Bytes&lt;/td>
&lt;td style="text-align:left">生成非常慢&lt;/td>
&lt;td style="text-align:left">几乎没有数学崩溃的风险。用于根证书等高安全用途。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Classic McEliece&lt;/strong>&lt;/td>
&lt;td style="text-align:left">KEM&lt;/td>
&lt;td style="text-align:left">Goppa码&lt;/td>
&lt;td style="text-align:left">&lt;strong>约 1.04 MB&lt;/strong>&lt;/td>
&lt;td style="text-align:left">13,568 Bytes&lt;/td>
&lt;td style="text-align:left">&lt;strong>188 Bytes&lt;/strong>&lt;/td>
&lt;td style="text-align:left">封装很快&lt;/td>
&lt;td style="text-align:left">40年安全性证明。公钥巨大。适合可硬编码环境。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="权衡的理解">权衡的理解
&lt;/h3>&lt;p>在PQC的世界里，不存在“尺寸小、速度快、数学保证完美”的魔法般的单一算法。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>互联网标准 (Kyber / Dilithium)&lt;/strong>: 性能平衡最佳，最适合作为当前RSA/ECC的直接替换（Drop-in replacement）。&lt;/li>
&lt;li>&lt;strong>极致的保守性 (SPHINCS+)&lt;/strong> : 即使牺牲数据大小和处理速度，也希望对未来的数学突破有一份绝对保险时的选择。&lt;/li>
&lt;li>&lt;strong>面向特殊环境 (FALCON / Classic McEliece)&lt;/strong>: 通信带宽极其狭窄，或是可以提前分发公钥等，根据环境限制而选择的特化型武器。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="11-面向实际应用的挑战与混合加密这一现实解">11. 面向实际应用的挑战与“混合加密”这一现实解
&lt;/h2>&lt;p>随着NIST标准化的完成和FIPS规范的正式发布，全世界IT基础设施向PQC的迁移（&lt;strong>PQC Migration&lt;/strong>）已经正式拉开帷幕。谷歌的Chrome浏览器、苹果的iMessage（PQ3协议）、Cloudflare等网络提供商，已经开始在协议中实现对PQC的支持，并投入实际运营。&lt;/p>
&lt;p>但是，突然完全切换到新密码算法伴随着非常高的风险。假设几年后有一位天才数学家发现了针对Kyber等格密码学的致命攻击手法（甚至连经典计算机也能利用的数学缺陷），那么依赖该算法的所有系统将会瞬间裸奔。&lt;/p>
&lt;p>为了减轻这种不确定性风险，一个务实且被推荐的策略是“&lt;strong>混合加密 (Hybrid Cryptography)&lt;/strong>”。&lt;/p>
&lt;p>混合加密中，同时使用拥有多年实际验证的现行经典加密（如X25519等椭圆曲线加密）与新的PQC（如Kyber768）来进行密钥交换。各自的算法分别生成对称密钥的成分，最后使用安全的密钥派生函数（KDF）将两个成分混合，生成最终的主密钥。&lt;/p>
&lt;div class="mermaid">graph TD
A["客户端"] -->|① 发送 X25519公钥 + Kyber公钥| B["服务器"]
B -->|② 返回 X25519共享密钥 + Kyber封装密文| A
A --> C{"主密钥的派生 (KDF)"}
B --> C
C -->|输入: (X25519对称密钥) || (Kyber对称密钥)| D["安全的通信密钥 (AES-256 / ChaCha20)"]
D -->|"同时抵抗 量子威胁 ＆ 传统经典漏洞"| E["安全的混合加密通信 (TLS 1.3)"]&lt;/div>
&lt;p>如此一来，就实现了坚固的双重安全保障：“万一量子计算机实现并破解了ECC，Kyber能保护通信”；反之，“万一Kyber被发现了未知的数学缺陷，ECC依然能保护通信”。作为典型代表，IETF正在推进标准化的 &lt;strong>X25519MLKEM768 (原 X25519Kyber768)&lt;/strong> 草案，正是目前Web浏览器与最先进的服务器间通信所采用的混合方式。&lt;/p>
&lt;p>此外，在系统设计中，构建一种“不过度依赖特定密码算法，当算法崩溃时能迅速切换到另一算法（如从Kyber切换至McEliece，从Dilithium切换至SPHINCS+）的架构”的理念，即 &lt;strong>Crypto Agility（密码敏捷性）&lt;/strong>，将成为未来系统开发中的必备要求。&lt;/p>
&lt;hr>
&lt;h2 id="12-结语密码技术的新地平线">12. 结语：密码技术的新地平线
&lt;/h2>&lt;p>量子计算机这项人类梦寐以求的科技，讽刺地成为了击破我们长年信赖的“素数分解”和“离散对数问题”等数学防线的最大威胁。然而，全世界的密码学家们并未屈服，他们开拓了诸如格理论、哈希函数树、纠错码等更为复杂且深邃的多维数学领域，筑起了抗量子密码学（PQC）这座新的防御堡垒。&lt;/p>
&lt;p>NIST完成了 FIPS 203 (ML-KEM)、FIPS 204 (ML-DSA)、FIPS 205 (SLH-DSA) 的标准化并不是终点。这仅仅是未来将持续数十年的PQC迁移这场宏大旅程的第一步。对于软件工程师和系统架构师来说，如何将这些新算法带来的“密钥尺寸增大”和“计算成本变化”最优地融入并适应到网络协议和系统中，将是未来重大的技术挑战。&lt;/p>
&lt;p>量子计算机与密码学的较量，是人类数学探索与技术进化交锋最激烈的激动人心的领域。希望通过本文，您能对PQC背后的优美数学理论，以及塑造网络安全未来的各算法令人惊叹的机制，有更深刻的理解。&lt;/p>
&lt;hr>
&lt;p>&lt;em>References:&lt;/em>&lt;/p>
&lt;ul>
&lt;li>&lt;em>NIST Post-Quantum Cryptography Standardization Program&lt;/em>&lt;/li>
&lt;li>&lt;em>FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard&lt;/em>&lt;/li>
&lt;li>&lt;em>FIPS 204: Module-Lattice-Based Digital Signature Standard&lt;/em>&lt;/li>
&lt;li>&lt;em>FIPS 205: Stateless Hash-Based Digital Signature Standard&lt;/em>&lt;/li>
&lt;/ul></description></item><item><title>量子计算机实用的日子：2026年的现状</title><link>http://kenji.blog/zh-cn/p/quantum-computing-2026-current-status/</link><pubDate>Fri, 11 Sep 2026 06:00:00 +0900</pubDate><guid>http://kenji.blog/zh-cn/p/quantum-computing-2026-current-status/</guid><description>&lt;img src="http://kenji.blog/p/quantum-computing-2026-current-status/img/eyecatch.jpg" alt="Featured image of post 量子计算机实用的日子：2026年的现状" />&lt;h2 id="1-引言2026年量子计算机发展到了什么程度">1. 引言：2026年，量子计算机发展到了什么程度
&lt;/h2>&lt;p>截至2026年，量子计算已经完成了从昔日“理论上的梦想”到“工程上的现实”的决定性转变。随着几年前还是主流的**NISQ（Noisy Intermediate-Scale Quantum，含噪声中等规模量子）**设备的局限性变得明显，世界各地的研究机构和科技巨头纷纷转向实现“容错量子计算（FTQC: Fault-Tolerant Quantum Computing）”。&lt;/p>
&lt;p>本文将结合2026年的最新突破，深入探讨量子计算机的现状。特别是，将详细讲解量子纠错（表面码）、物理量子比特与逻辑量子比特的区别、拓扑量子计算的进展，以及超导和离子阱方式的最前沿。&lt;/p>
&lt;hr>
&lt;h2 id="2-量子态基础与保真度fidelity">2. 量子态基础与保真度（Fidelity）
&lt;/h2>&lt;p>量子计算机的基本单位是量子比特（Qubit），与经典比特（0或1）不同，它可以处于0和1的叠加态（Superposition）。单个量子比特的状态可以表示为希尔伯特空间上的向量，如下所示：&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>这里，$\alpha$ 和 $\beta$ 是复数概率幅，并满足以下归一化条件：&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>在衡量量子计算性能时，一个极其重要的指标是&lt;strong>保真度（Fidelity）&lt;/strong>。理想量子态 $|\psi\rangle$ 与因噪声退化而变成混合态的实际密度矩阵 $\rho$ 之间的保真度 $F$ 定义如下：&lt;/p>
$$
F(\rho, |\psi\rangle) = \langle \psi | \rho | \psi \rangle
$$
&lt;p>到2026年，双量子比特门（例如：CNOT门和CZ门）的保真度在超导方式下已经能够稳定突破**99.99%**的壁垒（即所谓的“4个9”）。这一数值大幅超过了表面码纠错的阈值（约99%），是迈向实用化的最大突破之一。&lt;/p>
&lt;hr>
&lt;h2 id="3-nisq时代的局限与向ftqc的范式转变">3. NISQ时代的局限与向FTQC的范式转变
&lt;/h2>&lt;p>2010年代后半期到2020年代前半期是NISQ（Noisy Intermediate-Scale Quantum）时代，即拥有几十到几百个量子比特且不具备纠错能力的设备。然而，NISQ存在明显的局限性。&lt;/p>
&lt;p>随着电路深度（Depth）的增加，错误会呈指数级积累，导致无法获得有意义的计算结果。电路深度 $D$ 下的整体成功概率 $P_{success}$ 随单门保真度 $f$ 和门数量 $N$ 衰减如下：&lt;/p>
$$
P_{success} \approx f^N
$$
&lt;p>如果 $f = 0.99$ 并应用1000个门，那么 $0.99^{1000} \approx 4.3 \times 10^{-5}$，结果将几乎完全被随机噪声淹没。因此，在2026年，相较于直接扩展NISQ算法（如VQE或QAOA等），资源更多地集中在生成**逻辑量子比特（Logical Qubit）**上。&lt;/p>
&lt;hr>
&lt;h2 id="4-量子纠错与逻辑量子比特表面码的最前沿">4. 量子纠错与逻辑量子比特：表面码的最前沿
&lt;/h2>&lt;p>量子纠错（QEC: Quantum Error Correction）是一种通过编码多个“物理量子比特”来创建一个“逻辑量子比特”，从而检测并纠正错误的技术。目前最被看好的是&lt;strong>表面码（Surface Code）&lt;/strong>。&lt;/p>
&lt;h3 id="41-表面码surface-code的结构">4.1 表面码（Surface Code）的结构
&lt;/h3>&lt;p>在表面码中，量子比特被排列成二维网格状。数据量子比特（保存实际信息）和测量量子比特（用于综合征测量）像棋盘格一样交错排列。&lt;/p>
&lt;div class="mermaid">graph TD
A["数据量子比特 (D1)"] --- B["测量量子比特 (M1)"]
B --- C["数据量子比特 (D2)"]
C --- D["测量量子比特 (M2)"]
D --- E["数据量子比特 (D3)"]
B --- F["数据量子比特 (D4)"]
D --- G["数据量子比特 (D5)"]
style A fill:#e1f5fe,stroke:#039be5
style C fill:#e1f5fe,stroke:#039be5
style E fill:#e1f5fe,stroke:#039be5
style F fill:#e1f5fe,stroke:#039be5
style G fill:#e1f5fe,stroke:#039be5
style B fill:#fff3e0,stroke:#fb8c00
style D fill:#fff3e0,stroke:#fb8c00&lt;/div>
&lt;p>使用稳定子算符 $S_x$ 和 $S_z$ 不断监控比特翻转（X错误）和相位翻转（Z错误）。&lt;/p>
$$
S_x = \prod_{i \in \text{star}} X_i, \quad S_z = \prod_{j \in \text{plaquette}} Z_j
$$
&lt;p>2026年的重大进展是完全突破了“盈亏平衡点（Break-even point）”。也就是说，通过纠错消除的噪声大于执行纠错所需的额外电路引起的噪声，逻辑量子比特的寿命开始比物理量子比特的寿命高出好几个数量级。&lt;/p>
&lt;h3 id="42-量子纠错循环">4.2 量子纠错循环
&lt;/h3>&lt;p>纠错作为一个持续的反馈回路运行。&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant D as "数据量子比特"
participant M as "辅助/测量量子比特"
participant C as "经典控制器"
loop "综合征提取周期 (约 1 微秒)"
D->>M: "纠缠 (CNOT/CZ)"
M->>C: "测量状态 (综合征)"
C->>C: "解码综合征 (例如最小权重完美匹配)"
C-->>D: "应用泡利纠正 (如果需要)"
end&lt;/div>
&lt;p>目前，利用FPGA或专用ASIC在纳秒级别执行这种经典解码处理（综合征分析）的技术已经成熟，实时纠错已进入实用阶段。&lt;/p>
&lt;hr>
&lt;h2 id="5-硬件架构的演进2026年版">5. 硬件架构的演进（2026年版）
&lt;/h2>&lt;p>2026年的量子硬件主要在“超导方式”、“离子阱方式”和“拓扑方式”这三个方向上演进。&lt;/p>
&lt;h3 id="51-超导量子比特的集成化">5.1 超导量子比特的集成化
&lt;/h3>&lt;p>超导方式是IBM和Google主导的领域，主要使用基于约瑟夫森结的Transmon量子比特。到2026年，实现了在单芯片上集成数千到一万个物理量子比特的超大型芯片。&lt;/p>
&lt;p>值得一提的是**模块间量子通信（Quantum Interconnects）**的确立。利用微波光子实现芯片间的量子隐形传态已达到商业应用水平，从而能够避开单一稀释制冷机尺寸的限制。&lt;/p>
&lt;h3 id="52-离子阱的二维扩展与光互连">5.2 离子阱的二维扩展与光互连
&lt;/h3>&lt;p>在离子阱方式（由Quantinuum和IonQ等主导）中，使用悬浮在真空中的离子的内部能态作为量子比特。与超导方式相比，其优势在于T1/T2相干时间极长，并且支持全连接（All-to-All Connectivity）。&lt;/p>
&lt;p>2026年的突破在于QCCD（Quantum Charge Coupled Device）架构的二维化，以及使用光子互连在多阱之间生成高速纠缠。这使得离子阱曾存在的“门操作速度慢”和“可扩展性”等弱点得到了极大的改善。&lt;/p>
&lt;h3 id="53-拓扑量子计算任意子的控制">5.3 拓扑量子计算：任意子的控制
&lt;/h3>&lt;p>长期以来被认为是理论存在的&lt;strong>拓扑量子计算&lt;/strong>在2026年终于进入了实验验证阶段。由Microsoft等公司推动的这种方式，使用被称为“马约拉纳零模（Majorana Zero Modes）”的非阿贝尔任意子（Non-Abelian Anyons）。&lt;/p>
&lt;p>通过交换任意子粒子位置的“编织（Braiding）”操作来执行量子门。&lt;/p>
$$
|\psi_{final}\rangle = B_{ij} |\psi_{initial}\rangle
$$
&lt;p>这里 $B_{ij}$ 是编织算符。拓扑方式的信息存储不依赖于粒子的局域状态，而是依赖于整体“结”的拓扑结构，因此它本质上对环境噪声具有免疫力（硬件级别的容错能力）。2026年世界上首次确认了高保真度拓扑逻辑量子比特的生成，作为通向FTQC的强大捷径而备受瞩目。&lt;/p>
&lt;hr>
&lt;h2 id="6-面向实用化的路线图与展望">6. 面向实用化的路线图与展望
&lt;/h2>&lt;p>要让量子计算机在“化学计算”、“材料科学”、“金融建模”等领域真正发挥出压倒经典计算机（超级计算机）的&lt;strong>量子霸权（Quantum Advantage，也称量子优势）&lt;/strong>，需要数千个逻辑量子比特。&lt;/p>
&lt;div class="mermaid">gantt
title "量子计算路线图 (2026年修订版)"
dateFormat YYYY
axisFormat %Y
section "NISQ 时代"
"含噪声量子比特 (&lt;1000)" :done, 2018, 2024
section "早期 FTQC"
"盈亏平衡点演示" :done, 2024, 2026
"数百个逻辑量子比特" :active, 2026, 2028
section "全面 FTQC"
"1000+ 逻辑量子比特 (商业应用)" : 2028, 2030
"通用容错量子计算机" : 2030, 2035&lt;/div>
&lt;h3 id="61-当前面临的挑战与未来">6.1 当前面临的挑战与未来
&lt;/h3>&lt;p>截至2026年，最大的挑战在于维持极低温的巨大低温恒温器（稀释制冷机）的冷却能力，以及连接室温控制设备与极低温量子芯片的布线（I/O瓶颈）。针对这一点，能够在极低温环境下运行的CMOS（Cryo-CMOS）控制芯片的开发正在全速推进。&lt;/p>
&lt;h3 id="结论">结论
&lt;/h3>&lt;p>2026年将在量子计算机的历史上被记载为“逻辑量子比特扩展元年”。通过纠错算法的验证、硬件的模块化以及拓扑方法的快速进展，“实用化的日子”已不再是遥远的未来，而是可以预见为未来几年内的具体里程碑。对于量子算法开发者和企业而言，现在正是开始全面投资于量子原生问题解决方案的绝佳时机。&lt;/p>
&lt;hr>
&lt;p>&lt;em>本文基于截至2026年最新的量子计算研究论文及行业动态撰写。&lt;/em>&lt;/p></description></item></channel></rss>