计算机程序的“行为学”(一)——写在前面

原创 2008年09月24日 20:56:00
首先要声明这篇文章不为吹捧任何先进的或者高尚的或者与时俱进的技术或者理论,所以请不要在我的地盘上乱点火,我肯定不会回应的。我是双鱼座的人,和我吵架等于慢性自杀,各位请自重。

那么我在这里要说的是关于计算机程序的“行为学”,显然计算机不会和人一样自主思考,所以“行为学”只能打上引号了。我的目的当然不是证明计算机程序如何用六条腿行走(我读初中的时候曾经看过此类研究天牛行为的文章,写得理论有余,精彩不足),我只是希望引发读者对于计算机程序的“行为”模式的思考,然后进一步地,我们可以看到如何通过计算机程序的“行为”来解释它的思维,然后我们能够看到一些使得计算机能够“自主思维”的方法。如果您对于最后一点嗤之以鼻也没关系,计算机智能领域从来都是分歧严重的,所有的意见都仅供参考。

那么我们按照计算机教材的惯例,以一个小故事开始:这个故事是著名的泥巴孩子故事,如果您看过《Reasoning About Knowledge》这本书可以直接略过这段,或者到这里看另外一个故事:(另外一个Blog上不去,回头填一下)。

关于泥孩子的故事,大体上是这样的(摘自《Reasoning About Knowledge》):

假设有n个小孩在一起玩。这些小孩的妈妈告诫过他们如果把自己弄脏了会有很严重的后果。所以,每个孩子都希望能保持清洁,但是每个孩子又都希望看到别人弄 脏自己(小孩就这么阴险……)。现在这帮小鬼中的一些,假设有k个人,在玩的时候把泥巴弄到自己额头上了(以头抢地?)。他们中的每一个都能够看到别人头 上的泥巴,但是却看不到自己头上的泥巴。当然,他们不会说出来。然后他们的父亲来了,他说:“你们中至少有一个人额头上有泥巴。”这一点当然小孩们都已经 知道了(如果k>1)。于是父亲开始一遍又一遍地反复问如下的问题:“你们中的任何一个知道他自己的额头上有泥巴吗?”假设每个孩子都足够机敏、聪 慧和诚实,并且他们总是同时回答问题,那么结果会如何呢?

可以“证明”,在开始的“k-1"次提问中,所有的孩子都会回答“不”,而在第k次,头上有泥巴的孩子都会回答“是”。

“证 明”是基于k的推导。当k=1,结论是显然的:唯一的头上有泥巴的小孩看到别人头上都没有泥。由于他,知道至少有一个孩子头上有泥,他便可以归结出他一定 是那个头上有泥的。现在假设k=2。只有两个“泥孩子”a和b。他们第一次都会回答“不”,因为他们看到对方头上的泥。但是,当b说“不“的时候,a会意 识到自己也是个“泥孩子”,否则b第一次的时候应该会知道他自己头上有泥,并且回答“是”。于是a第二次就会回答“是“。而b也会经历类似的推理。现在假 设k=3,于是有三个“泥孩子”a,b和c。a会这样说:假设我头上没有土,那么,根据k=2的情况,b和c在第二次都会回答“是”。而当他们并没有这样 做,他(a)就意识到这个假设是错的,他是个“泥孩子”,于是他会在第三次回答“是”。b和c也一样。

我们可以对一般的情况使用相同的方法进行推论。

很显然,一台足够聪明的电脑就可以模拟每个小孩在这个推理中的思维方式,并且肯定比他们中任何一个都要做得好。我们在这里看似花简为烦地把一个问题转化为了一系列单纯的推理步骤,并且涉及多个客体(我们暂时称为Agent,接下来我会另外讨论Agent的概念);这样我们可以用一段简单的程序来完成这些推理;但是更重要的是,这段程序在这个问题中的行为模式和人类是截然不同的。实际上程序能完成的仅限于将一个推理过程(或者一个可计算过程)应用到其适用的某一个状态空间中,而人类所完成的是真正的推理演绎。我们接下来将讨论这两者间的详细区别,包括这两者和已知的动物行为学之间的区别。

Linux 实验 —— shell 编程

1、 查看当前系统下用户 shell 定义的环境变量的值。 2、 定义变量 AK 的值为 200,并将其显示在屏幕上。 3、 定义变量 AM 的值为 100,并使用 test 命令比较其值是否大于 1...
  • wujy47
  • wujy47
  • 2014年12月13日 10:04
  • 2234

前言--你也可以成为量子计算机程序员

前言–你也可以成为量子计算机程序员! 量子纠缠-图片来源-百度图片 本专栏主要介绍量子计算相关的发展,最近D-ware的量子计算机开源了一个量子计算机程序开发软件Qbsolv,本专栏也会介绍博...
  • libing403
  • libing403
  • 2017年06月19日 23:53
  • 1399

北理工计算机学院2011级Java试题、部分答案及分析

北京理工大学计算机科学技术学院 2013-2014学年第一学期Java语言程序设计考试试题(A) 说明:(1)本次考试为开卷考试,允许学生携带笔记本电脑及其他资料,允许上网,但不允许以各种手段相互抄袭...
  • bitfan
  • bitfan
  • 2014年02月28日 22:46
  • 6842

ExtJS4.2学习(0)——写在前面

大家好,首先可以将这篇博客作为一个类似于序之类的东西,简单的说下我个人的想法。 首先先讲下我想做什么: 其实是对ExtJS这种js框架的学习博客,这个不必多说,还有就是想说说现在个人有点吐槽的成分,个...
  • sunyingyuan
  • sunyingyuan
  • 2013年08月28日 17:59
  • 2091

《docker入门实战》读书笔记1——写在前面的话

(1)写在前面的话 1)docker可以用来创建轻量级的“虚拟机” 2)docker只能运行在linux上 3)本书的三个目标分别是:docker解决的问题、docker如何解决这些问题、docker...
  • u012441545
  • u012441545
  • 2016年08月05日 12:54
  • 189

算法设计与分析——第一篇,写在前面的话

写在前面的话—— 做程序员也有几年了,一直以来都是在有需要的时候,上网查查资料,看看别人写的博客来充实自己,有时候也会想写写随笔,学习笔记什么的,可是空空如也的我,一直以来都没有什么可以写的,不过既...
  • Elysion_Daniel
  • Elysion_Daniel
  • 2016年09月24日 21:15
  • 460

怎样看待BW,做一个合格的咨询顾问,而非应用顾问——写在前面的...

非常感谢大家的支持,放假回来,假期综合症很严重,所以一直没有机会写点什么。看到有朋友说一直伴着我的拙作学习BW,自己心里很开心,也很感激,其实也是你们鼓舞了我,从几个月前刚开博时的第一个读者到现在接近...
  • asdfak
  • asdfak
  • 2011年02月11日 11:12
  • 3477

软件开发中的哲学——写在前面

这个专栏应该是今年自己非常重要的一个任务,或者说是一个计划。目的就是要把自己在软件开发过程中体会到的哲学原理写出来,从而让大家能够更好地使用哲学来指导自己的软件开发过程,并且在出现问题的时候,能够找到...
  • lingyun2005
  • lingyun2005
  • 2013年02月23日 08:08
  • 1492

乙醇教你读watir源码(0)——写在前面

写在前面犹豫了好久,终于决定还是动笔写一下watir的源码解读。笔者在交流中经常发现一些waitr的使用者对于watir的实现还是比较好奇的,另外大家也有一定的扩展源码功能的需求。不过waitr源代码...
  • nbkhic007
  • nbkhic007
  • 2011年04月04日 21:04
  • 360

【CocosCreator入门教程(0)】——写在前面

你们要的Creator新手教程,来了本系列教程面向纯新手(高手我也教不来),但我默认你用过一种编程语言(不一定是JavaScript)之前我也写过一些小游戏实战的博客,但高手不会看,新手又看不懂,所以...
  • potato47
  • potato47
  • 2016年10月26日 20:26
  • 1839
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:计算机程序的“行为学”(一)——写在前面
举报原因:
原因补充:

(最多只允许输入30个字)