欢迎光临散文网 会员登陆 & 注册

量子计算 [2] -- 量子位门

2021-03-30 04:46 作者:nyasyamorina  | 我要投稿

量子位门(Qubit Gate, 或简称位门Gate),  是对量子位进行操作的基本途径.  如同逻辑门是电子计算机的起点一样,  量子位门也是量子计算机的起点,  所有量子位操作都是由量子位门实现的.

单量子位门

如同名称一样,  这类位门是作用在1个量子位上的,  并且会改变1个量子位的状态.  所以如果有个可分的多量子位系统,  无论塞多少单量子位门进去,  系统都是可分的.

因为单量子位有两个状态,  所以最多需要4个数字表示单量子位的所有操作.

记 U 为随意一个单量子位门,  则 U = a|0❭❬0| + b|0❭❬1| + c|1❭❬0| + d|1❭❬1|,  其中b为在操作U里从状态1变为状态0的"比例",  还是用例子最快: 

现在有一个随意的量子位: |ψ❭ = α|0❭ + β|1❭,  把U作用到|ψ❭上,  写作 U|ψ❭,  写成完整式子有  (a|0❭❬0|+b|0❭❬1|+c|1❭❬0|+d|1❭❬1|)(α|0❭+β|1❭),  初中数学得:  aα|0❭❬0|0❭+bα|0❭❬1|0❭+cα|1❭❬0|0❭+dα|1❭❬1|0❭+aβ|0❭❬0|1❭+bβ|0❭❬1|1❭+cβ|1❭❬0|1❭+dβ|1❭❬1|1❭.  看到里面出现了大量的❬·|·❭的,  当左右两个数字相等时为1, 否则为0,  也就是说 ❬0|0❭=1, ❬0|1❭=0, ❬1|0❭=0, ❬1|1❭=1.  对上式所有❬·|·❭计算得:  aα|0❭+cα|1❭+bβ|0❭+dβ|1❭,  合拼同类项:  (aα+bβ)|0❭+(cα+dβ)|1❭.  也就是说  U|ψ❭ = (aα+bβ)|0❭+(cα+dβ)|1❭.

当存在多个单量子位门时,  计算顺序是从右到左,  这与四则运算有点不一样 [当然, 从左到右逐个位门计算也是ok的],  并且位门绝对不会出现在量子位右侧 [毕竟U|ψ❭是说把位门作用到量子位上, |ψ❭U的话把量子位作用到位门上是干什么]

下面介绍几个常用的单量子位门: 

  •  I 门 (Identity Gate)I = |0❭❬0| + |1❭❬1|.  这个门完全不会改变量子位,  就是一个摆设

  • H门 (Hadamard Gate)H = 2^0.5 * (|0❭❬0| + |0❭❬1| + |1❭❬0| - |1❭❬1|).  这个门可以快速地制备均匀叠加的量子位,  比如H|0❭为0.5概率在|0❭, 0.5概率在|1❭.  H|1❭也类似, 但|0❭与|1❭的相位相差了π.

  • X门 (Pauli X Gate)X = |0❭❬1| + |1❭❬0|.  X门用于交换|0❭与|1❭

  • Y门 (Pauli Y Gate)Y = -i|0❭❬1| + i|1❭❬0|.  Y门与X门类似,  但两个状态都被加上或减去了π/2相位

  • Z门 (Pauli Z Gate)Z = |0❭❬0| - |1❭❬1|.  Z门是翻转|1❭的相位,  则在很多叠加态的系统时里需要干涉时非常有用,  X = HZH

上面的门都有一个特点:  就是自身为自身的逆,  也就是说连续在量子位上应用两次相同的门,  会恢复到引用之前的状态,  这种特性常用来从数据量子位运算得到结果量子位后,  把数据量子位恢复到运算前的状态 [因为量子之间互相纠缠干涉,  常常会在运算时数据被修改, 甚至有时会把数据位用作临时结果位].

下面的门也属于单量子位门,  但自身的逆为其他位门,  关于位门的逆,  可以期待一下可能存在的附章.  S门和T门属于相位偏移门(Pahse Shift Gates).  Rx, Ry, Rz和R1都属于旋转门(Rotation Gates),  这是因为在Bloch球里看上去就是绕着相应的轴转动一定角度一样.

  • S = |0❭❬0| + i|1❭❬1|

  • T = |0❭❬0| + e^(iπ/4) |1❭❬1|

  • Rx(θ) = cos(θ/2)|0❭❬0| - isin(θ/2)|0❭❬1| - isin(θ/2)|1❭❬0| + cos(θ/2)|1❭❬1|

  • Ry(θ) = cos(θ/2)|0❭❬0| - sin(θ/2)|0❭❬1| + sin(θ/2)|1❭❬0| + cos(θ/2)|1❭❬1|

  • Rz(θ) = e^(-iθ/2)|0❭❬0| + e^(iθ/2)|1❭❬1|

  • R1(θ) = |0❭❬0| + e^(iθ)|1❭❬1|, R1门的旋转定义与四元数(quaternion)有关,  这实在是远远超过了量子计算的范畴了

多量子位门

对于多量子位来说,  所有可能的位门实在过于繁多,  因此在这里只介绍一种特殊的多量子位门: 控制位门 (Controlled Gate),  并且已经被证明:  任意一个多量子位门都可以从单量子位门和CNOT门组合得到,  CNOT门就是一个两量子位的控制位门.  

控制位门由三部分组成:  位门, 控制位和被控制位.  当控制位全部为|1❭时,  位门作用到被控制位上.

比如说CNOT门里的位门为X门,  并且控制位和被控制位都只有1个.  假设现在有一个双量子位系统:  第1位为控制位,  第2位为被控制位,  应用CNOT时 [X门的作用是交换量子位的|0❭和|1❭状态],  当第1位为|1❭时,  交换第2为的|0❭和|1❭.  设双量子位系统状态为  |ψ❭ = c_0|00❭ + c_1|01❭ + c_2|10❭ + c_3|11❭,  应用CNOT会交换|10❭和|11❭ [第1位为|1❭, 交换第2位|0❭和|1❭],  得到 c_0|00❭ + c_1|01❭ + c_3|10❭ + c_2|11❭

CNOT = |00❭❬00| + |01❭❬01| + |11❭❬10| + |10❭❬11|

试验:   制造一个双量子位系统,  引用H门到第1位上,  查看一下系统状态,  然后以第1位为控制位, 第2位为被控制位, 应用CNOT门,  再查看系统状态 [这里使用了自制的量子计算模拟库, 也可以使用Q#等主流语言/库]

代码,  注意计算机的索引是从0开始的
输出,  注意计算机的位数是从右往左数的

作用CNOT后整个系统变为了不可分状态,  可以看出量子位的纠缠是从控制位门产生的.

还有一个常用的控制位门为Toffoli门(又称CCNOT门),  与CNOT门类似,  Toffoli门里的位门也是X门,  且被控制位为1为,  但控制位变为2位.  只有当控制位都为|1❭时才会交换被控制位的状态, 示例:

把CCNOT门分解为单量子位门和CNOT门的组合得:

控制位门能做的事情还有很多,  比如说把控制位全部应用X门后,  再应用控制位门,  然后再把X门应用上控制位,  就可以做到原本控制位的状态全部为|0❭时才会把位门作用在被控制位上.  并且如果位门本来就是多量子位门/操作,  被控制位还可以是多个量子位

结语

在本篇了简单了解了量子计算的砖块 -- 量子位门,  正式踏出了量子计算的第一步.  跟第一篇一样,  这篇也是会有附章介绍里面的数学计算的,  只不过半夜4:30实在莫得精力了,  下次一定.jpg

吐槽:  本来是懒得做图的,  但是不做封面真的太难看啦,  所以随便latex了一条东西上去算了

自制的量子模拟库项目: [github.com/nyasyamorina/nyasQuantumCalculate],  库还是在beta阶段,  内部代码随时会发生大重构 [比如说之前是cython为主, 现在直接转为纯python+numpy了]

日常推Q群: [274767696]

量子计算 [2] -- 量子位门的评论 (共 条)

分享到微博请遵守国家法律