码迷,mamicode.com
首页 > 其他好文 > 详细

图的遍历(一)—深度优先遍历

时间:2015-01-30 16:02:42      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:深度优先遍历   dfs   邻接矩阵   最短路径   城市地图   

图就是由一些顶点和连接这些顶点的边组成的。

技术分享

例如上图就是由5个顶点(1、2、3、4、5)和5条边(1-2、1-3、1-5、2-4、3-5)组成。

我们从1号顶点开始遍历这个图,遍历就是把图的每一个顶点都访问依次。

深度优先遍历的结果:

技术分享

遍历顺序为:

技术分享


深度优先遍历的思想:

首先以一个未被访问过的顶点作为起始顶点,沿着当前顶点的边走位未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探访问别的顶点,直到所有的顶点都被访问过。

沿着图的某一个分支遍历直到末端,然后回溯,再沿着另一条进行同样的遍历,直到所有的顶点都被访问过为止。


用邻接矩阵,二维数组e来存储一个图:

技术分享

1表示有边,∞表示没有边,自己到自己为0.

无向图的邻接矩阵存储法。无向图指的就是图的边没有方向。无向图的邻接矩阵沿主对角线对称,无向图的特征。

代码如下:

技术分享

技术分享

技术分享


输入:

技术分享

运行结果:

技术分享



深度优先遍历的应用——城市地图

技术分享

有向图,有5个城市,8条公路,(a,b,c)表示从城市a到城市b的路程为c公里,求出1号城市到5号城市的最短路程。

邻接矩阵存储图,规则和上面一样:

技术分享


从上图可以观察到一共有3条路径可从1->5:

1-2-3-4-5  长度14

1-2-5        长度9

1-5           长度10

技术分享

技术分享

技术分享


输入数据:

技术分享

运行结果:

技术分享



图的遍历(一)—深度优先遍历

标签:深度优先遍历   dfs   邻接矩阵   最短路径   城市地图   

原文地址:http://blog.csdn.net/wtyvhreal/article/details/43305785

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!