数据结构与算法-进阶(三)图

本文介绍了图数据结构,包括有向图、无向图及其分类。有向图分为有环与无环,无向图可视为双向连接的有向图。此外,还讲解了混合图、多重图的概念,强调了简单图与多重图的区别。图在导航、社交网络等场景中有广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构与算法-进阶(三)图

摘要

数据结构中第三大分类就是图结构。简单地理解,图就是由顶点和边组成的。根据顶点的分布和边的连接这两种情况,可以分成不同的类型。接下来将介绍图以及它的大致分类。

回顾之前的数据结构,大致可以线性结构和树形结构。线性结构比如数组、链表、栈、队列、哈希表;树形结构比如二叉树、B树、堆、Trie、哈夫曼树、并查集。现在要正式接触第三种数据结构 — 图。

图(Graph)是由顶点(vertex)和边(edge)组成,通常的表达式是 G = (V, E)。看字母大致可以理解到,G 表示一个图,V 表示它的顶点集合,E 表示它的边集合,它们的特性如下:

  • 一个图中的顶点必须有,可以有很多,但一定是有限的;
  • 任意两个顶点可以用线来连接,表示两个顶点的关系,一个图中可以没有一个连线。

如下所示,有三个图:

unknow.drawio

图的应用场景非常广泛,比如开车时开启的导航,玩游戏时看的地图,微信应用中的社交好友关系等。这些都是使用图来描述的。

图的分类

有向图

有向图是连接两个顶点的边有明确的方向(或指向):

未命名绘图.drawio (2)

有向图中,有另外一个分类,就是无环和有环,比如从任意顶点出发无法经过若干条边回到该顶点,那么它就是一个有向无环图(比如上图)。反之就是有向有环图,比如下图所示:

未命名绘图.drawio (1)

无向图

看过有向图之后,再看无向图就非常容易理解,无向图就是没有方向的图,比如下图:

未命名绘图-第 2 页.drawio

无向图也可以用有向图来表示,比如上图中的无向图用有向图表示,可以如下图所示:

未命名绘图-第 2 页.drawio (1)

混合图

混合图边可能是无向的,也可能是有向的,比如下图,0到4和3到5的连线是无向的,其他的连线是有向的:
未命名绘图-第9页.drawio

多重图

在介绍其他图之间,需要先了解一下平行边,下面有两种情况的平行边:

  • 在无向图中,关联一对顶点的无向边如果多于1条,则称这些边是平行边;
  • 在有向图中,关联的一对顶点的有向边如果多于1条,并且它们的方向相同,则称这些边为平行边。

还有个概念,就是自环,一个顶点的边两头都指向自己。

那么有平行边或者有自环的图就是多重图。与之相反的是简单图,即没有平行边也没有自环的图就是简单图,之后文章讨论的基本都是简单图。

总结

  • 图是由顶点和边组成的;
  • 一个图可以没有边,但是不能没有顶点
  • 根据连接顶点的边是否有方向,可以分为有向图和无向图;
  • 根据是否有平行边,可以分为多重图和简单图。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我为双鱼狂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值