学习目标:
DFS & BFS
学习内容:
1. DFS概念
DFS:算法会尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点
v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在
未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点
都被访问为止。这种算法不会根据图的结构等信息调整执行策略。
----from Wikipedia
BFS类似。
2.DFS流程
1.
首先将根节点放入
stack
中。
2.
从
stack
中取出第一个节点,并检验它是否为目标。
3.
重复步骤
2
。
4.
如果不存在未检测过的直接子节点。
5.
重复步骤
4
。
6.
若
stack
为空,表示整张图都检查过了
——
亦即图中没有欲搜寻的目标。结束搜寻并回传
“
找
不到目标
”
。
学习时间:
2020年12月31日,下午7点
学习记录:
DFS
和
BFS
主要作为一种遍历图或解空间树的思想,一般不会单独出现,更多的是辅助其他图论
算法,或配合特殊优化的手段遍历解空间树筛选正确解。
在蓝桥杯这种类
OI
赛制中,会一手
DFS
基本就可以省一,而国赛更多的是动态规划(当然也可以
DFS
嗯跑)。
在天梯赛中,
DFS
是经常考查的算法,难度通常在
L2
左右(因为
L1
不涉及任何算法)。
在
XCPC
(
CCPC
和
ICPC
)中,
DFS
和
BFS
几乎从不单独出现,一般作为其他图论算法的一部分
(
Tarjan
求连通分量,网络流求增广路),或考察部分图上的性质(树的重心
/
直径)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/79282.html