搜索问题

在状态空间中,如何利用知识,通过一些搜索方式(盲目搜索或者启发式搜索)尽可能有效地找到问题的解,即找到最优解的问题。比如地图路径问题,华容道问题等。
人工智能--搜索方法

盲目搜索

盲目搜索一般分为两类,深度优先搜索和广度优先搜索。

深度优先搜索

深度优先搜索的性质:

  1. 一般不能保证找到最优解
  2. 深度限制不合理时,可能找不到解,可以将算法改为可变深度限制
  3. 最坏情况,搜索空间等同于穷举
  4. 节省内存,之存储从初始节点到当前节点的路径

广度优先搜索

  1. 当问题有解时,一定能找到解
  2. 当问题为单位耗散值,且问题有解时,一定能找到最优解
  3. 方法与问题无关,具有通用性
  4. 效率较低
  5. 存储量比较大

启发式图搜索

优先扩展“最佳”节点
利用知识来引导搜索,达到减少搜索范围,降低问题复杂度的目的。
启发信息的强度
强:降低搜索工作量,但可能导致找不到最优解
弱:一般导致工作量加大,极限情况下变为盲目搜索,但可能可以找到最优解。

启发式搜索算法A/A*算法

定义评价函数
f(n)=g(n)+h(n) f(n)=g(n)+h(n)
f(n)=g(n)+h(n) f^{*}(n)=g^{*}(n)+h^{*}(n)

g(n)g^{*}(n)从开始节点s到n的最短路径的消耗值。g(n)g(n)g(n)g^{*}(n)的估计值
h(n)h^{*}(n)启发函数。从指定区域n到目的地g的最短路径消耗值。h(n)h(n)h(n)h^{*}(n)的估计值
f(n)f^{*}(n)评价函数.从起点s经过n到目的地g的最短路径消耗值。f(n)f(n)是对f(n)f^{*}(n)的估计值
f(n)f(n)对扩展节点进行评价

open list:从节点s开始,先把它加入到待计算的表(open list).c从出发点起,与它相接的所有可以达到的节点,也加入到open表中
closed list:封闭列表。起点s从closed list中移除。上一步的节点和不可行的节点,在close表中。

最佳图搜索算法AA^{*}算法
在A算法中,如果满足条件:
h(n)h(n) h(n)\ll h^{*}(n)
则A算法称为AA^{*}算法


A算法步骤的总结(Summary of the A Method)

  1. 把起点加入 open list 。
  2. 重复如下过程:
    a. 遍历 open list ,查找 F 值最小的节点,把它作为当前要处理的节点。
    b. 把这个节点移到 close list 。
    c. 对当前方格的 8 个相邻方格的每一个方格?
    ◆ 如果它是不可抵达的或者它在 close list 中,忽略它。否则,做如下操作。
    ◆ 如果它不在 open list 中,把它加入 open list ,并且把当前方格设置为它的父亲,记录该方格的 F , G 和 H 值。
    ◆ 如果它已经在 open list 中,检查这条路径 ( 即经由当前方格到达它那里 ) 是否更好,用 G 值作参考。更小的 G 值表示这是更好的路径。如果是这样,把它的父亲设置为当前方格,并重新计算它的 G 和 F 值。如果你的 open list 是按 F 值排序的话,改变后你可能需要重新排序。
    d. 停止,当你
    ◆ 把终点加入到了 open list 中,此时路径已经找到了,或者
    ◆ 查找终点失败,并且 open list 是空的,此时没有路径。
  3. 保存路径。从终点开始,每个方格沿着父节点移动直至起点,这就是你的路径。

上述步骤来自 Colin丶 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/hitwhylz/article/details/23089415?utm_source=copy


对启发函数hh的评价方法

平均分叉数
设共扩展了d层节点,共搜索了N个节点,则:
N=(1b(d+1))1bb N=\frac{(1-b^{*(d+1)})}{1-b^{*}} \quad b^*称为平均分叉数
bb^*越小,说明评价函数hh效果越好。实验表明,bb^*是一个比较稳定的常数,同一个问题基本不随问题规模发生变化。

随机搜索算法

动态规划算法

对于任何的n,当h(n)=0h(n)=0时,A*算法就成为了动态规划算法。
人工智能--搜索方法

人工智能--搜索方法

人工智能--搜索方法

参考:清华大学计算机系马少平老师《人工智能》课程PPT课件

相关文章:

  • 2021-10-21
  • 2021-11-09
  • 2021-07-04
  • 2021-06-01
  • 2021-06-05
  • 2021-04-21
  • 2022-12-23
  • 2021-10-21
猜你喜欢
  • 2022-01-15
  • 2022-12-23
  • 2021-10-05
  • 2021-08-12
  • 2021-08-18
  • 2021-09-01
相关资源
相似解决方案