图的基础知识

来源:互联网 发布:运营商网络是要收费吗 编辑:程序博客网 时间:2024/04/30 07:19

      图的概念

      图(Graph)是一种较线性表和树更为复杂的数据结构。在线性表中,数据元素之间仅有线性关系,即每个数据元素只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,虽然每一层上的数据元素可能和下一层中多个元素(孩子) 相关,但只能和上一层中一个元素(双亲)相关;而在图形结构中,结点之间的关系可以是任意的,任意两个数据元素之间都可能相关。

      图在各个领域都有着广泛的应用,如电路网络分析、交通运输、管理与线路的铺设、印刷电路板与集成电路的布线等众多直接与图有关的问题,它们必须用图的有关方法进行处理;另外像工作的分配、工程进度的安排、课程表的制订、关系数据库的设计等许多实际问题,如果间接地用图来表示,处理起来比较方便。这些技术领域都是把图作为解决问题的主要数学手段来使用,因此,如何在计算机中表示和处理图结构,就是计算机科学需研究的一项重要课题。

      图的种类

      若图G中的每条边都是有方向的,则称G为有向图(Digraph)。设其顶点数为n,边数为e,则有0 ≤ e ≤ n(n-1)。在有向图中,一条有向边是由两个顶点组成的有序对,有序对通常用尖括号表示。有向边也称为弧(Arc),边的始点称为弧尾(Tail),终点称为弧头(Head)。例如。若<vi,vj>表示一条有向边,则vi是边的始点(起点),vj是边的终点。因此,<vi,vj>和<vj,vi>是两条不同的有向边。

      若图G中的每条边都是没有方向的,则称G为无向图(Undigraph)。设其顶点数为n,边数为e,则有0 ≤ e ≤ n(n-1)/2。无向图中的边均是顶点的无序对,无序对通常用圆括号表示。例如,无序对(vi,vj)和(vj,vi)表示一条边。

      图的表示

      图的存储表示方法很多,这里介绍两种最常用的方法,即邻接矩阵法(Adjacency Matrix)与邻接表法(Adjacency List)。

      邻接矩阵法

      G = (V, E) 是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵

      若邻接矩阵表示一个,则

      例如

      若邻接矩阵表示一个网络,则

      例如

 

      邻接表法

      对于无向图,vi的邻接表中每个表结点都对应于与vi相关联的一条边。因此,将邻接表的表头向量称为顶点表。将无向图的邻接表称为边表。n个顶点e条边的无向图的邻接表表示中有n个顶点表结点和2e个边表结点。

      对于有向图,vi的邻接表中每个表结点都对应于以vi为始点射出的一条边。因此,将有向图的邻接表称为出边表。n个顶点e条边的有向图,它的邻接表表示中有n个顶点表结点和e个边表结点。

 

原创粉丝点击