围棋作为唯一的一种电脑下不赢人的大众棋类,是何原因导致?以及量子计算机出现后有无可能?围棋没有深入了解过,真的有那么难以及那么多变化么?以及量子计算机出现后极大的数据处理量能否解决?
首先我要说明的是没有哪位科学家试图用量子计算来下围棋,至少目前还没有看到。题主的这个问题和问的另一个量子计算机会不会取代今天的计算机算法技术?互联网有很强的相关性,所以我就一起回答了,好让看到的人有一个整体的认识。
观点:量子计算机不会取代传统的算法,但是有了量子计算机之后,一部分传统算法就失去了存在的价值;计算机迟早会在围棋上下赢人类的,跟量子计算机没有关系。
另外题主的「量子计算机出现后极大的数据处理量」基本就是错误的说法,把量子计算想的太美好了。
现在已经有叫Many Faces of Go的程序能在开局前先放7个子的情况下战胜专业的人类棋手了,虽然优势不太大,只有4.5分的差距。
围棋计算机目前不能像深蓝一样战胜人类,主要原因在于围棋本身的复杂性,几个回答也都有提到。
不考虑强人工智能,我们要让计算机下围棋采用的是蒙特卡罗树搜索(MCTS)的办法。比如现在处于局面A,要让计算机决定下一步的走法,根据围棋规则,下一步的走法是确定的,到达A1,A2,A3等不同的局面。
MCTS的办法就是这样的,以A1为起点,随机决定下一步黑白双方的走法,再下一步还是随机走,直到计算机的资源耗尽或设定的值达到,然后判定是赢还是输,输赢的情况就被添加到A1的胜率中,然后重新以A1为起点,再乱走一遍,这样A1的胜率就改变了,然后又是一遍.....直到设定的次数,这样A1就有一个胜率了,然后针对A2又同样地来,A2也有一个胜率.....然后每一个局面都有一个胜率了。
是不是很简单粗暴?但这目前也是大多数程序的基本思想。为了增强计算机赢的概率,我们还要用到Rapid Action Value Estimation(Rave),对于以局面A1为起点的随机走棋,如果最终是赢,那么我们把这个过程中下到棋子的每一个位置都加上一个点数,这样我们得到了A1的胜率和每一个位置的价值,但是A1其实也是下棋的位置,对于A2,A3...也是同样,于是我们得到了每一个位置的胜率和「价值」。
继续决定下一步的走法,计算机就可以参考胜率和「价值」来走。对于胜率来说,如果计算机的10次尝试中如果胜了8次,胜率80%,但另一个尝试了100次,赢了70次,胜率70%,一般地认为,应当采用赢的次数最多的走法,虽然70%看起来胜率更低。
还是很简单粗暴对不对?以这种方式下不赢人类,我觉得大抵是很正常的。感觉上就几乎是随机的办法。不采用全部搜索的办法就是因为计算机的性能不够,退而求其次用蒙特卡罗方法。
人类当然不可能像计算机一样去分析没一种可能性,但是我们有智能啊,智能中最重要的能力是什么,模式识别啊,一张图片,计算机看到的是1001110100........对于人类来说,我们看到的就是一张图片,「图片」就是一种模式。对于一个棋局,人类可以看出其中的模式,但计算机就不行,所以就只能用穷举或随机的办法,如果考虑到人工智能呢?人工智能我就不掺和了:为什么最近有很多名人,比如比尔盖茨,马斯克、霍金等,让人们警惕人工智能?-谢熊猫出没注意-知乎专栏,用人工智能的办法来下围棋,那战胜人类就是分分钟的事,只是目前没有很好的办法让计算机拥有智能。
上面说不采用全部搜索的办法就是因为计算机的性能不够,那要是计算机的性能够了,足以在每秒钟之内分析完所有的可能性,那当然战胜人类就是分分钟的事。所以题主可能想,量子计算机会怎么样,它不是性能很强嘛。我估计题主认为「量子计算机有很强的数据处理能力是来源于大数分解问题,传统计算机永远也算不出来,量子计算机就算出来了,所以量子计算机处理速度肯定很快」。
还真不是这样的,量子计算机分解大数并非因为处理速度很快,量子计算机分解大数的时候并不像传统计算机一样分析了每一种可能性。
且听我道来。
量子计算中最重要的算法是大因子分解的Shor算法,传统算法的基本思想就是把每一种可能尝试一下,发现,呃,好多可能性呀,几个世纪都算不完呢,那就用一些办法过滤一下,减少要分析的可能性的数量,最好的传统算法普通数域筛选法(GNFS),需要
步计算出来,但Shor算法需要的
个量子逻辑门就可以完成操作。
Shor算法的基本思想就是,用一个量子处理器同时计算了所有可能性,但是所有的结果是纠缠在一起的,要想得到结果,只能得到一个诶,因为一测量就破坏量子态了。要是得到了结果,验证了一下,发现,好像不对呢,所以,就换一个再来嘛,还是不对,再换......于是,只要有足够多的处理器,总有一个是正确的。
简单粗暴。
要是运气好,说不定第一个算出来的就是正确的。要是运气不好……啊哈哈……不过幸好在操作中,我们可以通过一些办法使运算了一定次数后成功的概率无限接近1。
用另外一个例子来说量子计算的“同时”,假如我们现在要计算一个10^1000位数与一个10^1000位数的乘积,量子计算可以一次计算出所有10^1000位数之间的乘积,但是不好意思,这些结果是纠缠在一起的,您要测量一下,量子态坍缩了,就得到了所有结果中的任意一个,没准得到了5201314。我想,没人想用量子计算机干这事。
量子计算还有一个很重要的应用是Grover量子搜索算法,在N个无结构数据中搜索一个给定的数据,传统算法的时间复杂度,计算机只能从头到尾挨个查询,通过量子算法可以使时间复杂度降低到。
量子计算用于傅里叶变换也是很有用的。
量子计算有没有可能取代传统算法呢?
关注天下网吧微信,了解网吧网咖经营管理,安装维护:
本文来源:不详 作者:佚名