哈工大人工智能导论实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

哈工大人工智能导论实验报告

————————————————————————————————作者:————————————————————————————————日期:

人工智能导论实验报告

学院:计算机科学与技术学院

专业:计算机科学与技术

2016.12.20

目录

人工智能导论实验报告 (3)

一、简介(对该实验背景,方法以及目的的理解) (5)

1.实验背景

(5)

2.实验方法

(5)

3.实验目的

(5)

二、方法(对每个问题的分析及解决问题的方法) (6)

Q1: Depth First Search (6)

Q2: Breadth First Search (6)

Q3: Uniform Cost Search (7)

Q4: A* Search (8)

Q5: Corners Problem: Representation (8)

Q6: Corners Problem: Heuristic (8)

Q7: Eating All The Dots: Heuristic (9)

Q8: Suboptimal Search (9)

三、实验结果(解决每个问题的结果) (9)

Q1: Depth First Search (9)

Q2: Breadth First Search (11)

Q3: Uniform Cost Search (12)

Q4: A* Search (14)

Q5: Corners Problem: Representation (15)

Q6: Corners Problem: Heuristic (16)

Q7: Eating All The Dots: Heuristic (16)

Q8: Suboptimal Search (17)

自动评分 (17)

四、总结及讨论(对该实验的总结以及任何该实验的启发) (17)

一、简介(对该实验背景,方法以及目的的理解)

1.实验背景

1) 自人工智能概念被提出,人工智能的发展就受到了很大的关注,取得了长足的发展,成为

一门广泛的交叉和前沿科学。到目前,弱人工智能取得了长足的发展,而强人工智能则暂时处于瓶颈。

2)吃豆人Pacman 居住在亮蓝色的世界里,在这个世界有弯曲的走廊和美味佳肴。游戏的

目的就是控制游戏的主角小精灵吃掉藏在迷宫内所有的豆子,并且不能被幽灵抓到。高效地浏览世界将是吃豆人掌握世界的第一步。

3)通过本学期的学习我们已经初步掌握了人工智能的基本知识,在实验中则应用这些知识

使用人工智能操纵吃豆人游戏。

2.实验方法

1)在本实验中, Pacman 智能体将找到通过迷宫世界的路径,既包括到达一个指定的

位置,也包括高效地搜集食物。我们编辑文件search.py和searchAgents.py,编写一系列吃豆人程序,包括到达指定位置以及有效的吃豆,并将其应用到Pacman场景,完成对相关人工智能功能的完善。

2)在本实验中,我们对下面8个问题进行研究,针对每个问题提出解决方法,逐步完成吃

豆人游戏:

Q1: Depth First Search

Q2:Breadth First Search

Q3: Uniform Cost Search

Q4: A* Search

Q5:CornersProblem:Representation

Q6:Corners Problem:Heuristic

Q7: Eating All The Dots: Heuristic

Q8: Suboptimal Search

3.实验目的

1)完成实验报告中的问题,编写一系列吃豆人程序,包括到达指定位置以及有效的吃豆;

2)通过分析吃豆人游戏巩固课堂上所学内容;

3)复习python语言的使用。

二、方法(对每个问题的分析及解决问题的方法)

Q1: Depth FirstSearch

应用深度优先算法找到一个特定的位置的豆,我们通过depthFirstSearch函数实现深度优先搜索的功能。

深度优先遍历的方法是,从图中某顶点v出发:

1)访问顶点v;

2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的

顶点都被访问;

3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,

直到图中所有顶点均被访问过为止。

深度优先搜索的顺序如下图所示:

在depthFirstSearch中,由于搜索过程中火重复访问到部分节点,所以需要对于每个节点设置标记,以指示该节点是否被访问过。先将每个后继节点压入搜索栈中,然后以深度优先的顺序进行搜索,判定是否符合目标状态,并将符合结果的节点放入结果集。

Q2: Breadth FirstSearch

应用宽度优先算法找到一个特定的位置的豆,我们通过breadthFirstSearch函数实现深度优先搜索的功能。

广度优先搜索算法的思想是:从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使得“先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问,直至图中所有已被访问的顶点的邻接点都

被访问到。如果此时图中尚有顶点未被访问,则需要另选一个未曾被访问过的顶点作为新的起始点,重复上述过程,直至图中所有顶点都被访问到为止。如下图:

在breadthFirstSearch中,大体的搜索思路与深度优先算法一致,只是搜索的次序发生了变化。

在这里注意,在深度优先搜索和广度优先搜索方法中,我们使用的图搜索算法是一样的,但是涉及到具体的数据结构却是不同的。在深度优先搜索算法中,我们使用栈进行操作,在深度优先搜索算法中,我们使用队列进行操作,如下图所示。这两种数据结构的不同之处就在于其中元素的输出次序,在深度优先搜索中需要按照压栈顺序的逆序进行搜索,咋子广度优先搜索中需要按照入队顺序的顺序进行搜索。

Q3: Uniform Cost Search

很多情况下,路径中的代价是可以改变的,在这个问题中,我们完成代价一致搜索方法。

相关文档
最新文档