想和电脑下盘棋
文革时,我在中国科技大学上学,当逍遥派时结识了围棋,从此与围棋结下了不解之缘。读研究生后中断了八九年,近十年又下了起来,兴趣比年轻时更浓,围棋竟成了我的第一业余爱好。与电脑结识则稍晚一点,在1975~1977年我当大学助教时,有些课题需上机计算,便开始学习编程。那时没有“电脑”这个词(也许台湾或香港有),我们只知道那玩艺儿叫“计算机”,是非常先进和贵重的设备,拥有一台个人电脑这种事连做梦也想不到。当时,在发达国家计算机也只在大学、科研机构和少量的大公司才有,当时处于封闭状态的中国,依靠科技人员的不懈努力也制造了一些计算机。当时,一台计算机要占据整整一间实验室,性能远不如现在奔腾机,软件更是少得可怜,基本上只能做科学计算,一台机器往往只有一两种编程语言供用户使用,如Fortran、Algol,使用极不方便——先要自己仔仔细细地把源程序写在普通纸上,然后在一种专门的穿孔机上把源程序“写”到一条长长的黑纸带上。穿孔机像一种老式打字机,不同的是打字员每敲一个键,它就在那条黑纸带上穿一排孔,不同的字符对应孔的不同排列方式,像电报码一样。为什么要这样做呢?因为黑色穿孔带是计算机唯一接受的输入方式。上机前要先申请机时,机房工作人员根据情况排出上机时间表,轮到者在指定日期和时间(如果到外单位上机,常常会被安排在半夜)带着预先准备好的黑色空孔带和一颗不安的心进入酷似外科手术室的机房,进行那期待已久的计算。如果在安排的时间内没有完成计算,而下一个用户已经到达,计算机往往被无情地中断。
至于改错、重新穿孔等一连串的麻烦都是现在的电脑爱好者无法想象的。现在在个人电脑上十几分钟完成的事情那时要花费几天或更久。
即便如此,我仍对计算机的功能惊叹不已。
80年代初,美国的家用电脑市场发生一件大事:实力雄厚的德州仪器公司决定退出家用电脑市场,将它库存的全部TI99电脑以极低廉的价格同一天在全美出售。当时正在美国留学的我也没有放过这次机会。这是我的第一台个人电脑,虽然其功能不能与现在的PC机相比,但它具备了电脑的基本功能,可以用BASIC语言编程。最使我兴奋的是它的键盘输入方式以及简单编辑的基本功能使我永远摆脱纸带穿孔的烦恼。随着时间的推移,我的电脑不断更新换代,直至现在的多媒体PC机。
电脑对我来说是工具,是宠物。我用它储存数据、作文字处理、进行科学计算、辅助教学等,当然,近年来收发电子邮件和上网浏览更是少不得它。
1987年,我自学C语言时给自己出了一道习题:编写一个围棋打谱程序,完成后输入了棋书和围棋杂志上一些棋谱,供自己和朋友欣赏。
当时也曾萌发编制围棋对弈程序的想法,但觉得难度太大,一时难以着手。直到最近几年,才开始对弈程序的研制,目的是能达到围棋初学者的水平,原以为这个目的不难达到,事实证明这个想法是错的。难怪贝多芬曾对他的弟子说:“你们只有长期刻苦地练习钢琴,才会知道自己弹不好钢琴。
#1 二、电脑围棋为什么这么难
IBM公司的“深蓝”已经击败了国际象棋之王卡斯帕洛夫,电脑围棋何时能击败九段?已故的台湾实业家应昌期先生曾重金悬赏,在2000年前击败台湾九段高手的程序,现在看来是“可望而不可及”——我想,目前世界上从事电脑围棋研究的人,是没有人在期待这笔奖金的。我国数学界泰斗吴文俊先生曾对记者谈论他对电脑围棋的看法,他认为:围棋的计算量大得惊人,没有什么好办法。计算机界人士对围棋的复杂度作了比较透彻的研究后认为:如果和国际象棋作比较的话,国际象棋全局的计算量只能抵得上围棋中一个局部战斗的计算量。同为棋类,两者的特点相殊甚远。国际象棋的目标是吃掉对方一个子(王),而在围棋中吃掉一个子甚至一串子常常算不了什么,国际象棋中不同的子有不同的价值,皇后的价值大大超过卒的价值;而围棋中的子只分白子黑子,子的价值完全由它和周围乃至全局其它子的关系而定。爱好围棋的朋友一定知道,围棋中有很多时刻并没有所谓“最佳手”,好几个不同的选点都是好点,连专业高手也不能贸然判断孰优孰劣。
当然,理论上讲,最佳手是存在的,但凭现在人类对围棋的认识,还不能准确无误地算出来。围棋的这种模糊性给棋手提供了尽情发挥的舞台,有人认为下围棋是艺术创作,此话毫不过分。我们知道,电脑的强项是计算,而创造性正是电脑的弱点。
我国有志电脑围棋的人士多数靠业余时间,在缺乏资金和社会舆论支持的情况下搞。虽然中国是围棋的发源地,但是似乎欧美有更多的人对电脑围棋具有热情,这一点从国际互联网上可见一斑。在我国最早投入这个领域的大概要数中山大学的陈志行教授,他的电脑程序“手谈”已获得六次世界冠军,为中国人争得荣誉。和“深蓝”相比,“手谈”对硬件要求很少,中国人能在外部条件不如别人的情况下开发出最好的围棋对弈程序是很不简单的。
专业棋手对电脑围棋怎么看?《电脑报》也曾报道过俞斌、常昊等围棋国手用电脑搞棋谱程序的事。但从目前来看,我国没有一个职业棋手真正投入这个项目。据说日本已经有九段棋手编制了对弈程序参加电脑围棋比赛。如果说大部分专业棋手对电脑围棋嗤之以鼻,我也不会感到奇怪,因为现有的电脑围棋距离他们的标准实在太远。电脑围棋现在处于童年甚至婴儿时代,但其发展前景相当广阔,总有一天会引起多数专业棋手的认可甚至参与,卡斯帕洛夫几年前还深信电脑无法击败他。“深蓝”在开发过程中得到过若干职业国际象棋棋手的指导。(^130301a^)
#1 三、为什么研究电脑围棋
美国曾经发射一艘宇宙飞船向太空作永恒的飞行,目的是希望某一天它能被某个星球的外星人截获而使外星人知道宇宙中曾经有过人类文明。显然,用地球上的文字来传达信息是毫无意义的,于是美国人只在飞船上放置了各种有代表意义的实物,其中有一件便是国际象棋。国际象棋能代表地球上最高级的棋类吗?恐怕未必。我在网络上看见一个西方人介绍他对围棋的认识过程。他原是一位国际象棋迷,自从学会围棋后,便觉得与围棋相比,国际象棋索然无味,下一盘国际象棋像是经历一次战斗,而下一盘围棋像经历一场大规模战争。围棋在中国至少有2000多年的历史,是中华文化遗产的一颗灿烂明珠,任何一个年代的中国人都没有理由将它舍弃,更何况现在围棋已经走向世界,将电脑这个现代科技的产物应用于国宝围棋上,是一件十分有意义的工作。
围棋在我国既是高级娱乐又是一项竞技项目,相应地,电脑围棋的主要目的也不外乎娱乐比赛,但对围棋对弈程序开发人员来说,其意义却不限于此,对他们来说,写这个程序是接受一个严峻的挑战,是试图揭开围棋神秘的面纱。国外有人撰文,标题为“你想知道电脑多聪明,就和它下一盘围棋吧”。
人工智能学术界对电脑围棋相当重视,日本一年一度的FOST杯国际电脑围棋赛就是日本人工智能年会的一个项目。正因为围棋计算量太大,不可能用简单的计算来设计程序,而更多地采用模拟人脑的方式来做分析和判断,因而真正有水平的程序是具有相当程度的人工智能的。已经有不少人在电脑围棋方面写了博士硕士论文,例如“电脑围棋与模式识别”等,著名博弈论专家Berlcamp还写了一本专著,从理论上探讨围棋收官。电脑围棋程序的算法是一种组合优化的技术,因此围棋程序开发本身是一项科研,它与计算机科学和数学有着密切的关系。
尽管国内对电脑围棋有些研究,也有一些论文,但是基础性的研究成果还很肤浅,对于围棋还没有建立适当的数学模型,当然要建立模型是不容易的,在算法理论上也没有突破,希望不久后在理论上能有进展,这样,电脑围棋的水平会有所进步。