猜数字游戏与人工智能
davies 发表于 2006 年 01 月 8 日
在很多手机、文曲星等手持电子设备上,常能见到一款经典的益智游戏
比如某次游戏过程是这样的:
上面这次游戏用了5个回合完成游戏。人在玩这个游戏的时候,都是根据逻
辑推理来进行,在没有前提条件无法进行推理的时候,则随意猜测。比如第一次猜8754的结果是0A2B,则说明这四个数字中有两个在结果中出现过,但位置
不对,那下一次猜测时则保留上次中的两个,调整一下位置,然后猜测4138,这样逐步逼近结果。
大一C语言课的一道大作业题,就是编成完成猜测的过程。我一开始是按照人游戏时的逻辑进行,根据回答进行分类判断,进行推理,导致程序异常复杂,是我所难
以完成的。后来跟chaoslawful等讨论,他的解法则完全不是这个思路:他会根据猜测的结果把所有可能的数字过滤一遍,保留所有可能是结果的那些数
字排列,并从中任选一个去猜,如果回答是4A0B或者仅剩下一个,则得到结果。当时听到这个方法时,让我非常震惊,以致现在都还记得。
虽然只是一个猜数字问题,但却反映了一个重要的事实:计算机的思维方式是跟人不一样的,不能以人的思维方式去让计算机干活。人的记忆能力和处理速度(狭
义),远不如现在的计算机,但逻辑推理等方面异常强大,在处理复杂问题时表现出强大的智能。而计算机的优势在于可以高度的重复完成简单任务,通过这些简单
任务的组合,可以解决很多复杂问题,实现“智能”。
比如这个猜数字游戏,计算机通过穷举和搜索完成了人必须用复杂的逻辑推理才能做到的事,可以说在这方面与人具有了同样的智能。类似的例子还有很多,比如深
蓝战胜卡斯帕罗夫,搜索引擎帮我们找到所需要的资料,都是以与人的思维过程完全不同的方式,达到甚至超越了人的智能所能达到的效果。可以说在这一方面,它
们通过了图灵测试,可以说具有了智能。
有人会说计算机的这种能力不能称为智能,理由是它现在还不能完成许多复杂任务,比如图像内容识别。可是回想一下,现在的人类大脑,是经过了几十亿年(从高
分子有机物开始)的漫长演化,而计算机从出现到现在,才有不到两百年(包括早年的机械计算器),可见它的前途是不可限量的。二十年前,识别汽车牌号可能还
只在科幻片中出现,可现在已经开始在生活中广泛应用。
也有人会说计算机不具有创新能力,只能按照它的创造者人所指定的轨迹行事。所谓创新,其实是一个相对的概念,回想一下人所做的创新,很多时候是把原先已经
存在的东西做了从未有过的组合,那种从无到有的创造,估计只有上帝才能完成。计算机是可以完成这种组合的,甚至穷举所有组合。当这种组合是人从未想到过的
时,就是创新。
在电影《I,
Robot》中,过于复杂的中央控制系统,通过不断演化最终具有了自我意识,可以给我们一点启示:当一个系统复杂到人无法想象的程度时,它所做的一些常规
的事情也会让人无法理解,就可以说它具有了智能或者独立意识。比如2003年我参加的智能体大赛,“决不贪吃”所具有的能力已经超过的大多数人类玩家,在
不懂得编成的人看来,“决不贪吃”的某些举动实在无法理解,它太聪明了,甚至能够创新。可对我们这些参赛者来说,所有这些举动都是根据我们事先指定的规则
来的,不存在所谓创新。但有时候,仍不免被那些事先未预料到的场面所震惊,只有通过事后的仔细分析,才发现出现这种结果是“理所当然”的。
再看看我们的大脑,不也是一些原子构成的么?再往上看,无非是一些脑皮层细胞而已。只是它太复杂了,几十亿个脑细胞以更加复杂的方式耦合在一起,其复杂程
度是现在人所无法想象的。假如拿几十亿个CPU组成一个超复杂网络,那将会是什么样的一个系统?再看看现在的internet,接入的计算机数量已近达到
了亿的量级,只是计算机之间的连接还相对简单。但如果从一个旁观者的角度看,互联网的行为已经是非常诡异了。随着P2P和Web 2.0
的发展,互联网将更加复杂,说不定哪天它就能够思考,有了“自我意识”。
网友留言:
2. 发表于 2006 年 01 月 11 日 5:51 p.m.
写得不错,当时还琢磨了好久!
3. 发表于 2006 年 01 月 11 日 11:15 p.m.
等有时间了,再写一个对猜数字游戏的深入分析:-)
4. 发表于 2006 年 04 月 28 日 8:59 p.m.
很希望能够和您对这个问题进行交流.
您对这个问题的深入分析能否说来听听??
我的email是 :dailiangren@mail.ustc.edu.cn
5. 发表于 2006 年 05 月 3 日 7:39 p.m.
难道人去猜数字就是不排除那些不可能的,然后从中选一个去猜吗?
虽然计算机对有些题是上文所说那样,但猜数字并不是上文的例子,我作的解猜数字就是模拟人的思考,做起来也不见得复杂.
6. 发表于 2007 年 04 月 6 日 5:05 p.m.
584,5682177778,12234,1798,76868,58712,9955,829475
7. 发表于 2007 年 04 月 9 日 10:40 p.m.
584,5682177778,12234,1798,76868,58712,9955,829475 不好意思我想知道 是怎么翻译的
8. 发表于 2007 年 04 月 10 日 9:22 a.m.
这些数字是谐音的,其含义可以在网上搜到:
<a href="http://zhidao.baidu.com/question/4210273.html">这是一封感受人的情书</a>
9. 发表于 2007 年 04 月 11 日 8:44 p.m.
8384520920910851314是什么意思?
10. 发表于 2007 年 04 月 27 日 6:24 a.m.
8384520920910851314是什么意思?
抱生抱世我爱你就爱你抱我一世!
11. 发表于 2007 年 07 月 23 日 2:46 p.m.
19700822
1. 发表于 2006 年 01 月 11 日 12:52 a.m.
这个例子的确非常经典,我第一次写这个程序也犯过跟你一样的错误 ^_^