在计算机科学, 图遍历(Tree Traversal,也称图搜索)是一系列图搜索的算法, 是单次访问树结构类型数据(tree data structure)中每个节点以便检查或更新的一系列机制。图遍历算法可以按照节点访问顺序进行分类,根据访问目的或使用场景的不同,算法大致可分为28种:
序号
算法名称
应用场景
1
修剪算法
减少树搜索过程中minimax算法评估的节点数量,属于对抗性搜索算法
2
算法
用于寻路和图遍历,在多个节点之间寻找路径,多用于点对点
3
算法
一种最佳优先图搜索算法,用于查找给定初始节点到任何目标节点的最低成本路径
4
回溯算法(backtracking)
通用算法,用于查找某些计算问题的所有可行解,特别是约束满足问题,逐步构建候选解,并在确定候选解不可行时进行回溯
5
波束搜索(beam) 算法
启发式搜索算法,通过扩展有限集中最可能的节点来探索图形
6
Bellman-Ford 算法
计算加权有向中单个源节点到其他节点的最短路径,比Dijkstra算法慢,但更通用
7
Best-first 算法
根据指定规则选择最可能的点来进行图搜索
8
双向(Bidirectional)搜索
从有向图中找出给定初始点到目标点的最短路径,进行两次搜索:一次从初始点开始向前搜索,一次从目标点向后搜索,相遇时停止
9
Boruvka算法
贪婪算法,从图中找到所有边缘权重不同的最小生成树或最小生成林
10
分支定界(Branch & Bound) 算法
通过状态空间搜索可行解
11
广度优先搜索BFS (Breadth-first search)
遍历或搜索树或图数据结构,从图任意节点开始,并在移动到下一节点之前探索当前深度水平的所有相邻节点
12
算法
增量搜索算法
13
深度优先搜索DFS(Depth-first search)
遍历或搜索树或图数据结构的算法,选择任意节点作为根节点,在回溯之前尽可能地沿着每个分支进行搜索
14
Dijkstra算法(SPF 算法, shortest path faster)
搜索节点之间的最短路径。单源最短路径搜索:给定初始点,搜寻初始点到其他点的最短路径,生成最短路径树
15
Edmonds算法
最小生成树的定向模拟
16
Floyd-Warshall算法
在具有正或负边缘权重的加权图中寻找最短路径
17
Fringe搜索
寻找从给定初始节点到目标节点之间的最低成本路径
18
爬山(Hill Climbing) 算法
从图的任意节点开始,然后尝试通过对节点进行增量更改来找到更好的节点
19
IDA (Iterative deepening
)算法
在加权图中找到从给定初始节点到一组目标节点中任意节点之间的最短路径
20
迭代深化搜索算法(Iterative deepening)
具有深度限制的深度优先搜索
21
Johnson算法
在稀疏边缘加权有向图中找到节点之间最短路径
22
跳跃点搜索JPS (Jump point)算法