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

作者: zhyuzh3d | 来源:发表于2019-07-10 20:40 被阅读10次

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


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

    经典位的矢量表示

    经典(Classic)计算机是基于0和1进行计算的。

    0和1也可以叫做真假(True/False)、开关(On/Off)、正反、阴阳...总之是两个相对的值,我们称之为布尔值(Boolean)

    0和1都是一维空间的标量,就是只有一条横坐标上的两个点。

    0和1都是一维空间的标量

    我们强行把这个一维坐标变为二维平面,那么0和1就有了新的表示法。

    二维空间中0和1的分布

    在上图中,我们以竖向作为值,那么(0,1)对应值为1,(1,0)对应值为0。
    如果我们只考虑绝对高度,那么(-1,0)对应值0,(0,-1)对应值1。

    用小括号的写法太复杂,我们可以简写为:

    \begin{pmatrix}1\\0\end{pmatrix} \Rightarrow |0> \Rightarrow 1 \qquad \begin{pmatrix}0\\1\end{pmatrix} \Rightarrow |1> \Rightarrow 0

    即 |0> 等同(1,0)表示值1,|1>等同(0,1)表示值0

    另外一种记忆方法是,|0>表示二元数的第0位是1(第1位就是0了),即(1,0);而|1>表示二元数的第1位是1(第0位就是0了),即(0,1)。

    总之这里的右尖符号>表示这是个二维向量数。

    矩阵乘法公式

    对于第二个乘数只有一列的情况下,矩阵相乘其结果的第n项,等于第一个乘数的第n行的每个数字,乘以第二个乘数对应的数字,然后结果相加。如下:

    \begin{pmatrix}a_0,a_1\\b_0,b_1 \end{pmatrix} \begin{pmatrix}m_0\\m_1 \end{pmatrix}= \begin{pmatrix}a_0m_0+a_1m_1\\b_0m_0+b_1m_1 \end{pmatrix}

    \begin{pmatrix}a_0,a_1,a_2\\b_0,b_1,b_2\\c_0,c_1,c_2\\ \end{pmatrix} \begin{pmatrix}m_0\\m_1\\m_2 \end{pmatrix}= \begin{pmatrix}a_0m_0+a_1m_1+a_2m_2\\b_0m_0+b_1m_1+b_2m_2 \\c_0m_0+c_1m_1+c_2m_2 \end{pmatrix}

    记忆方法,可以只看每一行,第一个矩阵每行用加号相连,如a_0,a_1,a_2变为a_0+a_1+a_2,然后再把第二个矩阵的每一项插到每个加数上,变为a_0m_0+a_1m_1+a_2m_2

    如果第二个矩阵不止一列,就稍微麻烦些,公式如下:

    \begin{pmatrix}a_0,a_1\\b_0,b_1\end{pmatrix} \begin{pmatrix}m_0,n_0\\m_1,n_1\end{pmatrix}= \begin{pmatrix}a_0m_0+a_1m_1,a_0n_2+a_1n_1\\b_0m_0+b_1m_1, b_0n_0+b_1n_1\end{pmatrix}

    注意每行的规律,从(a_0,a_1)变为(a_0+a_1,a_0+a_1),再变为(a_0m_0+a_1m_1,a_0n_0+a_1n_1)

    单位矩阵

    完全由0和1组成的矩阵,并且从左上角到右下角这条斜线上的数字都是1,比如下面三个都是单位矩阵:
    \begin{pmatrix}1,0\\0,1\end{pmatrix} \qquad \begin{pmatrix}1,0,0\\0,1,0\\0,0,1\end{pmatrix} \qquad \begin{pmatrix}1,0,0,0\\0,1,0,0\\0,0,1,0\\0,0,0,1\end{pmatrix}

    为什么叫单位矩阵?对于标量来说,单位1乘以任何数都仍然是任何数。单位矩阵也具有这个性质,比如:

    \begin{pmatrix}1,0,0\\0,1,0\\0,0,1\end{pmatrix} \begin{pmatrix}7\\2\\8\end{pmatrix}= \begin{pmatrix}1*7+0*2+0*8\\ 0*7+1*2+0*8\\0*7+0*2+1*8\end{pmatrix}= \begin{pmatrix}7\\2\\8\end{pmatrix}

    第0行(1,0,0)其实就是只要(7,2,8)的第0项即7,在结果中02和08就是把2和8去掉。同样第1行(0,1,0)就是只要(7,2,8)中的第1项即2,去掉7和8;第2行(0,0,1)就是只要第2项的8。

    语言表述就是,把第0项留下做第0项,第1项留下做第1项,第2项留下做第2项....所以等于没变。

    这种情况对于多列矩阵同样有效:
    \begin{pmatrix}1,0\\0,1\end{pmatrix} \begin{pmatrix}6,3\\2,8\end{pmatrix}= \begin{pmatrix}1*6+0*2,1*3+0*8\\0*6+1*2,0*3+1*8\end{pmatrix}= \begin{pmatrix}6,3\\2,8\end{pmatrix}

    翻转矩阵

    如果我们把最后一项留下做第0项,把倒数第二项留下做第1项,...以此类推,就能够把整个矩阵上下颠倒过来。

    窍门就是不使用左上到右下都是1的单位矩阵,而是使用右上到左下都是1的新矩阵:

    \begin{pmatrix}0,0,1\\0,1,0\\1,0,0\end{pmatrix} \begin{pmatrix}7\\2\\8\end{pmatrix}= \begin{pmatrix}0*7+0*2+1*8\\ 0*7+1*2+0*8\\1*7+0*2+0* 8\end{pmatrix}= \begin{pmatrix}8\\2\\7 \end{pmatrix}

    \begin{pmatrix}0,1\\1,0\end{pmatrix} \begin{pmatrix}6,3\\2,8\end{pmatrix}= \begin{pmatrix}0*6+1*2,0*3+1*8\\1*6+0*2,1*3+0*8\end{pmatrix}= \begin{pmatrix}2,8\\6,3\end{pmatrix}

    我们还可以利用特殊的01矩阵来实现局部翻转(下例只翻转最后两个):

    \begin{pmatrix}1,0,0\\ 0,0,1\\ 0,1,0 \end{pmatrix} \begin{pmatrix}7\\2\\8\end{pmatrix}= \begin{pmatrix}1*7+0*2+0*8\\ 0*7+0*2+1*8\\ 0*7+1*2+0*8 \end{pmatrix}= \begin{pmatrix}7\\ 8\\2 \end{pmatrix}

    对矩阵完全翻转的操作我们可以使用符号﹁表示:

    \begin{pmatrix}7\\2\\8\end{pmatrix}= ﹁\begin{pmatrix}8\\2\\7 \end{pmatrix}

    向量化(矩阵化)的布尔比特是量子计算的基础,后续文章我们将逐渐进入量子计算的实现方法和算法原理。

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


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


    每个人的智能新时代

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


    END

    相关文章

      网友评论

        本文标题:【科普】量子计算通识-1

        本文链接:https://www.haomeiwen.com/subject/orphkctx.html