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

[数据结构] 图

时间:2018-02-06 18:10:58      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:img   信息   size   线路图   这一   应用   需要   info   表示   

  图

  一个,由顶点(vertex)集和边(edge)集E组成。每一条边,连接了两个顶点,也就是一个点对

  有向图 无向图

  如果点对之后是分次序的(比如仅限于从A点到B点),那么这这个图就是有向图(digraph)此时我们可以把边叫做弧(arc)。

  如果没有次序的差别,那么就是无向图

技术分享图片

图-无向图和有向图

  连通 强连通 弱连通

  在上图的无向图中,由B到A,可以走B→A,也可以走B→C→A,还可以走B→C→D→A。

  在上图的有向图中,由B到A,因为受到次序的限制,只能走B→A,B→C→A。

  对于这样的线路,除了出发的顶点和结束的顶点之外,要求经过的顶点都不相同。这样这样的一组顶点序列就叫做一条路径。

  对于无向图,如果任意两个顶点都能找到一条路径,这个无向图就是连通的

  对于有向图,在弧方向的限制下,如果任意两个顶点都能找到一条路径,这个有向图就是强连通的。如果去掉弧的指向才能满足条件,那么就是弱连通的。

  完全图

  当一个图中,每一个点和任意另一个点之间都是点对(都由边连接),这个图就是完全图

技术分享图片

图-完全图

  图的现实应用举例

  图的现实应用还是非常好理解的。

  在城市里坐地铁,地铁线路图就是一个 。从 下沙江滨站 ,要前往 龙翔桥站 ,就是在找这两个顶点间的路径。

 

  图的实现方法

  仍然使用C语言举例。

  邻接矩阵法

  邻接矩阵法:用一个一维数组来保存顶点的信息,用一个二维数组来保存与 边 相关的信息。

  比如下面这个无向图的例子,我们用0表示两个顶点间没有边,1表示这两个顶点间的边存在:

技术分享图片

图-邻接矩阵法的简单示例(无向图)

  其实二维数组中还可以存储更多的内容,比如在上面地铁的例子中,可以在二维数组中存储两个顶点的距离,然后用-1表示这两个顶点间无可通地铁路径。具体的使用方式,存储的内容都可以参照实际的需求进行变更。

  我们再看一下有向图的例子。这一次,我们为每一条边都加入一个,这个权的实际意义,比如两个顶点间的地铁的距离。用无穷远表示两个顶点之间没有有效的边。

 技术分享图片

图-邻接矩阵法的例子(带 权 的有向图)

  需要注意的是:邻接矩阵对于边数相对顶点较少的图,就是对存储空间极大的浪费。

  邻接表

  对于边的数目相对于顶点较少的图,

  

 

 

 

 

 

 

 

 

 

 

未完。 

[数据结构] 图

标签:img   信息   size   线路图   这一   应用   需要   info   表示   

原文地址:https://www.cnblogs.com/OranBlog/p/8423119.html

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