学习图论(一)——DFS与BFS

本文介绍了图的基本要素,包括顶点、边和连通性,并详细讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的原理,通过实例阐述了这两种遍历算法在解决最短路径问题上的应用。文中提供了DFS和BFS的核心代码,以及可能出现的错误处理,如超时(TLE)和答案错误(WA)的情况分析。
摘要由CSDN通过智能技术生成

一、图的基本要素
1.顶点/节点(vertex);
2.边(edge),连接两个点,可以为无向边也可以为有向边,可以为有权边也可以为无权边;
3.连通图:图上的任意两个点之间都是连通的。 即是任意两个点都有一条或者多条边连接着。
4.连通分量:最大连通子图。即是①是该图的子图;②该子图是连通的;③是含节点数最多的子图。

二、两种基本遍历算法
学习、参考的代码:https://blog.csdn.net/u011437229/article/details/53188837
其中对DFS和BFS的思想举例很形象。

1、深度优先搜索(DFS)

参考博客:https://blog.csdn.net/liangzhaoyang1/article/details/51415719

思想:顾名思义,深度优先,就是从一个顶点开始,往下搜索与该顶点相邻的节点,一直搜到所搜的节点不存在相邻节点,然后开始回溯,往回走,一次回到上一个节点,搜索其他路径,知道遍历所有的节点或者找到解为止。

核心代码:
void DFS(int cur)// cur为当前的点
{
if(边界条件或者需要判断的条件) //条件可以有多个,即有多个 if 语句
{
执行所需的操作;
return ;
}
做需要执行的操作;
如在走一张图时要分别搜索上下左右四个方向,则有一个for循环,每次走一个方向
//执行完应有的操作后,选择符合条件的节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值