Mac Hack,又称Mac Hac和格林布拉特国际象棋程序,是由理查德·D·格林布拉特在麻省理工学院(MIT)编写的计算机国际象棋程序。该程序开发于20世纪60年代中期,是人工智能和计算机博弈领域的开创性工作。运行在PDP-6计算机上的Mac Hack VI版本,拥有多项历史第一:它是第一个在人类锦标赛条件下参赛的国际象棋程序,第一个获得公认国际象棋联合会等级分的程序,以及第一个在锦标赛对局中击败人类棋手的程序。该程序名称源于Project MAC(多路访问计算机或机器辅助认知),这是麻省理工学院一项重要的资助研究项目,而罗马数字VI则指代其编写所针对的PDP-6机器。
开发
格林布拉特是一名技艺精湛的国际象棋棋手,1965年访问斯坦福大学时,他阅读了描述早期Kotok-McCarthy国际象棋程序的MIT人工智能备忘录41,由此受到启发创作了Mac Hack。随后,他在1965年至1966年间于麻省理工学院开发了该程序。软件使用MIDAS宏汇编语言为PDP-6编写,这台计算机由DEC捐赠给麻省理工学院(序列号2,是该型号的第一台工作单元)。在开发过程中,该程序被编译了约两百次,反映了迭代式和实践式的调试与改进方法。
格林布拉特在Mac Hack中融入了五十条启发式规则,利用自身的国际象棋知识来指导程序的搜索和评估。在后来约2004年,他回顾了早期Kotok-McCarthy程序的搜索策略,认为在前两层每层搜索七个最佳着法并将深度限制为二,会优于其默认的八层宽度“4 3 2 2 1 1 1 1”。这一见解凸显了两个程序在搜索理念上的差异。
锦标赛参赛
到1969年Mac Hack发布时,它已参加了十八场锦标赛并下了数百盘完整对局。为了参加正式赛事,PDP-6被授予马萨诸塞州国际象棋协会和美国国际象棋联合会(USCF)的荣誉会员资格。1966年,该程序在参加马萨诸塞州业余锦标赛后获得了1243的等级分。次年,即1967年,它参加了四场锦标赛,取得三胜、十二负和三平的成绩。一个显著的里程碑发生在1967年,当时Mac Hack VI在马萨诸塞州锦标赛第二场第三轮中击败了等级分为1510的人类棋手本·兰迪。这场胜利标志着计算机首次在锦标赛环境中战胜人类。
该程序记录在MIT人工智能备忘录174中,由格林布拉特与唐纳德·E·伊斯特莱克三世和斯蒂芬·D·克罗克合著,其中包含对局记录和实现的技术细节。
影响
Mac Hack以其易用性和广泛分发而著称。它通过电传打字机操作,后来移植到PDP-10,并成为第一个在其原始机构之外广泛分发的计算机国际象棋程序。在技术上,它是第一个采用置换表的国际象棋程序,置换表是一种存储已评估局面以避免冗余计算的数据结构。这一优化成为后续国际象棋程序及其他博弈系统中博弈树搜索的关键组成部分。
该程序的成功也影响了更广泛的人工智能领域。格林布拉特与汤姆·奈特一起,继续推动麻省理工学院的AI研究,并于1973年构建了Lisp机,这是一种专为Lisp编程语言设计的计算机架构,对AI发展产生了深远影响。Mac Hack的成就证明了计算机参与人类智力活动的可行性,为计算机国际象棋和AI研究的早期基础做出了贡献。
遗产
Mac Hack的遗产在于它证明了计算机能够在竞争环境中进行复杂的策略推理。其锦标赛参赛和等级分为后来的国际象棋计算机(如深蓝)树立了先例,其技术创新(如置换表)也成为标准做法。该程序还体现了麻省理工学院早期AI研究中协作和探索的精神,Project MAC等项目促进了跨学科工作。尽管现代国际象棋引擎在棋力上远超Mac Hack,但其作为计算机国际象棋和AI领域先驱的历史角色仍然意义重大。