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

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

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

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


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

经典比特位的四种操作

一个比特位即0或1,代表了两种可能中确定的一种。

我们对于一个比特位仅有四种操作方法:

  1. f(x)=x

Identity,恒等,即不变,不操作。原来是0结果就是0,原来是1结果也还是1。或者说是乘以标准单位。
对于|0>和|1>这样的向量位表示,我们可以乘以单位矩阵:
\begin{pmatrix}1,0\\0,1\end{pmatrix} \begin{pmatrix}1\\0\end{pmatrix}= \begin{pmatrix}1\\0\end{pmatrix}=0 \qquad \begin{pmatrix}1,0\\0,1\end{pmatrix} \begin{pmatrix}0\\1\end{pmatrix}= \begin{pmatrix}0\\1\end{pmatrix}=1

  1. f(x)=﹁x

Negation,翻转,乘以。原来是0结果就是1,原来是1结果也还是0。或者说是乘以翻转单位,这在矩阵中就是一个右上角到左下角的单位翻转矩阵:

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

  1. f(x)=0

Constant-0,固定等于0,或者说强制设置为0,不管你原来是0还是1,操作之后都是0。
这样可以用矩阵表示,结果第一项取被乘数两项之和,因为两项必然有一个是1所以结果第一项是1;而结果第二项什么都不取,直接是0:
\begin{pmatrix}1,1\\0,0\end{pmatrix} \begin{pmatrix}1\\0\end{pmatrix}= \begin{pmatrix}1\\0\end{pmatrix}=0 \qquad \begin{pmatrix}1,1\\0,0\end{pmatrix} \begin{pmatrix}0\\1\end{pmatrix}= \begin{pmatrix}1\\0\end{pmatrix}=0

  1. f(x)=1

Constant-1,固定等于1,或者说强制设置为1,不管你原来是0还是1,操作之后都是1。
这样可以用矩阵表示,结果第二项取被乘数两项之和,因为两项必然有一个是1所以结果第一项是1;而结果第一项什么都不取,直接是0:
\begin{pmatrix}0,0\\1,1\end{pmatrix} \begin{pmatrix}1\\0\end{pmatrix}= \begin{pmatrix}0\\1\end{pmatrix}=1 \qquad \begin{pmatrix}0,0\\1,1\end{pmatrix} \begin{pmatrix}0\\1\end{pmatrix}= \begin{pmatrix}0\\1\end{pmatrix}=1

可逆性Reversible

不变,翻转,等0,等1。
在这四种运算中,前两个是可逆的,而后两者是不可逆的。

可逆的意思是如果我们知道结果并且知道操作类型,那么我们就能反推得到原来的值。

f(x)=y

即知道y和f,就能反向运算得到x。
比如说知道结果是0,而且进行过翻转运算,那么原来一定是1。

但等0和等1操作就是不可逆的,知道结果是0,而且进行过等0操作,我们仍然无法确定原来到底是0还是1。

向量的张量积Tensor product of vectors

我们用⊗符号表示张量积,它的算法公式是:
\begin{pmatrix}x_0\\x_1\end{pmatrix} \otimes \begin{pmatrix}y_0\\y_1\end{pmatrix}= \begin{pmatrix}x_0\begin{pmatrix}y_0\\y_1\end{pmatrix}\\x_1\begin{pmatrix}y_0\\y_1\end{pmatrix}\end{pmatrix}= \begin{pmatrix}x_0y_0\\x_0y_1\\x_1y_0\\x_1y_1\end{pmatrix}

例如:
\begin{pmatrix}1\\2\end{pmatrix} \otimes \begin{pmatrix}3\\4\end{pmatrix}= \begin{pmatrix}1*3\\1*4\\2*3\\2*4\end{pmatrix}= \begin{pmatrix}3\\4\\6\\8\end{pmatrix}

如果是多个向量连续张量积运算也是类似:
\begin{pmatrix}x_0\\x_1\end{pmatrix} \otimes \begin{pmatrix}y_0\\y_1\end{pmatrix} \otimes \begin{pmatrix}z_0\\z_1\end{pmatrix}= \begin{pmatrix}x_0y_0z_0\\x_0y_0z_1\\x_0y_1z_0\\x_0y_1z_1\\x_1y_0z_0\\x_1y_0z_1 \\x_1y_1z_0 \\x_1y_0z_1\end{pmatrix}

同样的:
\begin{pmatrix}0\\1\end{pmatrix} \otimes \begin{pmatrix}0\\1\end{pmatrix} \otimes \begin{pmatrix}1\\0\end{pmatrix}= \begin{pmatrix}0*0*1\\0*0*0\\0*1*1\\0*1*0\\1*0*1\\1*0*0\\1*1*1\\1*1*0 \end{pmatrix}= \begin{pmatrix}0\\0\\0\\0\\0\\0\\1 \\0 \end{pmatrix}

乘积态Product state

在上一篇【科普】量子计算通识-1的开始我们就介绍了0和1的另一种写法,|0>和|1>这样的向量表示,但如何将多个经典位用向量连续表示呢?如何用向量比特格式表示5?

答案是向量积,我们把它称为乘积态,比如|00>就表示:

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

如果我们设定抛出硬币落地情况有两种可能,或反或正,我们就可以计作【反,正】
向量(1,0)或者写作(100%,0%),我们把它理解为有100%的可能性是【反】,0%的可能性是【正】,当然这相当于判决它就是【反】。
同样,(0,1)相当于判决它就是【正】。

如果我们抛两次会怎样?那就共有四种情况,【反反,反正,正反,正正】,我们可以把这四种情况用四个字母表示【A0,A1,A2,A3】,总之不必纠结每一项都是两次的结果,而是只看做一种可能。
我们再看|00>对应的(1,0,0,0)恰好是判决它属于四种可能中的一种,这和我们用1,2,3,4来计数或者用00,01,10,11来计数是一个道理,只是写法的不同。

我们把四种情况都写出来:

|00>= \begin{pmatrix}1\\0\end{pmatrix} \otimes \begin{pmatrix}1\\0\end{pmatrix}= \begin{pmatrix}1\\0\\0\\0\end{pmatrix}\qquad |01>= \begin{pmatrix}1\\0\end{pmatrix} \otimes \begin{pmatrix}0\\1\end{pmatrix}= \begin{pmatrix}0\\1\\0\\0 \end{pmatrix}

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

这样我们就可以把任意数字写为乘积态或向量位的形式:

十进制的4等于二进制的100即 :4_{10}=100_2

|4>=|100>= \begin{pmatrix}0\\1\end{pmatrix} \otimes \begin{pmatrix}1\\0\end{pmatrix} \otimes \begin{pmatrix}1\\0\end{pmatrix}= \begin{pmatrix}0\\0\\0\\0\\1\\0\\0\\0 \end{pmatrix}

当然这个也可以反写,把一个乘积态向量分解成两个低维独立态Individual state向量,我们把这个过程叫做分解Factor

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

小结

有了这些基础,接下来我们就可以来看量子计算的最基本操作CNOT门了。

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


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


每个人的智能新时代

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


END

上一篇下一篇

猜你喜欢

热点阅读