1.前言
1.1 广度优先搜索(breadth first search)BFS
定义:是一种盲目搜索法,在各个方向上均等的探索。根据离起始节点的距离,按照从近到远的顺序对各节点进行搜索。
核心:使用队列,队列的性质就是先进先出,每次从open_list中选择最早被加入的节点将其加入close_list中,同时扩展相邻节点。
1.2 深度优先搜索(depth first search)DFS
定义:它会沿着一条路径不断往下搜索直到不能再继续为止,然后再折返,开始搜索下一条路径。让搜索的区域距离起始节点尽量的远,距离目标节点尽量的近。
核心:使用是栈,栈的性质就是先进后出,每次从open_list中选择最晚被加入的节点将其加入close_list中,同时扩展相邻节点,可把open_list看成一个栈,后进先出。
1.3 最佳优先搜索(best first search)称为A算法
定义:是一种启发式搜索,启发式搜索就是对状态空间中的每个节点进行一个评估,然后选出最好的位置。而在启发估价中使用到的函数我们称之为启发估价函数。
是广度优先搜索的改进,用启发估价函数对将要被遍历到的点进行估价,然后选择代价小的进行遍历,直到找到目标节点或者遍历完所有点,算法结束。
核心:使用优先队列,以每个节点到达终点的距离作为优先级,每次选取离目标节点最近的节点作为下一个遍历的节点。
1.4 Dijkstra算法
一种启发式搜索,是贪心算法和广度优先搜索算法的改进,倾向于成本较低的路径,我们可以分配较低的成本鼓励在道路上移动,较高的成本在森林上移动,较高的成本在避免靠近敌人。