程序员人工智能通识自然科普

【科普】量子计算通识-3

2019-07-11  本文已影响15人  zhyuzh3d

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】
更多相关文章请点击【量子计算通识】


以下内容参照微软研究院主题演讲《Quantum Computing for Computer Scientists(计算机科学家量子计算导读)》的结构进行整理和扩充的。
本篇是第三部分。上一篇【科普】量子计算通识-2

经典逻辑门

目前的通用计算机都是基于逻辑门电路来实现的。关于逻辑门电路,你可以参照【量子计算通识】文章中索引的【经典计算机】小专题。

运算的本质是对输入的信息进行修改,然后再输出。晶体管逻辑门电路的本质一种运算,电流进入之后绕来绕去会被改变成不同的电流,然后再输出

经典计算机对于单个比特位的操作有四种:不变,翻转(0和1翻转,即非门NOT),等0(强制输出0),等1(强制输出1)。

而对于两个比特,经典计算机有多重操作,如:

可控非门CNOT

可控非门CNOT是量子计算的最根本操作,也可直接把它称为量子逻辑门

解释起CNOT门有一点麻烦,所以我们先从数学角度看,门就是一种操作,比如之前我们把经典比特位的四种操作都转换成了向量位运算:

  1. 不变操作就是乘以单位矩阵:
    \begin{pmatrix}x_0\\x_1 \end{pmatrix} \begin{pmatrix}1,0\\0,1\end{pmatrix}= \begin{pmatrix}x_0\\x_1\end{pmatrix}

  2. 翻转操作就是乘以单位翻转矩阵:

\begin{pmatrix}x_0\\x_1 \end{pmatrix} \begin{pmatrix}0,1\\1,0\end{pmatrix}= \begin{pmatrix}x_1\\x_0\end{pmatrix}

  1. 等于0操作:

\begin{pmatrix}x_0\\x_1 \end{pmatrix} \begin{pmatrix}1,1\\0,0\end{pmatrix}= \begin{pmatrix}1\\0\end{pmatrix}

  1. 等于1操作:

\begin{pmatrix}x_0\\x_1 \end{pmatrix} \begin{pmatrix}0,0\\1,1\end{pmatrix}= \begin{pmatrix}0\\1\end{pmatrix}

那么,我们定义CNOT门就是乘以下面的矩阵:
\begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix}

注意这不是单位矩阵,它把第三行和第四行交换了。结果会怎样?前两项不变,后两项颠倒,具体如下:

\begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\0\\1\\0 \end{pmatrix}= \begin{pmatrix}0\\0\\0\\1 \end{pmatrix}

这有什么意思?(0,0,1,0)这是一个四维向量,是个乘积态,它可以被分解成两个二维向量的张量积。我们把CNOT运算简单记作C,就有:

\begin{align} C|10>=& \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} \\=& \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\0\\1\\0 \end{pmatrix}\\=& \begin{pmatrix}0\\0\\0\\1 \end{pmatrix}\\=& \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix}=|11> \end{align}

简化一下:

C|10>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} = \begin{pmatrix} \begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix}=|11>

这里注意,我们通过CNOT操作,把|10>变成了|11>。

CNOT对两个向量位的操作四种情况如下:

C|00>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}1\\0 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} = \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}1\\0\\0\\0\end{pmatrix}= \begin{pmatrix}1\\0\\0\\0 \end{pmatrix}= \begin{pmatrix}\begin{pmatrix}1\\0 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} =|00>

C|01>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}1\\0 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix} = \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\1\\0\\0 \end{pmatrix}= \begin{pmatrix}0\\1\\0\\0 \end{pmatrix}= \begin{pmatrix}\begin{pmatrix}1\\0 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix}=|01>

C|10>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix} = \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\0\\1\\0 \end{pmatrix}= \begin{pmatrix}0\\0\\0\\1 \end{pmatrix}= \begin{pmatrix} \begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix}=|11>

C|11>= \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}\begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}0\\1 \end{pmatrix} \end{pmatrix} = \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} \begin{pmatrix}0\\0\\0\\1 \end{pmatrix}= \begin{pmatrix}0\\0\\1\\0 \end{pmatrix}= \begin{pmatrix} \begin{pmatrix}0\\1 \end{pmatrix}\otimes\begin{pmatrix}1\\0 \end{pmatrix} \end{pmatrix}=|10>

简化一下:

C|00>=|00>
C|01>=|01>
C|10>=|11>
C|11>=|10>

仔细看上面这四个式子,规律就是左边第一位永远不变化,原来是0开头,结果就是0开头,原来是1开头,结果就是1开头。但是,当第一位是1的时候,第二位会被翻转(第三和第四)

为什么叫CNOT,Controled NOT,可控非门。如果我们把左边第一位当做额外的开关,用它来控制第二位是否进行翻转,那么就是:如果第一位是0,那么就不翻转第二位,如果第一位是1,那么就翻转第二位。而第一位作为控制位不会被改变。

在这里的运算中,第一位是控制位Control bit,第二位称为目标位Target bit,是被控制的。

实际上理解CNOT的字面意义并不是很大,只要我们记住CNOT就是乘以一个前两行正常后两行翻转的矩阵就可以了。

CNOT(x)=\begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,0,1\\0,0,1,0 \end{pmatrix} x

在下一篇我们将开始正式进入量子计算的领域,谈论量子叠加态在数学计算中的实现。


欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】
更多相关文章请点击【量子计算通识】


每个人的智能新时代

如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,欢迎转载~


END

上一篇下一篇

猜你喜欢

热点阅读