图的深度优先遍历和宽度优先遍历C语言,图的深度优先遍历(DFS)和广度优先遍历(BFS)算法分析...

1. 深度优先遍历

深度优先遍历(Depth First Search)的主要思想是:

1、首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;

2、当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直至所有的顶点都被访问过。

在此我想用一句话来形容 “不到南墙不回头”。

1.1 无向图的深度优先遍历图解

以下"无向图"为例:

a5ff1147fcdcf408bcc377475fbc738d.png

对上无向图进行深度优先遍历,从A开始:

第1步:访问A。

第2步:访问B(A的邻接点)。 在第1步访问A之后,接下来应该访问的是A的邻接点,即"B,D,F"中的一个。但在本文的实现中,顶点ABCDEFGH是按照顺序存储,B在"D和F"的前面,因此,先访问B。

第3步:访问G(B的邻接点)。 和B相连只有"G"(A已经访问过了)

第4步:访问E(G的邻接点)。 在第3步访问了B的邻接点G之后,接下来应该访问G的邻接点,即"E和H"中一个(B已经被访问过,就不算在内)。而由于E在H之前,先访问E。

第5步:访问C(E的邻接点)。 和E相连只有"C"(G已经访问过了)。

第6步:访问D(C的邻接点)。

第7步:访问H。因为D没有未被访问的邻接点;因此,一直回溯到访问G的另一个邻接点H。

第8步:访问(H的邻接点)F。

因此访问顺序是:A -> B -> G -> E -> C -> D -> H->F

1.2 有向图的深度优先遍历

有向图的深度优先遍历图解:

15a85630869f97b9923d90cc5d0348f6.png

对上有向图进行深度优先遍历,从A开始:

第1步:访问A。

第2步:访问(A的出度对应的字母)B。 在第1步访问A之后,接下来应该访问的是A的出度对应字母,即"B,C,F"中的一个。但在本文的实现中,顶点ABCDEFGH是按照顺序存储,B在"C和F"的前面,因此,先访问B。

第3步:访问(B的出度对应的字母)F。 B的出度对应字母只有F。

第4步:访问H(F的出度对应的字母)。 F的出度对应字母只有H。

第5步:访问(H的出度对应的字母)G。

第6步:访问(G的出度对应字母)E。 在第5步访问G之后,接下来应该访问的是G的出度对应字母,即"B,C,E"中的一个。但在本文的实现中,顶点B已经访问了,由于C在E前面,所以先访问C。

第7步:访问(C的出度对应的字母)D。

第8步:访问(C的出度对应字母)D。 在第7步访问C之后,接下来应该访问的是C的出度对应字母,即"B,D"中的一个。但在本文的实现中,顶点B已经访问了,所以访问D。

第9步:访问E。D无出度,所以一直回溯到G对应的另一个出度E。

因此访问顺序是:A -> B -> F -> H -> G -> C -> D-> E

2.广度优先遍历

广度优先遍历(Depth First Search)的主要思想是:类似于树的层序遍历。

2.1 无向图的广度优先遍历图解:

886133a2ce91dcdf468f10c767a57ad2.png

从A开始,有4个邻接点,“B,C,D,F”,这是第二层;

在分别从B,C,D,F开始找他们的邻接点,为第三层。以此类推。

d084756cad15d00a5a854bbb1b16af7d.png

因此访问顺序是:A -> B -> C -> D -> F -> G -> E-> H

2.2 有向图的广度优先遍历图解:

2e0d4f3b6a40e28b26a71ee7cc7b1c60.png

与无向图类似 。可以参考。

1ee633f616d20493eebe53295cc37542.png

因此访问顺序是:A -> B -> C -> F -> D -> H -> E-> G

没有贴代码,需要可以给博主私哦。

PS:打字不易,转载请说明出处。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值