你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

量子错误更正简介

本文介绍量子误差更正、量子误差类型以及一些常见的量子误差更正代码的基础知识。 它还提供了如何使用三量子位代码更正错误的示例。

什么是量子误差更正?

量子误差更正(QEC)是一种技术,允许我们保护量子信息免受错误的影响。 在量子计算机中,错误更正尤其重要,因为高效的量子算法利用对干扰敏感的大规模量子计算机。

量子误差更正背后的基本原则是,用于对给定信息量进行编码的位数增加。 此冗余允许代码检测和更正错误。

量子计算机的错误率通常高于经典计算机的错误率,因为与生成和操作系统相关的挑战。 量子门中的干扰、解码和不完美可能会导致量子计算中的错误。 当前量子计算机在 1% 到 0.1% 的范围内具有错误率。 换句话说,这意味着平均每 100 到 1000 个量子门运算中的一个会导致错误。

量子错误的类型

量子误差有两种基本类型:位翻转和相位翻转。

当量子比特从 $\ket{0}$ 某个量子比特更改为 $\ket{1}$ 或反之亦然时,会发生位翻转错误。 位翻转错误也称为 $\sigma_x 错误,因为它们映射量子比特状态 $\sigma_x=\ket{$\ket{0}{1}$ 和 $\sigma_x。\ket{{1}=\ket{0}$ 此错误类似于经典位翻转错误。

当量子比特更改其阶段时发生阶段翻转错误。 它们也称为 $\sigma_z 错误,因为它们映射量子比特状态 $\sigma_z\ket{\ket{0}$={0}$ 和 $\sigma_z{1}\ket{= -。\ket{1}$ 这种类型的错误没有经典模拟。

在量子计算中,量子错误可以表现为位翻转、相位翻转或两者的组合。

量子错误更正的工作原理是什么?

量子误差更正代码的工作原理是将量子信息编码为一组较大的量子比特,称为 物理量子比特。 物理量子比特的联合状态表示 逻辑量子比特

由于量子门中的解码和不完美,物理量子比特会受到错误的影响。 此代码旨在通过测量代码中的一些量子比特来检测和更正错误。

例如,假设你想要发送单量子比特消息 $\ket{0}$。 可以使用三个物理量子比特对消息进行编码,发送$\ket{000}$消息称为代码字。 此错误更正代码是 重复代码,因为消息重复了三次。

现在,假设在传输过程中发生一个位翻转错误,以便接收者接收的是状态 $\ket{010}$。 在此方案中,收件人可能能够推断预期的邮件。$\ket{000}$ 但是,如果邮件受到两个位翻转错误的影响,收件人可能会推断出不正确的邮件。 最后,如果翻转了所有三位,以便原始邮件 $\ket{000}$ 成为 $\ket{111}$,则收件人无法知道发生错误。

QEC 代码的代码距离是将一个代码字更改为另一个代码字的最小错误数,即无法检测到的错误数。 代码距离 $d$ 可以定义为

$$d = 2t + 1$$

其中 $t$ 是代码可以更正的错误数。 例如,三位代码可以检测并更正一个位翻转错误,因此 $t = 1$,因此代码距离为 $d = 3$。

请注意,重复代码(如此示例中使用的三位代码)只能更正位翻转错误,而不能更正阶段翻转错误。 若要更正这两种类型的错误,需要更复杂的量子误差更正代码。

QEC 代码的类型

有许多不同类型的 QEC 代码,每个代码都有自己的属性和优势。 一些常见的 QEC 代码包括:

  • 重复代码: 最简单的量子误差更正代码,其中,单个量子比特通过多次重复编码为多个量子比特。 重复代码可以更正位翻转错误,但不能更正阶段翻转错误。

  • Shor 代码: 由 Peter Shor 开发的第一个量子误差更正代码。 它将一个逻辑量子比特编码为九个物理量子比特。 Shor 代码可以更正一位翻转错误或一个阶段翻转错误,但它不能同时更正这两种类型的错误。

  • Steane 代码: 这是一个七量子位代码,可以更正位翻转和相位翻转错误。 它具有容错能力的优势,这意味着错误更正过程本身不会引入额外的错误。

  • 图面代码: 这是一个拓扑错误更正代码,它使用量子比特的二维格来编码逻辑量子比特。 它具有较高的误差更正阈值,被认为是大规模容错量子计算最有前途的技术之一。 Surface Code 由 Azure Quantum 资源估算器使用。

  • Hastings-Haah 代码: 此量子误差更正代码提供比许多政权中的 Majorana 量子比特表面代码更好的空间成本。 对于基于入口的指令集,开销更大,这使得此方法的效率低于图面代码。

示例:三量子位代码

三量子位错误更正代码是一个简单的重复代码,可以检测并更正一位翻转错误。 它通过三次重复量子比特将单个逻辑量子比特编码为三个物理量子比特。

提示

查看 Q# 三量子比特代码的代码示例。

假设你想要发送任意单个量子比特 $\ket{\phi}=\alpha\ket{{0} + 。 \beta\ket{1}$ 为了避免错误,可将基础状态 $\ket{0}$ 编码为 $\ket{1}$ 三个量子比特的联合状态。 这两个逻辑基础状态是$\ket{0_L}=\ket{000}$和$\ket{1_L。}=\ket{111}$

因此,单个量子比特 $\ket{\phi}={0}\alpha\ket{+ \beta\ket{1}$ 编码为:

$$\ket{\phi}{000}\ket{\alpha=_L + \beta\ket{\ket{\alpha{111}=0_L} + 1_L \beta\ket{}$$

让我们分解三量子比特代码的步骤。

准备量子位

首先,将单个量子比特 $\ket{\phi}=\alpha\ket{{0} +\beta\ket{1}$ 编码为三个量子比特的联合状态。

接下来,准备状态 $\ket{0}$中的两个进一步量子比特。 因此,所有三个量子比特的全局状态为 $(\alpha\ket{0}+\beta\ket{1}){000}\alpha\ket{\ket{0}\ket{0}= + 。 \beta\ket{{100}$

最后,通过应用两个 CNOT 操作,将单个量子比特编码为三个量子比特的联合状态。 第一个 CNOT 使用第一个量子比特作为控制,并作用于第二个量子比特,生成 $\alpha\ket{000} + \beta\ket{110}$。 第二个 CNOT 使用第一个量子比特作为控制,并作用于第三个量子比特。 三个量子比特的状态现在 $\alpha\ket{000} 为 + \beta\ket{111}$。

发送量子比特

发送所有三个量子比特。 假设只能发生一位翻转错误,则收到的量子比特处于以下状态之一:

State 错误
$\alpha\ket{000} + \beta\ket{111}$ 无错误
$\alpha\ket{100} + \beta\ket{011}$ 量子位 1
$\alpha\ket{010} + \beta\ket{101}$ 量子比特 2
$\alpha\ket{001} + \beta\ket{110}$ 量子比特 3

添加辅助量子位

首先,你引入了另外两个量子比特,这些量子位在状态 $\ket{00}$中已准备好。 此辅助量子比特对用于提取错误的信息,而无需直接测量或获取有关逻辑状态的信息。

接下来,执行四个 CNOT 操作:前两个操作使用第一个和第二个接收的量子比特作为控制,并处理第一个辅助量子比特,最后两个操作使用第一和第三个接收的量子比特作为控制,并处理第二个辅助位。 所有五个量子比特的总状态现在为:

State 错误
$(\alpha\ket{000} + \beta\ket{111})\ket{00}$ 无错误
$(\alpha\ket{100} + \beta\ket{011})\ket{11}$ 量子位 1
$(\alpha\ket{010} + \beta\ket{101})\ket{10}$ 量子比特 2
$(\alpha\ket{001} + \beta\ket{110})\ket{01}$ 量子比特 3

检索错误综合症

若要检索错误信息,可以测量计算基础状态 $\ket{0}$ 中的两个辅助量子比特和 $\ket{1}$。 通过执行此操作,可以恢复称为错误综合症联合状态,因为它有助于诊断收到的量子比特中的错误。

现在,你知道三个接收量子比特所在的四个可能状态中的哪一个。 可以通过应用更正操作来更正错误。 在这种情况下,你将处理位翻转错误,因此更正是应用于量子比特的一个 $(或没有)的 \sigma_x$ 操作。

例如,如果错误综合症是$\ket{00}$,则收到的量子比特处于状态 $\alpha{000}\ket{+ \beta\ket{{111}$,这是最初发送的状态。 如果错误综合症是$\ket{11}$,则收到的量子比特处于状态 $\alpha{100}\ket{+ b。\ket{{011}$ 第一个量子比特上有一个位翻转错误,可以通过向第一个 $量子比特应用 \sigma_x$ 操作来更正此错误。

错误综合症 折叠状态 更正
$\ket{00}$ $\alpha\ket{000} + \beta\ket{111}$ 不执行任何操作
$\ket{01}$ $\alpha\ket{100} + \beta\ket{011}$ 将 \sigma_x$ 应用于$量子位 3
$\ket{10}$ $\alpha\ket{010} + \beta\ket{101}$ 将 \sigma_x$ 应用于$量子比特 2
$\ket{11}$ $\alpha\ket{001} + \beta\ket{110}$ 将 \sigma_x$ 应用于$量子比特 1

提取原始量子比特

最后,若要提取最初要传输的单个量子比特,请应用两个 CNOT 操作:一个使用第一个量子比特作为控制,另一个使用第二个量子比特作为控制,另一个使用第一个量子比特作为控制,并处理第三个量子比特。

第一个量子比特的状态现在 $\alpha\ket{0} 为 + \beta\ket{1}$,这是要传输的原始量子比特。

重要

QEC 代码不会获取有关系数$\alpha$$\beta$的任何信息,因此计算状态的叠加在更正期间保持不变。