量子计算

                                                                                      《目录》

量子计算的性质


量子计算的性质

量子计算是采用量子力学原理进行计算的。

量子的特性:

  • 量子叠加(既...又...)
  • 量子纠缠(命是大家的,一个量子挂了,其他量子一起 Over~)

量子叠加

比如:

  • 一只量子猫既是死的,又是活的;
  • 一个量子乒乓球既在这边,又在那边;
  • 一个量子比特可以既是 1,又是 0;

既...又...,这种特殊的状态被称为【量子叠加态】,是在量子力学的俩大性质之一。

在我们的认知中,一只猫不可能既是死的又是活的;一个乒乓球不可能既在这里,又在那里;一个比特要么是 1,要么是 0。

但在量子力学里,是可以的。这是一个微观世界和我们熟悉的宏观世界完全不同。


当然,世界上量子状态的猫是不存在的,但是量子比特是真实存在的。

我们在量子计算中就是在操控量子比特,量子计算过程就是量子比特叠加态的演化过程。

而且不只是能让 0 和 1 同时存在,还可以控制量子比特叠加态中 0、1 之间的占比,可以是【30%的0】和【70%的1】,也可以是【99%的0和1%的1】。

的确是有点特别,那么量子叠加有什么具体的作用吗?

量子的叠加主要用于提升计算机的存储能力,这也是提升计算能力的关键。

比如,为什么一些人口算呢 ?

当然是用空间换时间啊,他们不像我们只背 9*9乘法表,他们背的是 19*19 甚至更多。因为存储能力增强了,他们的计算速度也就大大提高了。

说到这里您可能会很奇怪,增加存储能力还不简单,为什么一定要用量子呢?

如果传统计算机要增加存储能力,就需要增加比特总数,在以前人们是把元器件越做越小,以更小的芯片实现更多的比特总数。

可现在这种方法不行了,因为传统元器件的工艺已经制作到极限了。

增加比特总数只能追加物理资源,物理资源的增加其实是用资源换计算能力。

一个传统计算机如果只有 8个 比特,那TA的存储能力最大容量是 2^{8}

由于量子叠加性,每一个量子比特同一时刻可以处在两个不同的状态上,关键就在于这个“同时”。

也就是说一个量子比特同时可以当做两个经典比特来用。

什么意思呢??

以数苹果举例子,假如有两个人,一个人的 10根 手指是普通手指,另一个人的 10根 手指是量子手指。

如果在他们面前只有一份苹果的话,那么不论是普通手指还是量子手指都没有差别。

但是如果是两份苹果那就完全不同了,普通手指只能表示其中一份,如果还想表示另外一份,那么就必须增加资源。

他就需要再叫一个人过来,用那个人的手指表示第二份苹果。

这个时候量子手指就能显出优势来了,因为量子手指有叠加状态,就可以同时既即表示第一份苹果的个数,又同时表示第二份苹果的个数。

最厉害的是,就算是有 1024份 苹果摆在面前,10根 量子手指也能同时表示。

经典手指的话就必须找 1024个 人一起来才能完整表示了。

n个 量子比特的信息容量比 n个 经典比特大了 2^{n}方倍。

整个宇宙原子的数量是 2^{300} 这么多,如果用量子比特表示的话,只需要 300个 就能数清宇宙所有的原子了。

目前,一台量子计算机大概只要 50比特,科学界最理想的预测是十年达到上百量子比特数。


量子纠缠

量子叠加会极大的提升计算机的存储能力,而量子的性质可以实现“并行计算”。

传统计算机提高性能的方法,也是追加物理资源,1个处理器慢了就用 2个、4个、8个。

现在深度学习用的 GPU 就是这个原理,一个高端的 GPU 的核心能达到 4000个。

可这种依靠物理资源的方法并不能持续,举个例子。

现在您要走一个迷宫,要尽可能快地找到出口。您是需要一个岔路一个岔路地试。如果遇到了死胡同还要退回来重新走。

用多核的方式呢,就相当于不只是您一个人在走迷宫了,而是您找了几个小伙伴一起走。

而后安排好,这个人走这边那个人走那边。这肯定可以加快找出口的速度。但是这些人不能白走啊,即便他们是朋友不用给钱,请顿大餐也是必须的。对应到计算机里面就是更多核心要消耗更多的物理资源。

而且这样的方法提升的速度也非常有限。第一个分岔路,需要 2个 人,如果分岔路后面又有分岔路呢,就需要 4个 人了,而后是 8个 人、16个 人。这可是指数增长,不需要多,在后面第 30个 路口的时候,需要的人数就已经赶上全中国的人口了。

在量子力学的规律下,这次走迷宫的不是普通人了,而是量子孙悟空。

他根本不需要其他小伙伴,他自己就是许多分身的叠加。走迷宫的时候,他只需要一施法,变出分身来,每条岔路都派一个量子分身去。

这样所有的分岔路就能够被同时探索到,只需要走一次,就可以找到迷宫的出口。这就是量子叠加态的并行演化。

传统计算遇到的问题,就是指数增长的问题。

面对的问题规模虽然是 1、2、3、4……这样线性地增加,但是解决这个问题对计算能力的需求却是 2、4、8、16、32、64、128……这样指数地增加。

如果还想解决这个问题,那就需要增加计算资源;但经典计算机,资源只能线性增加,根本追不上问题的增长速度。

而量子计算,随着量子比特数量的增大,信息容量也会指数增长,并且并行演化。

量子纠缠最广泛的应用场景应该是:保持数据的一致性。

命是大家的,一个量子挂了,其他量子一起 Over~

如果把 n 个量子制备为纠缠态,那修改 n个量子的某个,所有量子都会跟着修改,在一些场景特别有用。


量子算法

也许您最近看到了量子计算的新闻,感觉发展速度非常的快!

比如谷歌就实现了“量子霸权”,“量子霸权”是科研人员提出的一个指标,意指对传统计算机的碾压。

那是否量子计算的时代就要到来了呢?

大概没有的,“量子霸权”只是一个指标,还是某个单一问题的指标,虽然计算能力很厉害,但没有实用价值。

因为目前硬件开发难度大、量子比特数不够,哪怕,硬件在十年内弄好啦、量子比特数上来了,量子计算机也不太可能实用。

计算机硬件只能算是一把可以屠龙的宝刀,就算是宝刀在手,如果没有一套可以配合的屠龙刀法,仍然没有用。这个屠龙刀法就是算法。

量子计算因为有叠加和纠缠俩大性质,因此算法一定要能和物理系统匹配才行,如果匹配程度不高,那量子计算机也没啥用。

目前匹配程度最好,也是最出名的算法叫“Shor”,主要是用于破解 RSA 加密算法。谷歌实现“量子霸权”时的量子比特是 53,这距离使用 “Shor” 算法还有很远的距离。

具体请见:《密码学》中的 RSA、量子加密章节,里面有具体的算法分析、原理。

在量子纠缠中,量子计算提高运算速度,主要是通过增加了并行性做到的。

比如,您要计算【 “1000+10+10+10” 】等于多少,就可以把这个问题拆分成两个小问题,分别是前面两个数相加【1000+10】,和后面两个数相加【10+10】。

这两个小问题是可以同时计算的,这样就可以节省时间。

这是 4个 数,要是 40000个 数相加,也是这样拆分和并行计算的话,那是会大大提升计算速度的。

但是,并不是所有的问题都可以被并行解决的。

比如,【1000÷10÷10÷10】,最后答案等于1。

这个问题就不能简单地拆分成两个小问题,先计算 “1000÷10”、“10÷10”,而后再合并。

这样的计算结果是100,肯定不对。所以对于连续除法,就不能并行了,只能老老实实地一个一个地计算。


“Shor”算法匹配程度最好是因为TA并不是去直接去做分解,而是利用了数学规律。

通过数学规律可以把分解大数问题转化成了另外一个等价的问题。

而且这个等价的问题,TA的核心环节可以充分利用量子计算机的并行计算优势。

正是因为这样,这个破解密码的问题才能被量子计算机轻松解决掉。

多补充一下,其实刚才讲到的除法运算,如果经过数学处理的话也是可以并行解决的。

前面的举例只是帮助您理解,并不是所有的问题都能简单地找到并行处理的方法。这就是开发量子算法困难的地方。 


计算的本质

计算机的本质是一个物理系统的演化。

这个物理系统所遵从的规律,就是计算的法则。

物理系统的规律是否更基础更底层,决定了计算机的算力是否强大。

所以,经典计算机的极限,其实就是经典物理学的极限;那量子计算机的极限,自然就是量子力学的极限了。

举个例子。

计算机最早是中国的算盘,这个算盘TA有输入、运算、输出的功能。

计算的本质也是:输入+运算+输出。

这么一个计算过程我们已经知道了,可如何实现TA呢 ?

实现TA的肯定是一套物理系统,而这个物理系统的性质就会决定算力的大小了。

比如,电子计算机遵循的是经典电磁规律,通过控制电子来实现计算的输入、运算和输出。

我们对电磁规律的掌控能力非常强,所以几乎所有的计算问题都可以被投射到电子计算机的物理系统里,而且处理速度还非常快。

其实这套实现计算的物理系统,不一定要源于“物理学”,也可以是“生物学”等等各种领域。

除了量子计算机之外,还有神经网络计算机、DNA计算机、光子计算机,他们来源于不同的领域、不同的规律,但都能实现计算的本质。

举个例子,如果您对计算机程序有所了解的话,就会知道,寻找多个城市之间的最优道路是非常复杂的问题,即便用我们现在的计算机也很难处理。

但是,有些情况如果利用大自然的力量,很容易就能解决。

在日本就有科研人员,利用黏菌做了一个实验。黏菌是一种微生物,它们有种习性,能在不同位置的食物之间建立起食物网络。

于是实验人员就在一个,和日本关东地区形状相同的培养皿里放食物,用食物模拟车站。其中最大块的食物当做是东京站,其他小一些的食物当做是一些其他车站。

而且还利用了黏菌不喜欢光照的特性,用光斑来模拟现实中的高山和湖泊。经过一段时间自由演化,黏菌形成的食物网络,竟然与现实中关东铁路网十分相似。

看,黏菌、食物还有光斑的初始位置,就是计算的输入。

黏菌的演化历程就是计算的过程。

最后形成的食物网络,就是计算的结果。

这是一个生物学实验没错,但TA同样也是一台计算机。

请保留脑洞,理解计算的本质。

  • 第1代:电子管数字机      (体积大、功耗高、可靠性差、每秒数千次至数万次、价格昂贵
  • 第2代:晶体管数字机      (体积缩小、能耗降低、可靠性提高、每秒数10万次,可高达300万次
  • 第3代:集成电路数字机   (每秒数百万次至数千万次、价格进一步下降
  • 第4代:大规模集成电路机(体积小,价格便宜,使用方便

分析实现计算的物理系统,我们追求的是 体积小、成本低、运算次数多、可靠性好、能耗低。

实现量子计算的物理系统方案也有很多:

  • IBM、Google,选择的是超导电路方案,因为这个方案可以发挥他们在微加工方面的技术积累;
  • 微软公司则是投入巨资,选择了拓扑量子计算的方案。因为他们相信拓扑器件依靠自身的结构特点,能够抵御外界噪声;
  • 除了超导和拓扑量子之外,在实验室里面还有用光子实现的方案、用离子阱实现的方案等等。

具体这些方案的名字我们可以不用在意,只需要知道利用这些物理系统是可以制备和操控量子比特的就行。

反正,现在对于这些物理系统的研究还在发展阶段,最终到底哪一个方案会胜出,现在谁也无法预测。

但目前评估一台量子计算机的通用方法是看TA的量子比特数。


量子输入

我们先看看传统计算机是怎么实现输入的。

比如,计算 1 + 0。

  • 将输入的 1、0 转为二进制,分别保存到数据区;
  • 将 + 号也转为二进制,像加减乘除的运算保存到指令区;
  • 这时,【计算模块】会提取俩个数据,问一下【指令区】要做什么,而后就得到结果了。

因为量子计算有自己独特的风格,所以如何把问题映射到量子系统里呢 ?

  • 将输入的 1、0 转为二进制,因为量子比特有叠加态,叠加数据区的一个量子比特能同时表示 1 、0;
  • 将 + 号也转为二进制,因为量子比特有叠加态,叠加指令区的量子也可以同时实现多种运算;
  • 这时,怎么让计算模块知道【叠加指令区】发的指令是什么呢?

传统计算机之所以能做到,是因为各种指令在做硬件的时候就已经固定在硬件里了。

但因为量子的叠加态,硬件的设计也随之复杂,不知道您有没有更简洁的方法!

其实所有的运算操作都是通过改变硬件的物理状态来实现的,比如改变电流或者电压。

这种条件的改变,是可以让量子比特的叠加态发生演化的。

比如说,我们做了实验,发现只要把电流设置到特定值就能完成加法。

就比如说把电流设置到 0.1A 吧,系统就能让 1 和 0 是 50% 的叠加态发生演化,最后变成了代表 1 的状态概率是 100%,其他状态的概率都是 0 的这样一种叠加态。这就相当于完成了 1+0=1 的运算了。

还可以做更多的实验,如乘法是把电流设置成 0.3A,就可以让 1 和 0 各 50% 的叠加态演化成 0,当然了,找到的这个条件是不是只能算1+0,还是换成任意两个数相加结果都依然正确,这是要经过严格的理论和实验证明的。

真实的量子计算过程要更复杂得多,这里只是帮您理解量子计算过程是什么样子的。

最后把找到的这些硬件条件编成一个对照表:

  • 1 对应的是把电流设置成 0.1A,这样就可以完成加法运算。
  • 3 对应的是把电流设置成 0.3A,这样就可以完成乘法运算。

每次进行运算的时候,去看一下指令区,就能知道是要做什么运算了。

因为“1+0”这个例子只有2个数字来计算,所以您可能感觉不到量子计算的威力。

如果不是 2 个数字而是 10个 或更多,那就不一样了。比如说 1+2+3……一直加到 10,在经典计算系统里面,只能是先算 1+2,而后把中间结果存下来,然后再和 3 相加,再把中间结果存下来再和 4 相加,直到最后把 10个 数全部算完。

这要是在量子计算系统里面,10个 数字可以全部叠加在一起,只需要改变一次系统状态就会演化出最后结果,没有中间过程。

每一个问题被投射到量子计算机的时候都会先把问题分成数据和指令。

其中硬件会根据不同的指令控制数据进行演化。

在量子计算里面,不只可以把数据部分实现成叠加态,指令部分也能做成叠加操作的状态。


量子输出

输出这块是量子计算方面最独特的,因为量子有叠加态,一个比特既是 1 又是 0。

可读取出来肯定不会是这样,只会是 1 或 0,不会并存。

在这个计算过程中,输入的比特是处于量子叠加态的,运算的时候也是保持着叠加态来进行并行演化的,最后运算完最终的状态仍然处于量子叠加态。

所以,准确的读取就是一个技术活。

30%的0和70%的1 是在量子计算里,可读取时叠加态就会消失,会变成 100%的0 或 100%的1,读取出来到底是 0 还是 1,这个过程是随机的,无法预测。

人们想的办法是:用统计得到各种情况的概率。

读取一次我们很可能得到的是一个随机值,可如果读取 9000 次,那么统计结果大概是 【2700个0】和【6300个1】。

这样就把量子叠加态的信息读取出来啦。

这里就搞出一个问题了,读取一个量子计算的结果都这么麻烦,那读取再多一些量子计算岂不是很慢很慢~

这就要回到量子计算机的定位上了,量子计算机专注于解决传统计算机无法解决的大规模问题(时间复杂度达到指数级)。

比如:

  • 2019年4月人类拍摄到的第一张黑洞照片,拍摄的数据用现在最好的电子计算机也要算两年,才能把照片“冲洗”出来。这样的计算机限制了我们探索更大的宇宙;
  • 算法界著名的“旅行商问题”
  • 密码界无法破解的“RSA”
  • ......

如果我们面临的是【规模为 n 的指数级增长问题】,如果用传统计算机需要计算 2^{n} 次(指数爆炸?);但量子计算机还是只需要计算 9000 次,因为 9000 次是一个常数,因此在解决 指数级增长问题 时,传统计算机的计算速度是无法与量子计算机相比的。

发布了129 篇原创文章 · 获赞 324 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_41739364/article/details/102773500