数据结构——图的基本概念

16 篇文章 1 订阅
订阅专栏

图看起来就像下图这样:

在计算机科学中,一个图就是一些顶点的集合,这些顶点通过一系列结对(连接)。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。

注意:顶点有时也称为节点或者交点,边有时也称为链接。

一个图可以表示一个社交网络,每一个人就是一个顶点,互相认识的人之间通过边联系。

图有各种形状和大小。边可以有权重(weight),即每一条边会被分配一个正数或者负数值。考虑一个代表航线的图。各个城市就是顶点,航线就是边。那么边的权重可以是飞行时间,或者机票价格。

有了这样一张假设的航线图。从旧金山到莫斯科最便宜的路线是到纽约转机。

边可以是有方向的。在上面提到的例子中,边是没有方向的。例如,如果 Ada 认识 Charles,那么 Charles 也就认识 Ada。相反,有方向的边意味着是单方面的关系。一条从顶点 X 到 顶点 Y 的边是将 X 联向 Y,不是将 Y 联向 X。

继续前面航班的例子,从旧金山到阿拉斯加的朱诺有向边意味着从旧金山到朱诺有航班,但是从朱诺到旧金山没有(我假设那样意味着你需要走回去)。

下面的两种情况也是属于图:

左边的是树,右边的是链表。他们都可以被当成是树,只不过是一种更简单的形式。他们都有顶点(节点)和边(连接)。

第一种图包含圈(cycles),即你可以从一个顶点出发,沿着一条路劲最终会回到最初的顶点。树是不包含圈的图。

另一种常见的图类型是单向图或者 DAG:

就像树一样,这个图没有任何圈(无论你从哪一个节点出发,你都无法回到最初的节点),但是这个图有有向边(通过一个箭头表示,这里的箭头不表示继承关系)。

为什么要使用图?

也许你耸耸肩然后心里想着,有什么大不了的。好吧,事实证明图是一种有用的数据结构。

如果你有一个编程问题可以通过顶点和边表示出来,那么你就可以将你的问题用图画出来,然后使用著名的图算法(比如广度优先搜索 或者 深度优先搜索)来找到解决方案。

例如,假设你有一系列任务需要完成,但是有的任务必须等待其他任务完成后才可以开始。你可以通过非循环有向图来建立模型:

每一个顶点代表一个任务。两个任务之间的边表示目的任务必须等到源任务完成后才可以开始。比如,在任务B和任务D都完成之前,任务C不可以开始。在任务A完成之前,任务A和D都不能开始。

现在这个问题就通过图描述清楚了,你可以使用深度优先搜索算法来执行执行拓扑排序。这样就可以将所有的任务排入最优的执行顺序,保证等待任务完成的时间最小化。(这里可能的顺序之一是:A, B, D, E, C, F, G, H, I, J, K)

不管是什么时候遇到困难的编程问题,问一问自己:“如何用图来表述这个问题?”。图都是用于表示数据之间的关系。 诀窍在于如何定义“关系”。

如果你是一个音乐家你可能会喜欢这个图:

这些顶点来自C大调的和弦。这些边--表示和弦之间的关系--描述了怎样从一个和弦到另一个和弦。这是一个有向图,所以箭头的方向表示了怎样从一个和弦到下一个和弦。它同时还是一个加权图,每一条边的权重(这里用线条的宽度来表示)说明了两个和弦之间的强弱关系。如你所见,G7-和弦后是一个C和弦和一个很轻的 Am 和弦。

程序员常用的另一个图就是状态机,这里的边描述了状态之间切换的条件。下面这个状态机描述了一个猫的状态:

图真的很棒。Facebook 就从他们的社交图中赚取了巨额财富。如果计划学习任何数据结构,则应该选择图,以及大量的标准图算法。

 

 

 

二,图相关的概念和术语,图相关的概念和术语

1,无向图和有向图

对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下:

ds54

因此,(Vi,Vj)和(Vj,Vi)表示的是同一条边。注意,无向图是用小括号,而下面介绍的有向图是用尖括号。

无向图的顶点集和边集分别表示为:

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

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

 

对于一个图G,若每条边都是有方向的,则称该图为有向图。图示如下。

ds55

因此,<Vi,Vj>和<Vj,Vi>是两条不同的有向边。注意,有向边又称为弧。

有向图的顶点集和边集分别表示为:

V(G)={V1,V2,V3}

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

2,无向完全图和有向完全图

我们将具有n(n-1)/2条边的无向图称为无向完全图。同理,将具有n(n-1)条边的有向图称为有向完全图。

3,顶点的度

对于无向图,顶点的度表示以该顶点作为一个端点的边的数目。比如,图(a)无向图中顶点V3的度D(V3)=3

对于有向图,顶点的度分为入度和出度。入度表示以该顶点为终点的入边数目,出度是以该顶点为起点的出边数目,该顶点的度等于其入度和出度之和。比如,顶点V1的入度ID(V1)=1,出度OD(V1)=2,所以D(V1)=ID(V1)+OD(V1)=1+2=3

记住,不管是无向图还是有向图,顶点数n,边数e和顶点的度数有如下关系:

clip_image002

因此,就拿有向图(b)来举例,由公式可以得到图G的边数e=(D(V1)+D(V2)+D(V3))/2=(3+2+3)/2=4

4,子图

故名思义,这个就不解释了。

5,路径,路径长度和回路

路径,比如在无向图G中,存在一个顶点序列Vp,Vi1,Vi2,Vi3…,Vim,Vq,使得(Vp,Vi1),(Vi1,Vi2),…,(Vim,Vq)均属于边集E(G),则称顶点Vp到Vq存在一条路径。

路径长度,是指一条路径上经过的边的数量。

回路,指一条路径的起点和终点为同一个顶点。

6,连通图(无向图)

连通图是指图G中任意两个顶点Vi和Vj都连通,则称为连通图。比如图(b)就是连通图。下面是一个非连通图的例子。

ds56

上图中,因为V5和V6是单独的,所以是非连通图。

7,强连通图(有向图)

强连通图是对于有向图而言的,与无向图的连通图类似。

 

8,网

带”权值”的连通图称为网。如图所示。

ds57

 

顶点和边

理论上,图就是一堆顶点和边对象而已,但是怎么在代码中来描述呢?

有两种主要的方法:邻接列表和邻接矩阵。

邻接列表:在邻接列表实现中,每一个顶点会存储一个从它这里开始的边的列表。比如,如果顶点A 有一条边到B、C和D,那么A的列表中会有3条边

邻接列表只描述了指向外部的边。A 有一条边到B,但是B没有边到A,所以 A没有出现在B的邻接列表中。查找两个顶点之间的边或者权重会比较费时,因为遍历邻接列表直到找到为止。

邻接矩阵:在邻接矩阵实现中,由行和列都表示顶点,由两个顶点所决定的矩阵对应元素表示这里两个顶点是否相连、如果相连这个值表示的是相连边的权重。例如,如果从顶点A到顶点B有一条权重为 5.6 的边,那么矩阵中第A行第B列的位置的元素值应该是5.6:

往这个图中添加顶点的成本非常昂贵,因为新的矩阵结果必须重新按照新的行/列创建,然后将已有的数据复制到新的矩阵中。

所以使用哪一个呢?大多数时候,选择邻接列表是正确的。下面是两种实现方法更详细的比较。

假设 V 表示图中顶点的个数,E 表示边的个数。

操作邻接列表邻接矩阵
存储空间O(V + E)O(V^2)
添加顶点O(1)O(V^2)
添加边O(1)O(1)
检查相邻性O(V)O(1)

“检查相邻性” 是指对于给定的顶点,尝试确定它是否是另一个顶点的邻居。在邻接列表中检查相邻性的时间复杂度是O(V),因为最坏的情况是一个顶点与每一个顶点都相连。

稀疏图的情况下,每一个顶点都只会和少数几个顶点相连,这种情况下相邻列表是最佳选择。如果这个图比较密集,每一个顶点都和大多数其他顶点相连,那么相邻矩阵更合适。



作者:唐先僧
链接:https://www.jianshu.com/p/bce71b2bdbc8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

数据结构---基本概念
weixin_44645825的博客
09-08 1388
1.由结点的有穷集合V和边的集合E组成。为了与树形结构区别,在结构中常将结点称为顶点,边是顶点的有序偶对。若两个顶点之间存在一条边,则表示这两个顶点具有相邻关系。 2.有向和无向: 有向每条边都有方向,无向每条边都没有方向。 3.弧: 在有向中通常将边称为弧,含箭头的一端称为弧头,另一端称弧尾,记作<vi,vj>,他表示从顶点vi到顶点vj有一条边。 4.顶点的度、入度、出度: 在无向中,边记为(vi,vj),它等价于在有向中存在<vi,vj>和<vi,
数据结构——相关基本概念
jiashuai94的博客
06-22 526
在线性表中,数据元素之间是被串联起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中的多个元素相关,但只能和上一层中的一个元素相关。 可是现实生活中,好多关系不再是一对一或一对多,比如人和人之间的关系,会互相认识,就要考虑多对多的情况。这就是今天要介绍的——是一种较线性表和树更加复杂的数据结...
数据结构基本概念
qq_44937699的博客
03-16 1万+
数据结构基本概念一、什么是?二、的分类1. 无向1.1 无向完全1.2 连通(无向)1.3 无向的度2. 有向2.1 有向完全2.2 强连通(有向)2.3 有向的度2. 稀疏和稠密3. 有环和无环4. 加权和无权三、的存储结构1. 邻接矩阵2. 邻接表参考链接 一、什么是是一种非线性的数据结构表示多对多的关系。 (Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V, E),其中,G表示一个,V是G中顶点的集合,E是G中
数据结构---
zzqingyun的博客
07-30 617
由。
数据结构基本概念
qq_43607916的博客
07-28 1778
文章目录: 基本概念 的存储结构 的遍历 最小代价生成树 最短路径 拓扑排序 关键路径 文章将按照上述目录依次讲解 这一节主要谈第一部分:基本概念和相关术语 1.的概念 (Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E).其中,G表示一个,V是G中顶点的结合,E是G中边的集合. 区分于线性表和树的结点,在中数据元素称为顶点 线性表相邻的数据元素之间具有线性关系 树结构相邻两层的结点具有层次关系 而结构中任意两个顶点之间都可能有关系,顶点之间
数据结构———基本概念【详细解析】
yydsssy的博客
09-04 1218
本篇文章将带大家进入数据结构的学习,了解基本的概念,为之后的学习打下基础
数据结构——概念综述
05-19
信息类和计算机类面试主要是专业课的基本概念,还有可能是专业英文缩写词,或者问一些跟导师研究方向有关的问题。 面试分值比较重,所以要严肃对待,复试时除了要准备专业知识,谈吐举止也很重要。面试的流程通常为...
数据结构——C++实现》(第二版)课本源代码
10-30
数据结构——C++实现》(第二版)是一本经典的计算机科学教材,专注于介绍各种数据结构及其在C++编程语言中的实现。这本书的核心是通过实际的代码示例帮助读者理解和掌握数据结构基本概念,这对于任何想要深入...
数据结构—— “基本概念“ 了解逻辑、存储、算法、复杂度等细致问题
weixin_44278698的博客
04-25 928
文章目录一、数据结构基本概念数据结构直接的关系:二、逻辑结构三、存储结构1. 顺序存储2. 链式存储3. 索引存储4. 散列存储四、算法概念1. 算法的定义2. 算法效率的度量——事前估计方法3. 算法效率的度量——计算大O4. 常见时间复杂度 一、数据结构基本概念 数据结构是研究组成数据的数据元素关系的学科 数据结构研究目的 研究数据元素的关系,帮助我们开发时候更好的组件数据模型,让数据再内存种操作更流程高效 数据结构直接的关系: 逻辑关系 、存储关系、运算关系 数据结构(DS)可以
数据结构——树——基本概念
qq_40281548的博客
04-19 1543
数据结构——树树的基本概念树的定义基本术语 树的基本概念 树的定义 树是 n (n >= 0) 个节点的有限集。当 n = 0 时,称为空树。在任意一棵非空树中应满足: 1)有且仅有一个特定的称为根的节点 2)当 n > 1 时,其余节点可分为 m (m > 0) 个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的子树 显然,树的定义是递归的,即树在定义中又用到了其自身,树是一个递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点: 1)树的根节点没有前驱,
数据结构——
qq_42106610的博客
12-18 5481
——定义、分类、术语、常用表示方法、常用操作、代码(分别用邻接矩阵和邻接表两种方法实现)
数据结构的概念,的领接矩阵,领接表,十字链表,邻接多重表,DFS,BFS
最新发布
2301_81294700的博客
09-23 629
首先,我们要明确什么是,我们在前面知道了树是一种1:n的对应关系,而则是m:n的关系,即常用于表示更多复杂的关系,比如在地中从某点到某点的关系。那么,我们怎么表示呢?
数据结构的基础概念
奇舞周刊
05-29 1010
1、的概念(Graph):是由顶点的有穷非空集合和顶点之间边的集合组成。顶点(Vertex):中的数据元素。边(Edge):顶点之间的逻辑关系,边可以是有向的或无向的,也可以带有权重(可以表示距离,花费等)无向边:若顶点之间的边没有方向,则称这条边为无向边有向边:若从顶点 vi 到 νj的边有方向,则称这条边为有向边(一条无向边可以用两条有向边来表示)无向中任意两个顶点之间的边都是无向边...
数据结构-基本概念
WinterXJujube的博客
06-21 805
时由非空的顶点集合和一个描述顶点之间关系的集合组成。可以定义为:G表示一个,V表示点集,E表示边集。集合E的每一个二元组都包含两个值和,表示为一条边的两个顶点。
数据结构必备基础知识】之基本概念详解
热门推荐
水亦心的博客
11-03 2万+
一、前言 从今天开始就给大家分享有关于的概念和代码啦,不知道大家有没有看够树的相关内容呢?以后还会慢慢给大家再分享的,代码要一遍一遍过,一轮一轮学习。第一轮树就先到这里,等第二轮还会给大家分享的。 应该是数据结构中处于霸王地位的一部分了,会涉及到论的相关知识,咱们现在还涉及不到,等到以后分享数学基础,讲离散数学的时候,会给大家分享有关论的内容。 为什么称是霸王地位呢?因为应该是...
数据结构】—基本概念
qq_43581971的博客
11-15 457
的琐碎概念
类C语言与数据结构——数据存储与基本操作
数据结构第一章介绍了类C语言的概念,用于数据结构的描述,并展示了数据结构的存储结构以及C语言中函数定义和参数传递的方式。” 数据结构是计算机科学中一个重要的基础概念,它涉及到如何有效地组织和管理数据,...
6
原创
27
点赞
70
收藏
4
粉丝
关注
私信
写文章

热门文章

  • VirtualBox设置桥接网络 10843
  • maven仓库配置(最全) 5340
  • 数据结构——堆排序 1638
  • kmeans算法简单实现 1503
  • 数据结构——二叉树(五)红黑树,哈夫曼树 1145

分类专栏

  • maven 1篇
  • 虚拟机 1篇
  • 桥接网络 1篇
  • 程序设计算法与思想 2篇
  • 机器学习 2篇
  • leetcode 2篇
  • 数据结构 16篇
  • c 15篇
  • 数据结构 c
  • Lua

最新评论

  • VirtualBox设置桥接网络

    m0_73691422: 第四张图是改的什么东西呀

  • VirtualBox设置桥接网络

    你说好不好啊: 哈哈,我也成功了。

  • VirtualBox设置桥接网络

    panpan高: 网卡被禁用了吧

  • VirtualBox设置桥接网络

    wxhlqy: 我的虚拟机在这边:(2)在virtualbox网络设置里进行设置,第二个红框界面名称这边看不到任何宿主机的网卡。。

  • VirtualBox设置桥接网络

    雨微蓝: 大佬牛逼,大佬牛逼,大佬牛逼!!!!专程登录给你点赞!!!

最新文章

  • maven仓库配置(最全)
  • VirtualBox设置桥接网络
  • 1.1.3 算法
2021年2篇
2020年22篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家江门树脂玻璃钢雕塑现货做玻璃钢雕塑的厂家湘潭玻璃钢座椅雕塑淮南景区玻璃钢雕塑批发湛江美陈玻璃钢动物雕塑莆田rtm法玻璃钢雕塑玻璃钢与石头雕塑成本玻璃钢动物雕塑收费玻璃钢人像雕塑有哪些深圳泡沫玻璃钢雕塑公司哪家好玻璃钢泡沫雕塑售价北京秋季商场美陈怎么样江西玻璃钢雕塑制作厂河北节庆商场美陈销售厂家中山玻璃钢雕塑定做厂家杭州市临安区商场美陈布置制作丹阳玻璃钢雕塑收费标准德兴玻璃钢雕塑玻璃钢雕塑工艺工厂温州雕塑玻璃钢公司兰州卡通玻璃钢雕塑制作五华区玻璃钢雕塑加工厂家哪家好兰州抽象人物玻璃钢雕塑商场的美陈灯大玻璃钢卡通雕塑图片临汾园林玻璃钢雕塑定制贵阳商场美陈制作玻璃钢雕塑用什么补荆门仿铜玻璃钢雕塑制作山东室内商场美陈哪里有香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化