量子计算机是如何运作和促进人工智能的尼?先讨论理论知识,然后我们建立一个非常简单的算法。量子在物理中代表着相互作用中物理实体的最小单位,例如一个光子是光的最小单位。量子计算机是一种使用量子力学的计算机,它能比普通计算机更高效地执行某些特定的计算。
目前一台普通的计算机是用一系列的0和1来存储信息的。不同类型的信息,比如数字、文本和图像都可能用这种方式来表示。0和1系列中的每个单位被称为比特(bit,中文也叫位),因此一比特可以被设置为0或1。
量子计算机并不是用比特来存储信息的,而是用一种叫量子比特(qubit,quantum bit的简写,中文也叫量子位)的东西。每个量子比特不仅能设置为1或0,还可以设置为1和0。使用在接近绝对零度时,具有磁悬特性的粒子,称为Q比特而不是用比特来表示除了可以表示0和1比特,还可以同时表示两种状态。
一个用来理解量子计算机的例子 ,现在,假设你现在经营一家旅行社,你需要把一群人从一个地方运送到另一个地方。为了简单起见,不妨假设你现在需要运送的只有3人——Alice,Becky和Chris。并且假设你为此预定了2辆出租车,你得分清楚谁乘坐哪一辆出租车。另外,你知道谁和谁是朋友关系,谁和谁是敌人关系。这里,我们认为她们的关系是这样的:
◇ Alice和Becky是朋友
◇ Alice和Chris是敌人
◇ Becky和Chris是敌人
现在你要将这3个人分配到2辆出租车,并要达到下面的目标:
◇ 最大化共用一辆车的朋友对数
◇ 最小化共用一辆车的敌人对数
为了用普通的非量子计算机来解决这个问题,你首先需要弄清楚如何用比特存储相关的信息。我们先标识这两辆出租车为出租车#1和出租车#0。然后,你可以用3个比特表示谁进入哪辆车。例如,我们可用0和1来表示:
◇ Alice乘坐出租车#0
◇ Becky乘坐出租车#0
◇ Chris乘坐出租车#1
由于每个人都有两个选择,因此有2*2*2=8种组合来把她们分配给两辆车。下面是所有可能的组合:
A | B | C
0 | 0 | 0
0 | 0 | 1
0 | 1 | 0
0 | 1 | 1
1 | 0 | 0
1 | 0 | 1
1 | 1 | 0
1 | 1 | 1
现在,用普通计算机我们如何来判断哪一个组合是最佳组合呢?为此,让我们来定义如何计算每个组合的得分。这个得分将代表每个组合达到前面提到的两个目标的程度:
让我们简单地这样定义我们的分数:(给定组合的得分)=(#共用一辆车的朋友对数)-(#共用一辆车的敌人对数)。例如,假设Alice,Becky和Chris都乘坐出租车#0,可以用3个比特表示为111。在这种情况下,只有一对朋友共用一辆车——Alice和Becky。然而,有两对敌人共用一辆车——Alice和Chris,Becky和Chris。所以,这个组合的总分是1-2 = -1。
A | B | C | Score
0 | 0 | 0 | -1
0 | 0 | 1 | 1 <- 最佳组合之一
0 | 1 | 0 | -1
0 | 1 | 1 | -1
1 | 0 | 0 | -1
1 | 0 | 1 | -1
1 | 1 | 0 | 1 <- 最佳组合之一
1 | 1 | 1 | -1
如你所见,这里有两个正确的组合——001和110,都达到了1分。这是个相当简单的问题。然而随着越来越多的人参与到这个问题中来,用一台普通计算机就很难解决这个问题。所以,如果有100个人,我们需要遍历:2¹⁰⁰ ~= 10³⁰ = 一百万百万百万百万百万个组合。要遍历这么多的组合,对普通计算机来说是不现实的。我们如何用量子计算机来解决这个问题呢?
然而,使用量子计算机,3个量子比特可以同时表示所有8个组合。关于量子比特这个词的确切含义存在争议,但我的看法是这样的。首先,检查这3个量子比特中的第一个量子比特。当你同时将它设置为0和1时,就像是创建了两个平行世界。在平行世界中,其中一个的量子比特被设置为0,另一个的量子比特被设置为1。个世界相当于一个普通计算机,理解这点很重要。现在,如果你把第二个量子比特也设为0和1呢?然后,这就有点像创造了4个平行世界了。在第一世界中,两个量子比特被设置为00,第二个是01,第三个是10,第四个是11。类似地,如果你将这三个量子比特都设置为0和1,你就创建了8个平行世界——000,001,010,011,100,101,110和111。这是一种奇怪的思考方式,但它是解释量子比特在现实世界中的行为的正确方式之一。现在,当你对这三个量子比特进行某种计算时,你实际上是在同时对这8个平行世界进行同样的计算。因此,我们可以同时计算所有组合的分数,而不是按顺序遍历所有这些可能的组合。有了这个特殊的例子,理论上,你的量子计算机可以在几毫秒内找到最好的组合, 即我们之前看到的001或110。实际上,在运行量子计算机时会存在错误。所以,它可能会找到次优解,第三优解,等等。随着问题变得越来越复杂,这些错误会变得越来越突出。因此,在实践中,你可能希望在量子计算机上数十次甚至数百次地运行相同的操作,然后从你得到的结果中选出最好的。
当有3个人需要分配给2辆车时,我们需要在量子计算机上执行的操作次数是1。这是因为量子计算机会同时计算所有组合的分数。当有4个人的时候,操作次数仍然是1。当有100人的时候,操作次数仍然是1。量子计算机在同一时间计算所有2¹⁰⁰ ~= 10³⁰ = 一百万百万百万百万百万个组合的分数只需一次操作。正如我之前提到的,在实践中,最好是运行量子计算机几十次或几百次,然后从得到的结果中选出最好的结果。然而,它仍然比在普通计算机上运行同样的问题并且必须重复同样类型的计算一百万百万百万百万百万次要好得多。
能否在传统计算机上实现两种状态的叠加尼?只需要使用2个普通的比特而不需要使用Q比特?答案不行。对于量子物理学家,除了状态的叠加还有纠缠的概念。如果系统中有一个不止一个Q比特,这些粒子之间并不是相互独立的而是纠缠在一起。因此在一个有两个Q比特的系统中,某个Q比特的输出结果可以告诉你另一个Q比特的测量结果。Q比特粒子可以相互影响,即时他们在空间中距离很远,爱因斯坦称纠缠为远距离的幽灵行为。这意味着你有多个Q比特系统,不能仅仅描述单个Q比特的状态,还需要描述 Q比特之间的相关性。随着Q比特个数增加相关性的数量也随之呈指数增加。因此只有一个三百个Q比特的系统,你还需要超过宇宙中所有可见原子数目来描述。由于我们无法使用传统计算机写下有几百个Q比特系统的所有信息,也许一台运行Q比特的计算机性能将超过传统计算机。这就是人们认为量子计算机很有发展前景。
量子计算应用物理的优越性来实现更加高效的算法,Q比特取代了传统的比特,组成了量子运算中的基础单元,能够同时表示0和1,从而提升了运算能力。