人工智能游戏:找四位数号码B计算原理


现在铺天盖地说什么“人工智能”。其实“人工智能”和人的大脑思考的方式极为相似,人的思考智能能力是基于以下三个方面的能力形成的:一是判断思考能力、二是信息数据的记忆储存能力、三是“计算速度”也就是思考的速度。计算机人工智能的思考能力是人编写成程序“教”给计算机的(更高级的程序是人“教”给计算机自己怎么去学习新的知识)。在第二方面“信息数据的记忆储存能力”方面,计算机一般要优于人类,大型计算机所能储存的信息要远高于人类的大脑。在第三方面“思考计算速度”上,人类真是要远远逊于计算机,计算机的计算速度那是太快了。所以计算机的人工智能相对于人脑来说是有优势的。但是人脑也有远优于计算机的方面,后面会说到。现在我们还是以计算机是怎么帮助操作者“猜”到、或者说是算出你所要猜的那个数字,这里有一个恰好的例子:谜底是今年的年份2023。
林老师编写的程序教给计算机记住三个数据:查找区间最低值L、查找区间最高值H、查找区间中间平均值zhong。计算方法是
zhong=(L+H)÷2
游戏刚开始,找的是四位数,所以L=1000、H=9999。
每次游戏都要调用一个子程序过程,让随机的四位数先在屏幕中间翻转几次,造成神秘感,形成“猜”的感觉。这个子程序就是迷惑人,其实对于“猜”没有任何作用。这个子程序是
to fzhm
;翻转数字。
第一次刚开始猜,就显示zhong=(1000+9999)÷8=5500,看起来每次开始的数字都一样,那“太假”了,所以就选择一个5000~6000之间的随机数字:
make
"zhong 5000+random 1000 ;首次查找范围中值
这个数字每次开始时是千变万化的,绝无固定的数值,这次恰好是5093。
这个5093随机数是程序偶然获得的。这是第一次得到的zhong中位数。下面开始判断,判定的规则有三条:
每次屏幕中间停下来出现的zhong中位数如果比心中想要猜的数字大,就点击 D 键,程序就自动将下一轮的 H
最高值用 zhong 中位值取代;
每次屏幕中间停下来出现的zhong中位数如果比心中想要猜的数字小,就点击 X
键,程序就自动将下一轮的 L 最小值用 zhong 中位值取代;
屏幕中间停下来出现的zhong中位数如果等于心中想要猜的数字,就点击 Z
键,这表示已经猜到了数字。
开始时出现的随机数是5093,这个数比2023大,所以下一轮的 H 是5093,而 L 不变还是1000。
现在计算
zhong=(1000+5093)÷2=3046
3046比2023大,所以按 D 键,下一轮的
H=3046。L=1000。
现在计算 zhong=(1000+3046)÷2=2023
这个2023就是原先想要猜的数字,所以点击 Z
键,找到了原来想的数字2023,本轮游戏完成。
这一次总共才找了3次就成功了,侥幸、幸运得很。
这里面的人工智能算法其实是著明的“优选法”:先选定低端和高端的范围,算出中端的数值,然后作比对,弃掉多余的那一半,在剩余的一半数值中继续比较……这样从1000~9999一般不超过13次就能够找到你所需要的数。因为2的13次乘方(13个2连乘)=8192、2的14次乘方=16384,这都远超9999-1000=8999的数值范围了。
这样的对半分(除以2即乘以0.5)的优选法效率还不是最高的,用黄金分割数0.618来“优选”还能得到更高的效率——这里就不介绍可能会更复杂的算法了。但是即便是这样,“除以2的对分优选法”已经有相当高的效率,在不超过13~14次的猜测中,必定能够找到你心仪的四位数——或是出生年份、或是电话号码……
人工智能虽然高效厉害,但是它仍有不足之处——毕竟它也是人类的“徒弟”。例如让人工智能分析人面部的表情,我们可能一眼就能看出极其细微的内心变化,但是计算机目前还做得很差;机器人Alpha-GO不是已经打败了人类最强的位棋手了吗,但是最近已有报导,有人编写程序找出计算机围棋程序中的漏洞,每次人都击败了计算机……
人工智能很有用。人工智能大有前途。但人工智能还有很长的路要走。
加载中,请稍候......