人工智能中的图搜索策略与重排九宫问题

人工智能实验报告

实验一 图搜索策略

 

 

 

一.实验目的

  1.加深对各种图搜索策略概念的理解

  2.进一步了解启发式搜索

  3.比较分析各种搜索策略的异同

 

 

 

二.实验内容和步骤

    以重排九宫问题为例演示各种搜索策略(包括广度优先搜索、深度优先搜索、有界深度优先搜索、最好优先搜索和局部择优搜索等搜索策略)的搜索过程,要求程序具有一定普适性,重点是要把算法描述清楚。

 

 

 

四.重排九宫问题的定义

    在一个3×3的方格棋盘上放置8个标有1、2、3、4、5、6、7、8数字的将牌,留下一个空格(用0表示)。

规定与空上下左右相邻的将牌可以移入空格。问题要求寻找一条从某初始状态S0到目标状态Sg的将牌移动

路线。

 

 

 

五.我对问题的描述

    1.结点状态

    我采用了一个10元数组A=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)来描述九宫图的每一个状态。将九宫图的九个格子依次编号为1、2、3、4、5、6、7、8、9。数组中的a0代表空格位于九宫图的那个格子,a1-a9九个元素代表了九个格子上分别是什么将牌。例如,数组(5,2,8,3,1,0,4,7,6,5)就代表了如下的状态:

    2 8 3

    1   4

    7 6 5

    这种表示法与书上略有差别,我个人认为这样做在编程上会带来方便。

 

 

 

    2.发生器函数

    我定义的发生器函数由以下的四种操作组成:

      (1)将当前状态的空格上移

      (2)将当前状态的空格下移

      (3)将当前状态的空格左移

      (4)将当前状态的空格右移

    以上的发生器函数,我在程序中(java)分别采用了4个类方法来实现。一个结点最多能够扩展出4个结点,而扩展出的结点也不一定就会被采用,这与具体情况有关。

 

 

 

    通过定义结点状态和发生器函数,就解决了重排九宫问题的隐式图的生成问题。接下来就是搜索了。

 

 

 

六.图的搜索策略

    经过我的分析,重排九宫问题中可采用的搜速策略共有:1.广度优先搜索、2.深度优先搜索、2.有界深度优先搜索、4.最好优先搜索、5.局部择优搜索,一共五种。其中,广度优先搜索法是可采纳的,有界深度优先搜索法是不完备的,最好优先和局部择优搜索法是启发式搜索法。

 

 

 

    各种搜索策略的搜索法:

    1.广度优先搜索

    步1 把初始结点S0放入OPEN表中

    步2 若OPEN表为空,则搜索失败,问题无解

    步3 取OPEN表中最前面的结点N放在CLOSE表中,并冠以顺序编号n

    步4 若目标结点Sg=N,则搜索成功,问题有解

    步5 若N无子结点,则转步2

    步6 扩展结点N,将其所有子结点配上指向N的放回指针,依次放入OPEN表的尾部,转步2

 

 

 

    1.深度优先搜索

    步1 把初始结点S0放入OPEN表中

    步2 若OPEN表为空,则搜索失败,问题无解

    步3 取OPEN表中最前面的结点N放在CLOSE表中,并冠以顺序编号n

    步4 若目标结点Sg=N,则搜索成功,问题有解

    步5 若N无子结点,则转步2

    步6 扩展结点N,将其所有子结点配上指向N的放回指针,依次放入OPEN表的首部,转步2

 

 

 

    3.有界深度优先搜索

    步1 把初始结点S0放入OPEN表中,置S0的深度d(S0)=0

    步2 若OPEN表为空,则搜索失败,问题无解

    步3 取OPEN表中最前面的结点N放在CLOSE表中,并冠以顺序编号n

    步4 若目标结点Sg=N,则搜索成功,问题有解

    步5 若N的深度d(N)==dm(深度限制值),则转步2

    步6 若N无子结点,则转步2

    步7 扩展结点N,将其所有子结点Ni配上指向N的放回指针,并置d(Ni)=d(N)+1,再依次放入OPEN表的尾部,转步2

 

 

 

    4.最好优先搜索

    步1 把初始结点S0放入OPEN表中

    步2 若OPEN表为空,则搜索失败,问题无解

    步3 取OPEN表中最前面的结点N放在CLOSE表中,并冠以顺序编号n

    步4 若目标结点Sg=N,则搜索成功,问题有解

    步5 若N无子结点,则转步2

    步6 扩展结点N,将其所有子结点配上指向N的放回指针,并计算f(Ni),依次放入OPEN表中,然后对

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值