人工智能导论实验二 食人族传教士过河+黑白棋 prolog+Python

实验目的及要求:

本项目要求能够理解人工智能的基本原理,理解状态空间的概念、原理和方法,掌握用状态空间表示问题的步骤,掌握搜索方法的基本原理,并能够实际问题给出具体的实现。

实验内容:

  1. 状态、状态空间、算符、用状态空间表示问题的步骤
  2. 状态空间、用状态空间求解问题的过程
  3. 宽度优先搜索、有界深度优先搜索、启发式搜索
  4. 状态空间法求解实际问题的实现过程

实验项目1:

三名传教士和三名食人族必须使用最多可搭载两个人的船穿越一条河流,这是因为对于两岸,如果在岸上都有传教士,则食人族不能超过他们(如果是的话,食人族会吃掉传教士)。船上没有人时,船不能独自过河。求解一种解决方案,将所有的传教士和食人族运送到对岸。
有N个传教士和N个野人来到河边渡河,河岸有一条船,每次至多可供2人乘渡。问传教士为了安全起见,应如何规划摆渡方案,使得任何时刻,河两岸以及船上的野人数目总是不超过传教士的数目。即求解过程中,任何时刻满足M(传教士数)≥C(野人数)和M+C≤k的摆渡方案。

实验要求:
1.形式化表示MC问题:①状态空间②初始状态③行动④转移模型⑤目标⑥路径代价
2. 画出状态图(可知MC=3时,共有15个合法状态)。
3. 根据问题的形式化结果,结合prolog语言的特点,Prolog实现该问题求解;

实验项目2:

黑白棋(reversi),也叫苹果棋,翻转棋,是一个经典的策略性游戏。一般棋子双面为黑白两色,故称“黑白棋”。因为行棋之时将对方棋子翻转,变为己方棋子,故又称“翻转棋”。棋子双面为红、绿色的成为“苹果棋”。它使用8*8 的棋盘,由两人执黑子和白子轮流下棋,最后子多方为胜。

游戏规则: 棋局开始时黑棋位于E4 和D5,白棋位于D4 和E5,如下图所示

实验要求:

  1. 参考华为《人工智能导论》实验手册,在华为云的ModelArts中用Python实现该问题的求解。

思考题:

  1. 请简要描述下蒙特卡洛搜索树的主要核心思想?
  2. 请简要描述下博弈树搜索的主要核心思想?

实验一
1.形式化表示MC问题:
①状态空间
用一个三元组[m,c,b]来表示河岸上的状态,其中m、c分别代表某一岸上传教士与野人的数目,b=left表示船在左岸,b=right则表示船在右岸。约束条件是: 两岸上M≥C || M=0 , 船上M+C≤2。综上,我们的状态空间可表示为:(ML,CL,BL),其中0≤ML,CL≤N,BL∈{left, right}。状态空间的总状态数为(N+1)×(N+1)×2

②初始状态
问题的初始状态是(N,N,left)

③行动
该问题主要有两种操作:从左岸划向右岸和从右岸划向左岸,以及每次摆渡的传教士和野人个数。
使用一个2元组(BM,BC)来表示每次摆渡的传教士和野人个数,我们用i代表每次过河的总人数,i =[1,2…k],则每次有BM个传教士和BC=i-BM个野人过河,其中BM= 0~i,而且当BM!=0时需要满足BM>=BC。则从左到右的操作为:(ML-BM,CL-BC,B = 1),从右到左的操作为:(ML+BM,CL+BC,B = 0)。
Eg.
当N=3,K=2时,满足条件的(BM,BC)有:
从左岸到达右岸:(0,1)、(0,2)、(1,0)、(1,1)、(2,0)
从右岸到达左岸:(0,1)、(0,2)、(1,0)、(1,1)、(2,0)
共10类行动

Action={L(0,1),L(0,2),L(1,0),L(1,1),L(2,0),
R(0,1),R(0,2),R(1,0),R(1,1),R(2,0)}

④转移模型
当前状态+Action构成转移模型。

⑤目标
[0,0,0]

⑥路径代价
搜索过程中的摆渡次数。

你可能感兴趣的:(人工智能,python,华为云,prolog,开发语言)