关于量子计算的一份介绍
量子计算是计算机领域当前新兴技术之一,它依靠许多量子力学有关知识。费曼说过:“如果一个人认为他明白了什么是量子力学,那么他对于量子力学其实一无所知。”但所幸,如果我们要进行量子计算与量子编程的话并不需要太多太高深的量子力学有关的知识。而这篇文章我将介绍量子力学中基础的知识。
一、量子位
在经典计算机中,我们常用的是比特位,即用电压表示0或1。而在量子计算机中我们不用电压而是采用量子的方式去表示,即量子位。通常,一个量子位在不观测时会保持叠加态,而当观测后叠加态会消失变成基态会显示0或1一种。
其中,我们通过自旋来判定0与1,即向上表示1,向下表示0,叠加态时便是即向上又向下。
在具体表示上,我们有两种表示法,首先是矩阵的方式,如下是0的矩阵表示法:
或者还可以表示为:
而1的矩阵表示法为:
或者可以表示为:
而量子比特在未观测时,处于叠加态,此时我们利用概率的方式来表示,与
分别是为1或0时的概率那么表达式为:
二、单量子比特门
在经典计算机中,有许多的门,比如与、或、非门、异或门等。而在量子计算机中也是如此。在这里介绍单量子时的四种门:泡利X门、哈达玛门、泡利Z门泡利Y门。
2.1 泡利X门
泡利X门也是量子计算机中的非门,运用于状态反转与逻辑运算它可以用矩阵表示为:
2.2 哈达玛门
如果我们要将基态反转为叠加态,那么就需要哈达玛门,它表示|ψ>会是|0>或|1>的概率均为,其可用矩阵表示为:
2.3 泡利Z门
如果我们改变量子比特的相对相位(不改变概率幅),那么就需要该门,其矩阵表示为:
2.4 泡利Y门
结合状态翻转和相位反转时,我们需要用到该门,其表达式如下:
三、纠缠
在量子计算中,量子位与量子位之间存在一种纠错的关系,即当有两个量子位存在该关系的条件下,其中一个量子被观测到为某一值时,另外的一量子也会从叠加态跳转到刚才观测到的某一基态。由此,也诞生了受控非门。
3.1 受控非门
CNOT门包含两个输入量子比特:控制比特(control qubit)和目标比特(target qubit)。其操作规则为:
①若控制比特为 |0⟩,目标比特保持不变;
②若控制比特为 |1⟩,目标比特执行非门(Pauli-X门)操作
3.2 BB84算法
那么,我们可以考虑将之用到计算机网络的信息传输中去,由此诞生了BB84算法。下面简述一下该算法:
首先背景是Alice要给Bob发信息,但是发送的过程中,可能会被人去偷听消息。那么量子计算后,我们可以这样建立一种传输的方式:
①Alice随机生成二进制序列,并为每个比特随机选择一组测量基(直角基或斜角基),发送对应偏振态的单光子;
②Bob随机选择测量基接收光子,记录结果;
③Bob通过经典信道告知Alice其测量基序列 → Alice回复哪些基组选择正确 → 双方丢弃基组不一致的数据;
④Alice和Bob公开比较部分保留数据(如1/3) → 若错误率>25%,判定存在窃听(Eve)并废弃本轮密钥;
⑤未公开的剩余数据作为最终共享密钥,用于后续经典通信加密。
四、量子计算之后
时至今日,量子计算还没有走进家家户户,而只是一下大型公司研制出了基础的量子计算机以供大家在云平台上使用。但是我们可以通过量子计算模拟器去提前进行量子编程,比如基于JAVA的Strange和居于python的Qiskit Aer。
而在量子编程的编程语言上,一般存在两种方向,首先是暴露量子计算的叠加态与纠缠等,让程序员去使用,此外是将之屏蔽,让程序员像经典的编程一样去编程。两者各有利弊,目前主要的趋势是利用当前已有的主流程序语言去配合暴露出的一部分量子计算特性去编程,就上上述提到的那两个模拟器那样。
此外,量子计算的一大特性就是将一些经典计算机中难以计算的复杂问题较容易去解决出来,比如拆分问题(把17052拆分成14*6*29*7)。但在一些问题上,普通经典计算机又有优势,所以可能会在之后的计算机上出现三种处理核心即CPU,GPU与QPU。
这些大概是量子计算的基础知识,之后详细的算法,之后会去介绍。
此上