dfs遍历和bfs遍历python_图遍历算法之DFS/BFS

本文详细介绍了图遍历中的两种主要算法:深度优先搜索DFS和广度优先搜索BFS。DFS从根节点开始沿着每个分支深入搜索,而BFS则按节点的层级顺序进行访问。文章通过伪代码和实际的R、Python代码示例展示了这两种算法的实现,适用于树或图数据结构的遍历和路径搜索问题。
摘要由CSDN通过智能技术生成

在计算机科学, 图遍历(Tree Traversal,也称图搜索)是一系列图搜索的算法, 是单次访问树结构类型数据(tree data structure)中每个节点以便检查或更新的一系列机制。图遍历算法可以按照节点访问顺序进行分类,根据访问目的或使用场景的不同,算法大致可分为28种:

序号

算法名称

应用场景

1

math?formula=%5Calpha-%5Cbeta 修剪算法

减少树搜索过程中minimax算法评估的节点数量,属于对抗性搜索算法

2

math?formula=A%5E%7B%5Cstar%7D算法

用于寻路和图遍历,在多个节点之间寻找路径,多用于点对点

3

math?formula=B%5E%7B%5Cstar%7D 算法

一种最佳优先图搜索算法,用于查找给定初始节点到任何目标节点的最低成本路径

4

回溯算法(backtracking)

通用算法,用于查找某些计算问题的所有可行解,特别是约束满足问题,逐步构建候选解,并在确定候选解不可行时进行回溯

5

波束搜索(beam) 算法

启发式搜索算法,通过扩展有限集中最可能的节点来探索图形

6

Bellman-Ford 算法

计算加权有向中单个源节点到其他节点的最短路径,比Dijkstra算法慢,但更通用

7

Best-first 算法

根据指定规则选择最可能的点来进行图搜索

8

双向(Bidirectional)搜索

从有向图中找出给定初始点到目标点的最短路径,进行两次搜索:一次从初始点开始向前搜索,一次从目标点向后搜索,相遇时停止

9

Boruvka算法

贪婪算法,从图中找到所有边缘权重不同的最小生成树或最小生成林

10

分支定界(Branch & Bound) 算法

通过状态空间搜索可行解

11

广度优先搜索BFS (Breadth-first search)

遍历或搜索树或图数据结构,从图任意节点开始,并在移动到下一节点之前探索当前深度水平的所有相邻节点

12

math?formula=D%5E%7B%5Cstar%7D算法

增量搜索算法

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

math?formula=A%5E%7B%5Cstar%7D)算法

在加权图中找到从给定初始节点到一组目标节点中任意节点之间的最短路径

20

迭代深化搜索算法(Iterative deepening)

具有深度限制的深度优先搜索

21

Johnson算法

在稀疏边缘加权有向图中找到节点之间最短路径

22

跳跃点搜索JPS (Jump point)算法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值