量子计算入门 - 第一部分





5.00/5 (27投票s)
学习量子计算的基础知识。理解狄拉克符号并设计和构建量子电路。
本系列文章
- 第1部分:量子计算导论(本文)
- 第2部分:探索量子门
- 第3部分:使用受控门
目录
引言
量子计算可能正处于颠覆现代计算的边缘。高德纳公司预测,“到2023年,20%的组织将为量子计算项目编制预算。”
主要的云服务提供商:微软、亚马逊、谷歌、IBM和甲骨文正在竞相将其量子计算作为服务推向市场。此外,公司、大学,甚至国家都在大力投资。
为何如此 Hype?
量子计算机有望为计算带来经典计算机无法比拟的并行性。它们可能使我们能够模拟量子世界,在材料科学、医学等领域带来突破。
已经存在实际的多量子比特量子计算机,例如IBM的,它允许您在云中创建和运行量子算法。
尽管普遍乐观,但仍有一些人认为更大的多量子比特系统不可行,永远不会实现。然而,支撑量子计算的物理学已通过实验广泛验证,研究人员在提高多量子比特系统精度方面不断取得进展。
对于软件工程师来说,这是一个值得探索的领域。
我的量子领域之旅
很可能,像我一样,你是一名软件工程师,希望利用最新的量子技术大展身手。不幸的是,网上关于量子计算的几乎所有资源都带有数学或物理学倾向;大部分时间都是由物理学家为物理学家撰写的。
几个月前,当我开始学习量子理论时,我的第一步是深入研究,据一些人说,这是关于这个主题的权威著作:《量子计算与量子信息》,作者是尼尔森和庄。显然,这是许多物理学学校使用的书籍。我很快就发现自己在线性代数方面遇到了困难,我知道我需要退一步阅读一下这方面的资料。幸运的是,我的书架上有一本安东的《初等线性代数》旧(第8)版;那是我近二十年前大学时代留下的。我读完了它,并且非常喜欢。在学习了几周之后,我又尝试了一本量子方面的书籍。这次我选择了亚诺夫斯基和曼努奇的《计算机科学家的量子计算》。现在越来越多的东西变得清晰起来。线性代数书中唯一明显缺少的是张量。我为此求助于网络,结果发现张量积非常简单。
因此,掌握了新学到的线性代数知识,我深入研究了量子计算书籍;不时地求助于网络来提高清晰度。最终,我发现自己达到了最初的目标:理解和构建量子电路。
虽然支撑量子理论的数学和符号乍一看令人生畏,但在我的旅程中,我被它巧妙的契合性所吸引。我撰写了这系列文章,旨在为您提供量子计算基础知识,而无需花费大量时间深入量子力学,量子力学是物理学中理论繁重的一个分支,虽然可以拓宽理解,但可能会让初学者望而却步。本系列文章也没有在一开始就花费大量时间介绍相关数学知识,而是在讲解过程中引入关键数学。尽管这些文章中散布着大量的数学和公式,但我们会一起攻克它们。
让我们开始吧。
从比特到量子比特
在量子计算中,量子比特类似于经典计算中的比特。我猜你已经知道了。我们还有量子字节,类似于经典字节。与经典计算一样,量子比特有两种可测量的状态,但其中还有更多内容。
当你测量一个量子比特时,它的量子态就会塌缩;塌缩成一个值为0或1的状态。然而,在你测量它之前,这两种可观测状态都有一定的概率。作为量子工程师,我们可以修改量子态的概率,更重要的是,我们可以使用多个相互影响的量子比特。
量子比特用向量表示。零量子比特态用单列矩阵 [1, 0]T 表示。一量子比特态用 [0, 1]T 表示。这些被称为它的基态。上标“T”表示矩阵的转置,并允许矩阵水平呈现。它偶尔用于节省空间。
这两个基态是正交归一的,这意味着它们是正交且归一化的。它们共同被称为**计算基**。让我解释一下这些术语。
正交意味着矩阵的内积为0。要计算内积(又称点积),我们将第一个矩阵中的每个元素与其在第二个矩阵中的对应元素相乘,然后将它们全部相加,如下所示:
归一化意味着可观测状态的概率之和为1。
确定量子态的概率是量子信息论的基础,我们将在本文后面深入探讨。然而,首先,我们需要介绍一些基础数学知识,包括复数和矩阵乘法,然后熟悉狄拉克符号。
一些预备数学知识
尽管粗略浏览这篇文章可能会觉得并非如此,但我已尽力简化数学。然而,你只需要掌握几个操作即可跟上。特别是,你需要知道如何将复数和矩阵相乘。我们现在就来研究这些操作。
复数乘法
在量子计算中,量子比特表示为三维空间中的向量。在量子电路中,我们旋转并组合它们以执行计算。表示量子比特状态的向量包含复数,复数也用于在此空间中旋转量子比特。
一个复数由实部 (x) 和虚部 (y) 组成,如下所示:
其中\(i\)等于\(\sqrt{-1}\),\(i^2\)等于\(-1\)。
当两个复数相乘时,您将两个数实部和虚部的乘积相加。见图1。

乘出来得到
由于\(i^2 = -1\),这简化为
以下是一个例子
两个矩阵乘法
在处理量子态时,通常执行三种矩阵与矩阵的乘法运算:矩阵乘积、内积和张量积(又称外积)。我们现在讨论矩阵乘积,并在后面的章节中,根据需要介绍内积和张量积。
首先要注意的是,矩阵乘积的计算仅在第一个矩阵的列数等于第二个矩阵的行数时才有效。参见图2。
还要注意,结果的行数等于第一个矩阵的行数,结果的列数等于第二个矩阵的列数。

矩阵乘积通常不带运算符写为AB,其中A和B是两个矩阵。
我们来看一个例子,其中矩阵A和B如下所示。
为了计算 AB,我们将 A 的第一行中的每个元素乘以 B 的第一列中相同索引的元素,然后将乘积相加。结果是 1×2 + 3×3 + 2×1 = 13。值 13 被放置在结果矩阵的第一个单元格中。
然后我们保持在 A 的第一行,但我们移动到 B 的下一列;重复这个过程直到我们到达 B 中列的末尾。
然后我们向下移动到 A 的第二行,再回到 B 的第一列。当我们完成 A 的最后一行时,我们就完成了。
识别矩阵中的元素
按照惯例,矩阵通常用大写字母作为标识符。矩阵中的一个元素用矩阵的小写名称指定,其行和列(按此顺序)以下标显示。参见以下示例
矩阵与标量乘法
矩阵乘以标量的过程很简单:将矩阵中的每个元素乘以标量。
如果A是矩阵
那么矩阵乘以标量得到
例如,如果标量乘数为2且A的值为
那么结果如下
如果标量是复数和/或矩阵包含复数,则过程不会改变。您可以使用我们之前讨论过的复数乘法规则来计算乘积。
好的,我们已经回顾了一些你需要掌握的基本数学运算,以便继续学习。让我们继续讨论更有趣的内容。
用狄拉克符号描述量子态
狄拉克符号(也称为左矢-右矢符号)在量子理论中无处不在。它用于描述量子态。你可以把它看作是矩阵的速记。
具有零基态的单个量子比特可以用狄拉克符号中的**右矢**表示,如下所示:
这读作“右矢零”。
相反,具有基态一的量子比特可以写成
**注意:**在某些文本中,|0⟩和|1⟩分别表示为|↑⟩(自旋向上)和|↓⟩(自旋向下)。当您在三维球体上可视化量子比特时,|0⟩在北极向上,|1⟩在南极向下。本系列中我只使用|0⟩和|1⟩。
回想一下,|0⟩代表列向量[1, 0]T,1代表[0, 1]T。
在狄拉克符号中,右矢中的值——在竖线“|”和尖括号“⟩”之间——是张量积。
符号“⊗”用于表示两个矩阵的张量积。它的计算方法是将第一个矩阵中的每个元素乘以第二个矩阵中的所有元素,如下所示:
张量积在狄拉克符号中被凝缩,如下所示:
对于量子比特,狄拉克符号非常适合二进制表示。请注意下面矩阵中的条目如何与二进制对应。此外,请注意矩阵中的第一个条目如何对应于 0 而不是 1。
**注意:**在某些文本中,右矢中的前导0被省略,并用下标表示长度。因此|0010⟩变为|10₄⟩。本系列中我不使用该符号,但您可能会在其他地方看到它。
您现在可以看到 |1⟩ ⊗ |0⟩ 是如何通过计算矩阵的张量积来组合的,如下所示:
在量子电路中,电路的输入以张量积的形式组合。我们将在本系列的后续部分中探讨这一点。
如果狄拉克符号指向左而不是右,例如:⟨0|,则称为左矢。它们共同构成一个左矢-右矢。
从右矢推导左矢(反之亦然)
左矢是右矢的共轭转置。共轭转置也称为伴随矩阵,另一个名称是埃尔米特转置。
为了获得共轭转置,矩阵被旋转,并且每个条目都被复共轭。对于单列矩阵,这仅仅意味着我们将其水平旋转,然后对每个条目取复共轭。参见图3。
复共轭仅仅意味着改变虚部的符号。例如,如果\(z = 2 + 3i\),那么复共轭是\(\bar{z} = 2 - 3i\)。

**为何是复数?** 您可能想知道为什么量子理论如此依赖复数。Yanofsky 等人 (2008 p.88-89) 指出,如果您将两个正实数相加,结果总是会增加。复数则不然。您可以将两个复数相加,并得到一个更小的结果。事实上,它们甚至可能相互抵消。这被称为干涉,有时会故意用于在量子算法中消除不需要的状态。
在下面的示例中,我们使用变量 a 和 b,其中 a,b ∈ Cd。换句话说,a 和 b 表示具有 d 行的复数单列矩阵。大多数情况下,我们处理的是量子比特,其中维度计数为2。
下面说明了如何从右矢获取左矢
这个过程是可逆的。要从左矢获取右矢,再次执行相同的操作:计算共轭转置。
当它们结合时,一个左矢-右矢 ⟨b|a⟩ 代表 b 和 a 的内积。有时也写成 ⟨b,a⟩。内积是对应元素乘积的和。这会产生一个复标量值(带有或不带虚部)。标量意味着它不是一个向量;它是一个只有大小没有方向的量。
所有量子态都归一化。即⟨a|a⟩ = 1。这对态的概率具有重要意义。我们将在后面的章节中再次讨论它。
我们已经看到量子理论依赖复数和向量来描述量子态。这种代数结构被称为*复向量空间*,也称为希尔伯特空间。
狄拉克符号的另一种组合,我在此补充完整,是右矢-左矢。它写成 |a⟩⟨b| 或有时 |aXb|。右矢-左矢是张量(或外)积,由一个 d × d 矩阵表示。
**提示:**在量子理论中,常用希腊字母 φ (phi) 和 ψ (psi) 作为左矢和右矢中的变量名。例如,您经常看到量子态表示为 |ψ⟩ = ... 。不要被希腊字母、陌生的符号和看似复杂的代数所困扰。所有这些都比实际情况看起来复杂得多。
探索量子叠加
我们之前学到,当你测量一个量子比特时,它的量子态会塌缩成0或1。它塌缩到哪个值取决于量子比特的配置方式。你可以改变量子比特塌缩到特定值的概率。通过这样做,你将量子比特置于叠加态中。
现在,对于处于纯基态(|0⟩或|1⟩)的量子比特,结果是预先确定的。它有100%的几率塌缩到其对应的值。换句话说,如果你测量一个处于|0⟩态的量子比特,例如,你总是得到0,因为塌缩到0的概率是1;而塌缩到1的概率是0。
但是,如果您在量子电路中采用某个量子门,则可以将量子比特塌缩到0或1的概率分成50/50的机会。在这种情况下,它被称为处于两种状态的叠加态。
当一个量子比特处于叠加态时,它的值是不确定的,直到被测量。事实上,量子比特在此之前被认为是同时处于0和1的状态。它两者兼备!
这是一种非常不寻常的现象,物理学家无法用经典物理学来解释。双缝实验就证明了这种现象。一个光子似乎无处不在,与自身发生干涉,然后落在某个位置。同样,我们的量子比特在被测量之前也存在于所有状态中。
**术语“状态”的消除歧义** 当一个或多个量子比特组成一个量子系统时,这个系统在任何时候都有一个整体的量子状态。然而,该系统还具有一组不同的状态,当测量时它可能会塌缩到这些状态。我们将这些状态称为:可观测状态。
一个或多个量子比特的量子态可以用狄拉克符号和简单代数来描述。可观测态和相关概率构成了量子比特的叠加态。
单个量子比特可以用 |0⟩ 和 |1⟩ 的线性组合来描述,例如:
α(阿尔法)和 β(贝塔)系数被称为复振幅或概率振幅。正如 Yanofsky 和 Mannucci (2008, p.106) 指出的,名称“振幅”来自于量子态是波,而波的特征是其振幅这一事实。
**注意:**概率振幅不可测量。当一个量子比特被测量时,它会塌缩到其可观测状态之一。我们可以操控概率振幅,但不能直接观测它们的值。
计算可观测状态的概率
为了计算量子比特塌缩到特定状态的概率,我们取其系数模的平方。这被称为玻恩规则。
所以,对于上面所示的|ψ⟩例子,|0⟩的概率是|α|²。
复数的模数计算如下
为了计算概率,我们将该数平方。所有这些可以简洁地写成如下所示:
这表示,要计算可观测状态 Xi(对于量子位来说,它将是 0 或 1)的概率,你需要对点积的模数平方。换句话说,你将你感兴趣的状态投影到叠加态上。
如果代数目前还不明白,请不要担心。接下来我们看一个例子,然后用矩阵进一步说明。
假设我们的量子比特叠加态由以下给出:
那么塌缩到0的概率由以下给出
现在,我们可以通过计算点积将⟨0|0⟩简化为1,如下所示:
因为⟨0|和|1⟩是正交的,它们的内积为0,如下所示:
所以,如果我们将这些左矢-右矢替换到我们的概率公式中,我们会看到:
或者,我们可以以同样的问题,但用矩阵代替我们的状态,并以这种方式计算概率。
希望现在狄拉克符号版本更有意义了。
利用量子态的概率分布
我们知道概率分布中所有概率之和始终为1。我们还了解到,所有量子态都经过归一化,即⟨a|a⟩ = 1。对于正交基,例如[0, 1]T和[1, 0]T,可观测态处于概率分布中。如果将所有可观测态的概率相加,它们之和为1,如公式所述:
因此,我们可以通过计算 P(0) 的补数来计算量子位塌缩到 1 的概率,如下所示:
创建多量子比特状态
到目前为止,我们已经研究了单个量子比特的量子态。当然,我们可以创建具有多个量子比特的量子态。这些被称为多体量子态。
为此,我们使用张量积组合状态。例如,如果量子比特 A 处于状态 |ψ⟩A = |0⟩,量子比特 B 处于状态 |ψ⟩B = |1⟩,则总状态由以下给出:
在这种情况下,我们可以测量量子比特A的状态而不会使量子比特B的状态塌缩。据说这些独立状态是不相关的。
然而,我们可以将量子比特置于一种状态,其中测量一个量子比特会影响另一个量子比特。这被称为纠缠。
纠缠量子比特
例如,以一个众所周知的状态(贝尔态之一,我们稍后讨论),这个状态描述了两个量子比特处于叠加态中。
当测量时,量子比特的状态将有50%的几率是00或11。
如果我们只测量其中一个量子比特,它将导致另一个量子比特的状态塌缩到相同的值。这些量子比特被称为纠缠在一起。即使纠缠的量子比特相距遥远,可能相隔光年。这就是爱因斯坦所说的“幽灵般的超距作用”。
确定量子比特是否纠缠
当我们研究纠缠的数学原理时,我们可以使用矩阵表示来判断量子比特是否纠缠。
正如Yanofsky 等人 (2008, p.89) 指出的那样,可以写成两个向量张量积的向量被称为**可分离的**。
相反,如果两个量子比特的张量积态不能分解,则称它们是纠缠的。Andrew Helwer在量子计算入门视频中指出了这一点。
例如,如果我们取状态 |01⟩ 并推导出它的矩阵表示;暂时忘记我们已经知道张量积表示是什么。
我们可以看到ac = 0,ad = 1,bc = 0,bd = 0。如果我们解a,b,c和d;我们得到a = 1,b = 0,c = 0,d = 1。我们可以分解它,因此我们知道|01⟩是可分离的,而不是纠缠的。
相反,如果我们观察贝尔态|φ+⟩,我们看到它是一个处于等叠加态的两个量子比特态。矩阵表示如下计算:
在这种情况下,矩阵无法分解。我们有 ac = 1/√2, ad = 0, bc = 0, bd = 1/√2。a, b, c, d 没有解。因此,矩阵不可分离,量子比特纠缠在一起。事实上,由于 |00⟩ 和 |11⟩ 这两种状态的概率相等,贝尔态被称为最大纠缠态。它们是你能达到的最大纠缠程度。
但是,我们如何创建贝尔态呢?我们将在本系列的第二部分中探讨。接下来,我们来看一下单个量子比特状态的可视化。
总结一下,作为量子工程师,我们有机会在量子电路中使用量子门来操纵概率。我们还可以以一种相互关联的方式组合量子比特。我们甚至可以利用量子纠缠来瞬间影响多个量子比特的共享状态,即使这些量子比特彼此相距很远。
在布洛赫球上可视化量子比特
许多单量子比特操作都可以清晰地在三维单位球体(称为布洛赫球)上可视化。见图4。
量子比特可以表示为从球体中心到球体表面长度为1的线。
北极是基态 |0⟩;南极是 |1⟩。
在塌缩成基态之前,量子比特的叠加态可能位于布洛赫球上的任何位置。您可以将 θ(西塔)视为纬度,将 φ(菲)视为经度。当我们垂直移动,向北或向南时,纬度会变化 (θ),而当我们水平移动时,经度 (φ) 会变化。
虽然纬度会影响量子比特塌缩到特定基态的概率,但经度不会。经度被称为量子比特的相位。

我们之前看到一个量子比特的叠加态可以写成
其中 α 和 β 是其概率振幅,它们是复数。
笛卡尔坐标与极坐标之间的转换
回想一下,复数由实部 x 和虚数乘数 y 组成。
复数可以用 x 和 y 来表示。这对 (x, y) 称为它的笛卡尔表示。它可以在二维笛卡尔平面上绘制。这样的图被称为阿尔冈图。见图5。
可以使用arg函数计算θ。在这种情况下,arg等价于atan2,也等价于tan⁻¹,如下所示:
在本节后面,您将看到如何使用Arg函数计算布洛赫球上的角度(θ,φ)。

我们可以将笛卡尔坐标转换为极坐标表示。极坐标由模数 ρ (rho) 和角度 θ 组成。回想一下,为了计算模数,我们使用
要计算角度,我们使用
要从极坐标转换回笛卡尔坐标,请使用
在布洛赫球上定位量子比特
请随意快速浏览本节。虽然理解状态如何转换为布洛赫球很有用,但您可以稍后再回顾。
α 和 β 可以在布洛赫球上可视化为一个点,对应两个角度 (θ, φ)。
事实证明,由于|α|² + |β|² = 1,我们可以使用以下方法计算量子比特在布洛赫球上的位置:
其中 \(0 \leq \theta \leq \pi\) 且 \(0 \leq \varphi \leq 2 \pi\)。
这给了我们 \(\alpha = \cos{\frac{\theta}{2}}\) 和 \(\beta = e^{i \varphi} \sin{\frac{\theta}{2}}\)。
要找到角度,请使用
**注意:**您也可以通过状态的密度矩阵找到这些值,密度矩阵由其右矢-左矢计算:ρ = |ψ⟩⟨ψ|。但这超出了本文的范围。
结论
在本文中,我们探讨了量子比特和经典比特之间的区别。我们研究了量子比特的计算基。我们看到了如何使用狄拉克符号描述量子态。我们观察到量子比特可以处于叠加态,并看到了如何计算可观测态的概率。我们还看到了纠缠量子比特如何影响该对的量子态。最后,我们绕着布洛赫球转了一圈,看到了如何以3D方式可视化量子比特的状态。
在下一部分中,我们将探讨如何使用量子门来构建量子电路,这将最终使我们走上实现量子算法的道路。希望您能加入我。
感谢您的阅读,希望本文对您有所帮助。如果觉得有用,请评分和/或在下方留下您的反馈。
参考文献
- Yanofsky, N., & Mannucci, M. (2008). Quantum Computing for Computer Scientists
- Anton, H., (2000) Elementary Linear Algebra, 8th Edition, Wiley
- Nielsen, M. & Chuang, I., (2010) Quantum Computation and Quantum Information, 10th edition, Cambridge University Press, Cambridge UK
- Glendinning, Ian. (2005) The Bloch Sphere, 2019年6月10日访问,检索自http://www.vcpc.univie.ac.at/~ian/hotlist/qc/talks/bloch-sphere.pdf
- Dutta, Sanchayan. If quantum gates are reversible how can they possibly perform irreversible classical AND and OR operations? 2019年6月9日访问,检索自https://quantumcomputing.stackexchange.com/questions/131/if-quantum-gates-are-reversible-how-can-they-possibly-perform-irreversible-class
- Wolf, R., Quantum Computing: Lecture Notes, 2019年6月9日访问,检索自https://homepages.cwi.nl/~rdewolf/qcnotes.pdf
- 维基百科,量子逻辑门,2019年6月9日访问,检索自https://en.wikipedia.org/wiki/Quantum_logic_gate
- Glendinning, I., (2010) Rotations on the Bloch Sphere, 2019年6月9日访问,检索自http://www.vcpc.univie.ac.at/~ian/hotlist/qc/talks/bloch-sphere-rotations.pdf
- Hui, J., (2018) What are Qubits in Quantum computing?, 2019年6月9日访问,检索自https://medium.com/@jonathan_hui/qc-what-are-qubits-in-quantum-computing-cdb3cb566595
历史
- 2019年6月24日
- 出版日期