数据结构之图的基本概念
来源:互联网 发布:果园农场源码 编辑:程序博客网 时间:2024/06/06 14:12
图是一种典型的比线性结构与树形结构更加复杂的非线性结构。线性结构是一对一,树形结构是一对多,而图形结构则是多对多。图的应用很广泛,但是必须先要了解图的基本概念。
图的定义
图是由顶点的有穷非空集合和一个描述顶点之间关系——边(或者弧)的集合组成的。一般,图中的数据元素被称为顶点,顶点之间的关系用顶点对(边)表示。图通常用字母G表示。图的顶点用字母V表示,因此图可定义为:
图G由两个集合V(G)和E(G)组成,记作G=(V ,E ),其中V (G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的偶对(称为边)的有穷集合。
注意
1、线性结构中的数据元素称为元素;树中的数据元素称为节点;图中的元素称为顶点
2、线性表中可以是空表,树也可以是空树;但图结构,不允许没有顶点,图的定义中明确指出顶点集合V(G)有穷非空。
3、线性结构中,相邻数据元素之间具有线性关系;树结构中,相邻两层的节点具有层次关系;而在图中,任意两个顶点之间都可能有关系。
图的相关术语
无向图:顶点之间的连线是没有方向的,则该图为无向图。
有向图:顶点之间的连线是有向的,则该图为有向图。
无向完全图:若一个无向图有n个顶点,且每个顶点与其他n-1个顶点之间都有边,这样的图称为无向完全图。(对于一个具有n个顶点的无向完全图,它共有n(n-1)/2条边)。
有向完全图:若一个有向图有n个顶点,且每个顶点与其他n-1个顶点之间都有一条以该顶点为弧尾的弧,这样的图称为有向完全图。(对于一个具有n个顶点的无向完全图,它共有n(n-1)条边)。
稠密图:若一个图不是完全图,但接近完全图,则为稠密图。
稀疏图:边数很少的图称为稀疏图。
顶点的度:顶点的度是指依附于某个顶点V的边数,通常记作TD(V)。在有向图中,要区别顶点的入度和出度的概念,顶点的入度即以顶点为终点的弧的数目,记为ID(V );顶点的出度即以顶点为始点的弧的数目,记为OD(V)。有TD(V)=ID(V)+OD(V)。 边数E=TD(V)之和/2。
权(weight):图中边或弧的相关数据信息。
网(Network):边上带权的图称为网或带权图。网根据其边的方向性又可分为有向网和无向网。
路径、路径长度:在无向图G中,从一个顶点到另一个顶点的序列称为路径。路径上边的数目称为路径长度。
简单路径:在一条路径中,如果路径序列中所有的顶点除起始点和终止点之外彼此都是不同的,则称为该路径为简单路径。
回路:如果一条路径中第一个顶点和最后一个顶点相同,则称该路径为回路或环。若简单路径中第一个顶点和最后一个顶点相同,该简单路径为简单回路。
子图:对于图G=(V,E),G‘=(V‘,E’),若存在V‘是V的子集,E’是E的子集,则称图G’是G的一个子图。
连通图:在无向图中,若顶点Vi到顶点Vj有路径,则称Vi和Vj是连通的。若无向图中任意两个顶点都是连通的则称该无向图为连通图,否则称为非连通图。
极大连通子图:所谓极大连通子图是指,如果再往该子图中加入原图的任何一个顶点,该子图就不能连通。无向图中的极大连通子图称为该无向图的连通分量。因此:连通图的连通分量就是其本身的图;而非连通图则必然有多个连通分量。强连通图、强连通分量:在有向图中,任意两个顶点Vi和Vj都存在从Vi到Vj以及从Vj到Vi的路径,则称该有向图为强连通图,否则称为非强连通图;有向图的极大强连通子图称为该图的强连通分量。因此,强连通图的强连通分量就是其本身的图。
生成树:连通图G的一个子图如果是一颗包含G的所有顶点的树,则称该子图为G的生成树(Spanning Tree)。在生成树中添加任意一条属于原图中的边必然会产生回路,因为新添加的边使得所依附的两个顶点之间有了第二条路径。若生成树缺少一条边,则必然成为非连通的。(有n个顶点的连通图的生成树必有n-1条边)
总结
图的基本概念差不多都在这里了,如果你还没有完全看懂,那么你得加油了,因为这些东西都是基础的概念,反观看懂了也代表不了什么,最重要的是接下来的学会了解与运用。
- 数据结构之图的基本概念
- 数据结构之 树的基本概念
- 数据结构-图的基本概念
- 数据结构-图的基本概念
- [数据结构]数据结构的基本概念
- 【数据结构】:数据结构的基本概念
- 【数据结构之排序1】排序的基本概念
- 绪论之数据结构讨论的范畴、基本概念
- 数据结构——图的基本概念
- 【Data】数据结构的基本概念
- 数据结构的基本概念
- 数据结构的基本概念
- 数据结构的基本概念
- 数据结构的基本概念
- 数据结构的基本概念
- 数据结构的基本概念
- 数据结构的一些基本概念
- 数据结构的基本概念
- [Eclipse手册]错误The method xxx of type must override a superclass method
- LTE系统调试记录9:FPGA发送端2个fir滤波器输入输出波形
- 为什么在飞机起飞前30分钟停止办理登机手续
- 逆波兰表示法
- PHP如何隐藏手机号的部分位数
- 数据结构之图的基本概念
- Redis 安装
- 进程与线程的一个简单解释
- Python中print(__doc__)作用的教程
- java线程池
- PHP内核探索:一次请求的开始与结束
- React组件生命周期
- 解决上传app store卡在正在通过iTunes Store鉴定
- 23种设计模式(6)-适配器模式