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

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

被折叠的 条评论
为什么被折叠?



