前沿科技:量子计算

量子计算的理论基础是量子力学,因此理解量子计算之前有必要了解量子力学。
什么是量子?
物理学家费曼曾经说过:“万物是原子组成的,原子都具有波粒二象性” ,量子从这句话引申出来,那就是:量子就是波粒二象性。二象性说的是一个东西同时拥有两种性质,所有的粒子,除了具有点粒子的性质之外,还同时具有波的性质,这就叫做波粒二象性。有一个方程同时具有这两个视角,它就是薛定谔方程。

什么是量子叠加态?
从波的角度来看,一束波可以同时处于好几个状态,比如在听音乐的时候,我们可以同时听出好几种不同的乐器声,这种状态叫叠加态。宏观世界不存在这种状态,在微观世界,在被观测之前,可以没有一个固定的状态,是几种状态的叠加态,也就是:“既…..,又……”。粒子,既在这里,也在那里。

什么是量子纠缠?
量子纠缠最早由爱因斯坦提出,称之为:“鬼魅般的超距作用”。对一个粒子进行测量,另一个粒子无论在哪里,都会瞬间响应,中间不需要任何时间。纠缠的物理状态,可以相同也可以相反,而且2个粒子可以纠缠,3个也行,N个粒子都可以。

有了上面的基础,我们回过头来看看量子计算。量子计算之所以威力巨大,来源于量子叠加和并行演化以及量子纠缠。
量子比特和并行演化
相对于量子力学中的粒子,我们把量子计算中的粒子成为量子比特。量子比特的状态在同一时刻,既可以是1也可以是0。注意,这里有一个关键词:同一时刻。在经典计算中,比特只能是0和1中的一种,而不能同时是0和1。同时是0和1有什么好处呢?给定N个量子比特,可以同时表示2的N次方状态,而经典计算同时只能表示2的N次方种状态中的一种,这是一个质的区别。举个例子,在同一个时刻,8位的经典比特,只能同时表示00000000~11111111中的一种,而量子比特可以 同时表示00000000~11111111,存储容量随着量子比特的增多指数级的增长!
在这个基础上,如果我们能够设计算法,把2的N次方种状态同时进行演化,那算力的提升相对于经典计算机就是质的飞跃了。举个例子,我们计算1+2+3+4+5+6+7+8+9+10,经典计算有两种方式,一是串行计算,先计算1+2得到3,然后3+3得到6,然后6+4得到10,然后继续跟后面的数相加得到结果,二是并行计算,第一轮同时计算1+2,3+4,5+6,7+8,9+10,第二轮对上一轮的结果两两同时计算,第三轮类似。串行计算的算法复杂度是O(n),并行计算的算法复杂度是O(logn),有没有O(1)的算法呢?有,那就是量子计算,在8个量子比特的环境中,一共有256(2的8次方)种状态,把其中10种状态编码为1~10,其他为0,可以设计一种算法,把这十种状态经过这个算法之后演变为结果(即55)。
由于算法复杂度是O(1),因此不管规模(n)多大,复杂度都是常数,这是了不起的进步!

数据同步
熟悉数据库的同学都知道了,在HA场景下,会有主备两个数据库,主库需要把增量数据通过发送WAL日志或者其他方式同步给备库。在量子计算下,我们可以设置主机和备机的量子为纠缠状态,主机变化的时候备机自动变化,而这中间无需传输任何的数据,时间却可以是实时同步!

上面两个特性够激动人心了吧?不过等到真正商用还需要很长的时间,目前的量子计算仍然只是专用计算而做不到通用计算,而且硬件上面仍存在非常多的困难需要克服,让我们拭目而待吧。

请使用浏览器的分享功能分享到微信等