【HIT软件构造】广度优先搜索和深度优先搜索

本文详细解析了深度优先搜索(DFS)和广度优先搜索(BFS)算法,包括它们的定义、关键问题及解决策略,以及在实际应用中的体现,如Dijkstra和Prim算法。通过实例演示了两种搜索方式的遍历过程。

        在本次实验的任务三,社交网络中,涉及到了关于图的广度优先算法。在上学期中,对本算法已经有了学习,但在完成本次任务时仍是花费了相对较多的不必要的时间。因此在此对深度优先搜索算法和广度优先搜索算法做一个系统的总结。

一.图的遍历

1.定义

从图中的某一顶点出发,对图中所有的顶点访问一次且仅访问一次。

2.关键问题

(1)在图中,如何选取遍历的其实顶点?

从编号最小的顶点开始。

(2)从某个起点开始可能到达不了所有其它的顶点,怎么办?

多次调用从某顶点出发遍历图的算法。

(3)图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过得顶点。如何避免某些顶点可能会被重复访问?

设计标记数组,标记访问过的顶点。

(4)在图中,一个顶点可以和其它多个顶点相连,当这样的顶点访问过后,如何选取下一个要访问的顶点?

广度优先搜索和广度优先搜索。

二.广度优先搜索

1.简介

        广度优先搜索(Breadth First Search),又叫做BFS,类似于树的层序遍历。尽可能在横向上进行搜索,并使“先被访问的顶点的邻接点”先于“后被访问的邻接点”被访问,故称广度优先搜索或先广搜索。

2.定义

设图G的初态是所有顶点都False,在G中任选一个顶点v为源点,则广度优先搜索可定义为:

①首先访问出发点v,并将其标记为True;

②接着依次访问所有与v相邻的顶点w1,w2……wt;

③然后依次访问与w1,w2……wt相邻的所有未被访问的点;

④以此类推,直至图中所有与源点v有路相通的顶点都以访问过为止;

⑤此时,从v开始的搜索结束,若G是连通的,则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麻了巴卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值