计算机博弈与“算法设计与分析”实验教学
  摘要:目前“算法设计与分析”课程的实验题目主要以验证课堂所讲的理论为主,不利于培养学生的学习兴趣、创新意识和能力。提出将计算机博弈竞赛项目与“算法设计与分析”实验教学题目相结合的观点,并论述了两者结合的意义和可行性。
  关键词:算法设计与分析;计算机博弈;实验教学
  作者简介:李淑琴(1963-),女,北京人,北京信息科技大学计算机学院,教授;李宁(1964-),男,北京人,北京信息科技大学计算机学院,教授。(北京?xxxx)
  基金项目:本文系校研究生优质课程建设项目(项目编号:xxxx04)、校研究生科技创新和实践能力培养项目、校教学改革研究项目(项目编号:2010JG19)的研究成果。
数据结构与算法论文  中图分类号:G642.0?????文献标识码:A?????文章编号:1007-0079(2012)20-0093-02
  “算法设计与分析”是计算机科学的核心问题之一,是计算机科学与技术专业本科及研究生的一门重要的专业基础课,也是计算机软件开发人员的必修课。“算法设计与分析”课程主要针对生活
中经常遇到的实际问题,讲授如何设计并实现计算机算法的基本原理、思想、方法与技术,从而使学生在选择或者设计算法时可以对其进行时空耗费分析,使算法的时空复杂性最优,进而为其编写出高效程序、开发出优秀软件系统奠定基础。
  近年来北京信息科技大学招考的计算机专业的研究生中,本科不是计算机科学或相关专业毕业却想攻读计算机科学硕士学位的学生比例不断加大,这些学生来自全国各地不同类型的学校,对应该在本科生阶段掌握的计算机专业的理论深度与广度的把握有较大差别,学生普遍编程能力较弱,远达不到灵活运用的程度。而“算法设计与分析”课程是理论与实践并重的课程,是一门集应用性、创造性及实践性融为一体的课程。学生通过学习算法设计与分析课程可以开阔编程思路,编写出高效程序,对学生分析问题、解决问题的能力培养起到非常重要的作用。
  目前北京信息科技大学算法课设置为计算机专业硕士研究生的一门专业基础课,32学时。为了提高学生的综合能力,我们对该课程的实践题目上下功夫,主要设计了两个方面的题目。
  第一类题目,称为验证型小实践。主要是将课堂讨论的理论加以验证,一方面加深对理论的理解,另一方面锻炼编程能力。这部分作业是实现算法课的最基本要求,因此要求每个学生必须独立并保质保量地完成。
  第二类题目,称为应用型大实践。作为研究生仅仅停留在算法的验证上还是不够的,要使学生能够跟上技术发展的步伐,增强就业竞争力,就要加强创新能力培养,全面提高分析问题和解决问题的能力,提高灵活应用经典算法和当前的新技术进行程序设计的能力。将计算机博弈竞赛题目作为“算法设计与分析”课程综合实践题目是一个可行方案。
  一、计算机博弈与“算法设计与分析”
  计算机博弈,顾名思义就是让计算机拥有人的思维去进行博弈游戏,能够像人一样下棋。计算机博弈是既简单方便、经济实用又内涵丰富、变化无穷的思维逻辑的研究载体,它在国际上作为一个学科领域,已经开展了半个多世纪的研究与竞赛活动,经过了波澜壮阔的艰苦历程。1997年5月IBM“深蓝”计算机战胜世界棋王卡斯帕罗夫,成为计算机博弈和人工智能的里程碑。目前,无论在国际还是国内,计算机博弈比赛每年举办一次,竞赛项目包括六子棋、点格棋、苏拉卡尔塔棋、亚马逊棋、幻影围棋、中国象棋、围棋、九路围棋等项目。
  编写一个好的计算机博弈程序需要涉及数据结构、编程语言、程序设计方法、软件工程、并行计算等综合知识,可以综合提高学生的实践创新能力。
  一个完整的机器博弈系统主要包括棋局表示、着法生成器、搜索引擎以及评估函数四部分。
  棋局表示是对比赛过程中形成的棋局的描述,涉及数据结构的选择,其中包括棋盘、棋子、障碍、空格、棋局、走棋表示的编码与存储。良好的数据结构可以节省大量的存储空间,可以提高存取的效率。为了适应博弈树的展开与搜索,常常还要同时给出棋局的多种数据格式。如棋局状态、棋子位置、比特棋局和比特向量,还要用到哈希变换和哈希表等。
  着法生成器是在已形成的棋局下生成可行的着法,涉及对下棋规则的描述并根据规则生成所有可行着法,是搜索对象的产生器。
  搜索引擎是如何到最优着法,这是计算机博弈的核心部分,是对人类思维模拟的最佳体现。搜索算法包括着法生成、博弈树展开、各种剪枝搜索和各种启发式搜索。涉及的核心问题覆盖了常见的算法设计策略。
  局面评估就是对棋局进行评估,是搜索算法的前提。棋局的静态评估是计算机博弈的另一个难点,它不仅需要棋类对弈的基本知识,而且用到直接量化、模式量化、随机评估、模糊评估
等一系列手段。例如象棋,可以给每个棋子和棋位打分,而对于围棋则要进行定式的抽取和模式的匹配。
  以上这些问题都是算法设计课程的涉及内容,也是研究生今后研究工作涉及的主要方面之一。
  (1)竞赛程序的实现有时间、空间限制,能很好地反映算法设计与分析技巧在程序设计中的应用意义。
  (2)竞赛项目难度适中。计算机博弈被称为人工智能的“果蝇”,因为它具有周期短、变化多、容易实现、便于检查的特点。个把小时就可以下一盘棋,就可以对电脑的“智能”进行测试,而且可以悔棋、重试、复盘。
  (3)竞赛富有挑战性,趣味盎然。通过编写、调试程序,让计算机下棋,一步步地发现电脑与人脑功能的差距,从而不断提高电脑的智力水平。与所学专业知识有密切关系,有效激发学生对计算机技术的兴趣。
  (4)竞赛要求综合运用多种知识,有助于学生理解所学内容之间的相互关系,并创造性地考
虑问题。
  (5)竞赛项目与课程题目挂钩,一举多得。作业完成得好的学生可以参加全国竞赛,获得奖项还能提升就业机会,同时也在一定程度上提高学校的知名度,促进良好校风的形成。
  二、综合实验的实施与评定
  实践主要以提交课程报告形式,考核学生算法分析与设计的综合能力。课程报告内容包括算法设计、算法实现、算法效率分析、程序测试等。对于小实践作业根据学生撰写报告内容、程序的质量综合给分。对于大实践作业主要通过集中汇报的方式,验收、比较程序的运行效率。另外参考是否参加科技竞赛、是否获得奖项、是否做出不错的科研成果以及是否发表学术论文等综合因素给分。