arm-linux

http://armboard.taobao.com/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

具体进入算法研究之间先要了解几个基本概念:

1. 图的概念。

图的表示方法是G=(V,E)。其中G代表Graphic, V代表Vertex,称为图G的顶点集; E代表Edge,称为图G的边集。

  1. 图又分为两种:有向图和无向图。见下图。

有向图 无向图

其中图(a)是有向图,图(b)是无向图。

使用G=(V,E)来表示图(a)的话。其中V={1, 2, 3, 4, 5, 6};E={(1,2),(2,2),(2,4),(2,5),(4,1),(4,5),(5,4),(6,3)} 。其中(4,5)和(5,4)表示的是不同的边

使用G=(V,E)来表示图(b)的话。其中V={1, 2, 3, 4, 5, 6};E={(1,2),(1, 5), (2, 5), (3, 6)} 。

邻接的概念:如果(u,v)是图G=(V, E)中的一条边,则说顶点v与顶点u邻接。上面两个图中顶点2都与顶点1邻接。而a图中顶点1与顶点2不邻接,因为(2,1)不是a途中的一个边。b图中顶点1与顶点2邻接。

的概念:无向图中一个顶点的度是指与之关联的边的数目。例如图b中顶点2的度是2。

               有向图中一个顶点的度数是其出度与入度之和。出度是指离开它的边的数目,而入读是指进入它的边的数目。例如图a中的顶点2的度数是5。其中入度是2,出度是3。

2. 图的表示法。

要表示图G=(V, E)有两种方法:邻接表和邻接矩阵。

下图三个图是无向图的表示方法,图b是邻接表,图c是邻接矩阵。

  1. 无向图2 邻接表 邻接矩阵


下面三个图是有向图的表示方法,可以仔细品味一下与无向图的区别。

  1. 有向图2 有向图邻接表 有向图邻接矩阵

用邻接表表示加权图:只要在顶点u的邻接表中对应每个顶点v都增加一个权值w(u,v),就可以表示一个加权图了。
用邻接矩阵表示加权图:只要把上图中的1改成权值w就可以了。

关于存储空间的几点考虑:
   1.显然一个邻接矩阵占用的存储空间是:每个元素的大小*V*V。和边数无关。
   2.对于无向图来说,它的邻接矩阵是主对角线对称的,也就是说存储的时候可以只存储对角线以上的部分,从而可以节省几乎一半的存储空间。
   3.如果不是加权图,那么使用邻接矩阵可以只用一个位而不是一个字空间来存储每一个矩阵元素。

posted on 2011-01-14 19:56  arm-linux  阅读(426)  评论(0编辑  收藏  举报