华容道游戏的搜索策略.docVIP

  • 98
  • 0
  • 约4.48千字
  • 约 4页
  • 2017-08-27 发布于广东
  • 举报
《华容道》游戏的搜索策略 李学武 (天津师范大学计算机系 天津300074) 摘 要 本文利用人工智能产生式系统,采用双向广度优先搜索给出了求解《华容道》问题在一定意义下最优解的一个算法。本文首先介绍了该算法的基本思想,然后进行了复杂性分析,最后就源程序的核心部分给出适当的说明。本文作者还指导学生用DELPHI 5.0开发了相应的电脑游戏。部分相关资料已公诸于天津师范大学网站中由本文作者建立和主持的《信息学奥林匹克园地》栏目。 关键词 产生式系统 广度优先搜索 华容道 算法 复杂性分析 电脑游戏 A search strategy for playing Huarong Road Li Xuewu (Dept. of Computer Science, Tianjin Normal University, Tianjin , 300074) Abstract: the paper presents an optimal algorithm for solving a game named “Huarong Road”. In this paper, basic steps on the algorithm was introduce first, and second it proceed to an analysis on algorithm complexity , finally, it remarked some kernel codes in the program. Otherwise, the author directed a student that developed a computer game under Borland Delphi 5. Keywords: production system, breadth first search, Huarong Road, algorithm, complexity analysis, computer game 1 问题简介 张 飞 曹 操 马 超 赵 云 关 羽 黄 忠 兵 兵 兵 兵 华容道是在我国流传久远的一个益智游戏,然而其魅力至今不减,目前在许多商场内仍可见到基于这一游戏的玩具。该游戏起源于三国时期的一个著名故事:东汉末年,赤壁之战,曹操被周瑜杀得大败,带残兵从华容道仓皇逃走,不料大将关羽带兵在此等候。由于曹操与关羽曾经有过一段交往,关羽放曹操逃离华容道。华容道游戏的棋盘是由20个小正方形组成的长方形,宽4格,长5格。共有10个棋子,详见右下图。棋盘的下部有两个空置的小格作为华容道的出口。棋子就在这个长方形的棋盘内滑动,滑动过程中棋子不允许重叠。华容道是一个比较复杂的游戏,要移动很多步才能完成。据有关资料介绍[2],对于上面的布局(华容道游戏还有多种布局),已知的最好走法是81步。 笔者利用典型的人工智能产生式系统[1],采用双向广度优先搜索的方法搜索出在一定意义下最佳的解题步骤,在此基础上指导我系学生姚刚用DELPHI 5.0开发了一个相应的电脑游戏。本文首先介绍了该算法的基本思想,然后进行了复杂性分析,最后就PASCAL源程序的核心部分给出适当的说明与注释。限于篇幅,许多重要资料(如完整的PASCAL源程序、搜索的结果、相应的电脑游戏等)不得不舍弃,部分相关资料可在天津师范大学网站()的《信息学奥林匹克园地》栏目中找到,该栏目是由笔者建立和主持的。值得一提的是,我系学生姚刚开发的电脑游戏具有多种功能,除了让玩家自己动手使曹操脱离险境之外,还可完成诸如存储记录、读取记录、背景音效、选局、演示、求助计算机等功能。 2 搜索算法简介 我们用一个5*4的数组来记录棋盘状态,用标号1-5,8,9来表示各个棋子,例如,初始状态可表示为 4 9 9 5 4 9 9 5 2 8 8 3 2 1 1 3 1 0 0 1 (单向)广度优先搜索是大家熟知的算法,其基本步骤如下: (2.1)将初始结点入队。队头指向该结点,队尾指向该结点之后。 (2.2) 将队头结点出队,生成所有可能的扩展结点,队头指向下一个结点。如果某个新生成的结点已符合目标则结束,否则通过比较,将与已在队列中的结点不重复的新结点入队。队尾指向新结点之后。 (2.3)重复(2.2),直到某个结点符合目标或队列空(即队尾位于队头之前)为止。 我们采用的双向广度优先搜索是指建立两个队列,分别从初始状态和目标状态出发

文档评论(0)

1亿VIP精品文档

相关文档