人工智能是一门只是的科学,一知识为对象,研究知识的获取、表示和使用。
人工智能的系统过程是数据处理->知识处理,数据->符号。符号表示的是知识而不是数值、数据。问题求解过程有启发,有推导。人工智能是引起争议最多的科学之一。
问题焦点:当前人工智能的研究应该以人类的普遍思维规律为主,还是以特定只是的处理和运用为主?只能的本质是什么?机器能达到人的水平吗?总而言之,人工智能研究是非常困难的。
万能的逻辑推理体系至今没有创造出来,并不是因为人工智能专家的本事不够,而是因为这种万能的体系从根本上就是不可能的,他最大的弱点就是缺乏知识,缺乏人类在几千年的文明史上积累起来的知识,在实际生活中,人是根据知识行事的,而不是根据在抽象原则上的推理行事的。
即使就推理体系来说,它的主要技术是状态空间搜索,而在执行中遇到的主要困难是“组合爆炸”,事实表明,单靠一些思维原则上是解决不了的,要摆脱困境,只有大量使用理性的知识。
3.2人工智能的应用
3.2.1 问题要求
人工智能的第一大成就是下棋程序,在下棋程序中应用的某些技术,如向前看几步,把困难的问题分解成一些较容易的子问题,发展成为搜索和问题归纳这样的人工智能基础技术。今年的计算机程序已能达到下各种方盘棋和国际象棋的锦标赛水平。但是尚未解决包括人类棋手具有的但尚未不能明确表达的能力。另一个问题是涉及问题的原概念,在人工智能中叫问题表示的选择,人们常能找到某种思考问题的方法,从而使求解变易而解决问题。到目前为止,人工智能程序已能知道如何考虑它们要解决的问题,既搜索解答空间,寻找较优解答。
3.2.2自然语言处理
自然语言的处理是人工智能技术应用于实际领域的典型范例,经过多年艰苦努力,这一领域已获得了大量令人注目的成果.目前该领域的主要课题是生成和理解自然语言。
3.2.3 智能信息检索技术
信息获得和精化技术己成为当代计算机科学与技术研究中迫切需要研究的课题,将人工智能技术应用于这一领域的研究是人工智能走向广泛应用的契机和突破口。
第四章 五子棋人工对战部分总体设计方案
4.1 本系统的功能图
本系统可以实现电脑自动下棋,扫描整个棋盘记录连在一起的黑白棋子数,实现人与电脑有次序的下棋,判断人与电脑的胜负。功能图4-1
4.2 Java源文件及其功能图
序号 文件名 主要功能 注备
1 ChessFrame 创建游戏的主窗口和菜单 初始化棋盘
2 ChessModel 构造棋盘模式及判断输赢 可以在文本框中显示胜负结果
3 FiveChessApple 主方法,程序入口 开启游戏
4 MainPanel 构造一个棋盘及在棋盘上处理鼠标事件 为下棋做准备
5 WindowEvent 响应关闭 关闭游戏
4.3 类ChessFrame
表4-1成员变量
成员变量描述 变量类型 名称
棋盘大小方案 String[] strsize
模式方案 String[] strmode
输赢标记 true iscomputer
检验输赢情况标记 true checkcomputer
棋盘宽度 int width
棋盘高度 int height
类ChessModel引用 ChessModel cm
类MainPanel引用 MainPanel mp
表4-2方法
方法名称 返回类型 功能 注备
ChessFrame( ) 构造五子棋游戏的主窗体 构造函数
public JMenu makeMenu(Object parent, Object items[], Object target) JMenu 构造五子棋游戏的主菜单 成员方法
public JMenuItem makeMenuItem(Object item, Object target) JMenuItem 构造五子棋游戏的菜单项 成员方法
public JRadioButtonMenuItem makeRadioButtonMenuItem(
Object item, Object target) JRadioButtonMenuItem 构造五子棋游戏的单选按钮式菜单项 成员方法
4.4类MainPanel
表4-3成员变量
成员变量描述 变量类型 名称
棋盘宽度 int width
棋盘高度 int height
类ChessModel的引用 ChessModel cm
表4-4方法
方法名称 返回类型 功能 注备
MainPanel(ChessModel mm) 根据棋盘模式设定面板的大小 构造函数
public void setModel(ChessModel mm) void 根据棋盘模式设定棋盘的宽度和高度 成员方法
public void paintComponent(Graphics g) void 根据坐标计算出棋盘方格棋子的信息 成员方法
public void draw(Graphics g, int i, int j, int v) void 根据提供的棋子信息(颜色、坐标)画棋子 成员方法
public void mousePressed(MouseEvent evt) void 响应鼠标的点击事件,根据鼠标的点击来下棋,根据下棋判断胜负等 成员方法
public void mouseMoved(MouseEvent moveevt) void 响应鼠标的拖动事件 成员方法
第五章 结论
程序运行结果如下:
本设计的优点是运用人工智能的算法,使计算机模拟人思考五子棋的过程,通过该课题,使我了解到一个编程语言最强大的地方不是它容易学,或者难学,而是它拥有一个强大的库。Java是一个完全面向对象的语言,Java的命名规则是容易让人接受的。而且容易被编程人员记住。经过几周的实践训练,对Java的综合应用能力有了较大的提高,另外对Java的特点有了更深层次的认识。这次实践中使用的代码虽然不长,但类与类之间也有很强的逻辑关系,这就是面向对象语言的最大优势,这样可使我们更轻松的运用Java去实现五子棋游戏的人工智能化。虽然效果不是很好,但亲手做过之后还是很有成就感的
参考文献
[1][美]Nils J Nilsson.人工智能[M].北京:机械工业出版社,2007:[131-150]
[2]王永庆.人工智能原理与方法[M].西安:西安交通大学出版社,2005:[45-53]
[3] 叶核亚.Java2程序设计实用教程[M].北京:电子工业出版社,2007:[64-212]
[4](美)Thomas Petchel著Java 2游戏编程[M] .北京:清华大学出版社,2005:[67-89]
[5]许南山,从磊,孙风平.并行实现有自学能力的五子棋AI[J]计算机工程与应用.2003:13期
[6]廉中友.人工智能技术导论[M].西安:西安电子科技大学出版社,2000:[ 120-157]
[7]张孝祥.Java就业培训教程[M].北京:清华大学出版社,2003:[12-51]
[8]陈国君等编著.Java程序设计基础[M].北京:清华大学出版社.2006:[ 24-50]
[9]宏伟 何丰泉.五子棋连珠棋初步[M].哈尔滨科技出版社.1999:[33-68]