AI Searching

AI搜索使用的经典的罗马尼亚图。

在这里插入图片描述

1、uninformed and infromed(heuristic) searching
在这里插入图片描述
1.1 uninfromed searching
1.1.1 BFS 广度优先算法

在这里插入图片描述
*使用一个队列数据结构来存储待扩展节点,扩展出来的节点存储在队列tail,扩展的节点在队列Head.
***设b为宽度(如以上2叉树则B=2)d为深度(如树的深度)
**时间复杂度,O(bd)(b的d次方,没法输入从word 粘过来也不行:()
**空间复杂度 O(bd)(b的d次方)
***complete: Yes
***optimal: Yes, but only if all actions have the same cost.
1.1.2 DFS
在这里插入图片描述
*使用stack 来存储待扩展节点。深度优先时间复杂度要大于广度优先但空间复杂度小很多,只要存储一个完整深度路径的节点即可,访问到最深处回溯时,可删除不是目标的节点。
**时间复杂度,O(bd)(b的d次方,没法输入从word 粘过来也不行:()
***空间复杂度 O(bd)
***complete: No, 如果深度时无限时无法完成
***optimal: No, can find suboptimal solution first.
1.1.3 uniform cost search
在这里插入图片描述
如果每一步代价一致则退化为广度优先。
先找根节点,然后扩展Cost最小的节点
1.1.4 depth limited search
带深度限制的深度优先算法, 为防止无限深入到一个无底线的搜索加一个深度限定值。
如果查找失败那有俩种情况1. 目标在限定的深度之后 2. 目标不存在
1.1.5 iterative deepending search(IDS)
Try to combine the benefits to DFS(low memory) and BFS(optimal and compelte) doing limited searches to depth 0,1,2,3…
使用逐步增加深度的方法来查找。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. informed(heuristic) search
    在这里插入图片描述
    2.1.1 Greed best-first search
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    Straight-line distance 就是坐标点的直线距离,这是非常不准确的在现实中,不如东方明珠到和平饭店直线距离看似比东方明珠到世纪汇广场近但是因为有黄浦江在当中,其实要绕很大圈子才能到从东方明珠到和平饭店。所以贪婪最优并不一定最佳,所以下面引出A* ,采用直线距离+节点间路径开销,选最小的来扩展搜索。

2.2.1 A*
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上图片摘自lrjcool网友,谢谢。如果觉不妥请告知。

猜你喜欢

转载自blog.csdn.net/qq_35487325/article/details/85920581