您的位置:首页 > 理论基础 > 数据结构算法

数据结构之图

2019-10-24 17:30 1086 查看

前言

1.图状结构是我们研究的结构里面最复杂的结构

2.图的相关关系非常复杂,相关概念非常多

但是图又很重要,不管是地图,人物关系等,把每个人或者每个地方看作一个点,其他的点都会与之有上千万的联系。所有就都有及其复杂的网络,不管是路径规划,导航提醒还是警察在断案,其实本质上都是图的应用。

图的定义

图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常称为顶点(vertex),而点到点之间的连线通常称之为边或者弧(edge)。通常记为G=(V,E)。

注意:线性表可以是空表,树可以是空树,图不可以是空图,图可以没有边,但是至少要有一个顶点。

  •  线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点(Vertex)。
  • 线性表中可以没有数据元素,称为空表。树中可以没有结点,叫做空树。
  • 线性表中,相邻的数据元素之间具有线性关系,树结构中,相邻两层的结点具有层次关系,而图中,任意两个顶点之间都可能有关系,顶点之间的逻辑关系用边来表示,边集可以是空的。

 

  1.无向图

 

       如果一个图结构中,所有的边都没有方向性,那么这种图便称为无向图。典型的无向图,如图二所示。由于无向图中的边没有方向性,这样我们在表示边的时候对两个顶点的顺序没有要求。例如顶点VI和顶点V5之间的边,可以表示为(V2, V6),也可以表示为(V6,V2)。

  

            图二  无向图

      对于图二无向图,对应的顶点集合和边集合如下:

       V(G)= {V1,V2,V3,V4,V5,V6}

       E(G)= {(V1,V2),(V1,V3),(V2,V6),(V2,V5),(V2,V4),(V4,V3),(V3,V5),(V5,V6)}

 

  2.有向图

      一个图结构中,边是有方向性的,那么这种图就称为有向图,如图三所示。由于图的边有方向性,我们在表示边的时候对两个顶点的顺序就有要求。我们采用尖括号表示有向边,例如<V2,V6>表示从顶点V2到顶点V6,而<V6,V2>表示顶点V6到顶点V2。

  

             图三  有向图

 

      对于图三有向图,对应的顶点集合和边集合如下:

       V(G)= {V1,V2,V3,V4,V5,V6}

       E(G)= {<V2,V1>,<V3,V1>,<V4,V3>,<V4,V2>,<V3,V5>,<V5,V3>,<V2,V5>,<V6,V5>,<V2,V6>,<V6,V2>}

 

有权图和无权图

所谓有权图就是每条边都具有一定的权重,通常就是边上的那个数字;而无权图就是每条边没有权重。  如下图所示即为有权图,(A,B)的权就是13。

 

连通、连通图、连通分量

在无向图中,两顶点有路径存在,就称为连通的。若图中任意两顶点都连通,同此图为连通图。无向图中的极大连通子图称为连通分量。

以下面两个图为例,下面的图是上面的图的连通分量,并且下面的图是连通图。上面图中I与J也是连通的。

 

 

 

 

 

      上图的一个连通分量

 

强连通图、强连通分量

在有向图中,两顶点两个方向都有路径,两顶点称为强连通。若任一顶点都是强连通的,称为强连通。有向图中极大强连通子图为有向图的强连通分量。

以下面的图为例:下图就是一个强连通图,并且是下面图的强连通分量。

      强连通图 

    

 

 

 顶点的度、入度和出度

顶点的度为以该顶点为一个端点的边的数目。

对于无向图,顶点的边数为度,度数之和是顶点边数的两倍。

对于有向图,入度是以顶点为终点,出度相反。有向图的全部顶点入度之和等于出度之和且等于边数。顶点的度等于入度与出度之和。

注意:入度与出度是针对有向图来说的。

 

 

 

     A出度:1    A入度:2

 

图的存储

邻接矩阵

邻接矩阵是一个二维数组,数据项表示两点间是否存在边,如果图中有 N 个顶点,邻接矩阵就是 N*N 的数组。

 

 

  无向图的边数组是一个对称矩阵  

1表示有边,0表示没有边顶点与自身相连用 0 表示

 

 

 

   横向为:出度   纵向为:入度

 

 

 

 

   不要混淆度和权值!!      V2的入度为:1        V2的入度权值为:3

邻接表

  邻接表是一个链表数组(或者是链表的链表),每个单独的链表表示了有哪些顶点与当前顶点邻接。

 

 

                    无向图的邻接表(指的边数)

  

 

 

                    有向图的邻接表(指的出度)

 

 

       有向图的逆邻接表(指的入度)

 

 

       带权值邻接表(指的出度)

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: