[学习]量子计算
最近学习入门量子计算,总结记录一些学习笔记。
需要亿一点点的线性代数知识。
一、量子比特
1.经典比特与量子比特
经典比特只有两种状态0和1,它们分别代表电路中高电平和低电平,准确来讲是可以用电路中的高低电平来表示。
量子比特也有
其中
而
由此向量内积可以简写成
而且
量子比特可以使用向量表示,而向量可以通过线性组合的形式来表示。
比如某量子比特

2.量子比特叠加态
在介绍叠加态之前需要了解一个线性代数概念:张量积
很好理解,向量的张量积。
与之对应的还有矩阵张量积。特别的张量积幂态表示法
n个经典比特只能表示
例如使用两个量子比特,可以表示一个4维的量子比特空间。这个空间存在四个标准正交基向量
如果两个量子比特构成的状态可以写成
可以使用反证法证明这是一个叠加态。
假设存在两个单量子比特
和 ,他们的张量积是 。
令这两个单量子比特分别为
和 ,可以得到 。
从而知道
、 、 、 。
得到矛盾状态
和 。
因此原命题成立,
是叠加态。
3.测量量子比特
量子比特叠加态过于复杂,不能直接得到结果,需要进行测量。
在线性代数中,测量某个向量
在量子比特中也类似,测量量子比特在基准
4.布洛赫球
这个东西挺难理解的。很多解释都是利用布洛赫球(bloch sphere),介绍单量子比特门在做什么。
对于布洛赫球,只简单的提及
对应布洛赫球 轴正半轴,然后 就恰好对应 轴负半轴。然后立刻得到X门就是量子比特在布洛赫球上绕着 轴旋转180°,Y门是绕着 轴旋转180°。在这里X门旋转和矩阵向量计算结果能对应上;而Y门就始终无法理解到为什么会带一个相位(准确来说, 相位对应 轴正半轴方向,绕 轴旋转为什么会引入 轴正半轴方向的相位),比如 , 。
在此希望大佬解释。
先介绍一个概念,复平面。
复数,例如

现在同样为复平面上的点增加一个约束性条件,要求
这时,欧拉公式
发现二者恰好一致,可以使用一个变量
现在把
一般表示空间上球坐标,需要三个变量。比如下图球坐标表示为
得到球面上量子比特

这样做不够美观,尤其是
增加一个变换,令
- 定义域
和 。 和 恰好落在 轴正半轴和负半轴上。 - 原坐标系下互相正交的量子比特在布洛赫求坐标系下恰好相反。

二、量子比特门
1.酉矩阵
量子比特采用向量表示,对其进行运算需要引入矩阵。且经过运算后要保证量子比特的模长不变,这个矩阵需要满足一些特殊性质。
在实数域线性代数中,这种矩阵称为实正交矩阵,满足
量子比特的系数空间在复数域,对应的矩阵为酉矩阵(Unitary Matrix),满足
共轭转置:
很显然,酉矩阵是可逆矩阵,且逆矩阵就是自身的共轭转置。量子计算和经典计算不同在于,量子计算操作是可逆的,而经典计算除非门外不可逆。
2.单量子比特门
懒得画图了,直接放一张找到的网图。

这里需要着重介绍
另外
除了以上介绍的常见量子比特门,还有一些带参数的如我学完无力了。
如果无法理解Dirac表示法,不妨写成向量和矩阵形式,计算矩阵向量的乘积,可以更好理解。
3.多量子比特门
前面介绍都是基础的量子比特门,只能操作一个量子比特。通过矩阵张量积把两个
例如双量子比特门
控制非门,记作
同样计算
可以发现
若将
量子比特门也具有通用性集合。类似于经典逻辑门中,可以用与非门得到其他任何逻辑门,此时与非门构成的集合是经典逻辑门最小通用性集合。
量子比特门的通用性集合,例如:
- {CNOT, 1-qubit比特门}
- {CNOT, H门, 相位门}
- {Toffoli门, H门}
这是很重要的性质,意味着你可以通过合适的组合方法,把基本比特门组合得到期望的比特门。
只要量子技术能制造的比特门覆盖任意通用性集合,就可以执行任意有限精度的量子计算。
门可以通过组合制造新门的特性为量子编译提供理论基础。原因是不同的量子技术制造的比特门在准确率、延迟上有差异,需要选择最适合当前量子技术的比特门实现量子算法。
三、量子算法
1.量子电路
量子算法依赖于量子电路实现。量子电路不像电路,更像是某种流水线。这个流水线按照一定顺序依次操作不同的量子比特,实现量子算法。
下图是包含三个量子比特的量子电路示意图。图中的

最后测量特定的量子比特可以得到答案。
2.Deutsch-Jozsa量子算法(单比特版)
虽然这个量子算法没有解决实际问题,但还是介绍这个算法。因为算法简单,而且是首个证明量子计算的优越性的算法。
问题:假设有一个函数满足
显然,经典计算机必须要验证
直接研究
搭建对应的求解量子电路,这里出现了从未见过的U门,是数学推演得到。不过不需要关心,只需要知道这个门对于
这里笔者就没有花时间学习这部分的内容,将来会补上的。将来!嗯对的。

接下来,按照
首先是

然后是状态

到这一步插一嘴,可以通过合理调整辅助量子比特
此时经过
而
合并两种情况可以得到
那么
利用前面得到的结论可以得到:
提取公因式
前面提到
| 0 | 0 | 1 | 0 |
| 0 | 1 | -1 | 1 |
| 1 | 0 | -1 | 1 |
| 1 | 1 | 1 | 0 |
于是成功把目标函数
现在
合并为一个结果,得到:
一个重要观察,第一个量子比特的状态会因为
若测量得到的概率是0,那么
3.Deutsch-Jozsa量子算法(多比特版)
学会单比特的操作,接下来拓展到多个量子比特,比如这个问题需要的
现在
用同样的方法依次推导状态

首先是
这里最后一步思维跨度有些大,不妨从2比特的初始情况开始思考。
假设
其中,
推广到
以此类推,得到:
其中
在量子比特一节中我们介绍过向量
同样的写法转移到
这两个是等价的,是同一个公式的不同表示形式。
现在来推导
已知
至于

如何求
已知
关于这个式子也有一个
关于这个推广式子的证明,学不懂。这里也不展开证明,总之和当前主题相关性不高。
代入这个式子处理
此时的
最后得到
四、总结
对于Deutsch-Jozsa量子算法解决的问题。
经典计算至少需要计算
而量子计算机一共执行
量子计算取得远超经典计算的加速比。