【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图

图的基本概念

  • 导读
  • 一、图的定义
  • 二、图的分类
    • [2.1 有向图与无向图](#2.1 有向图与无向图)
    • [2.2 简单图与多重图](#2.2 简单图与多重图)
  • 三、生活中的图
  • 结语
    • [📌 今日核心要点](#📌 今日核心要点)
      • [1. 图的定义与本质](#1. 图的定义与本质)
      • [2. 图的分类](#2. 图的分类)
      • [3. 现实映射](#3. 现实映射)
    • [🔍 下期预告](#🔍 下期预告)
      • [1. 顶点连接性指标](#1. 顶点连接性指标)
      • [2. 图的连通性](#2. 图的连通性)
      • [3. 带权图解析](#3. 带权图解析)
    • [💬 互动与支持](#💬 互动与支持)

导读

大家好,很高兴又和大家见面啦!!!

【数据结构】这门课主要会学习2种结构:

  • 线性结构
  • 非线性结构

而线性结构中的顺序表、链表、栈、队列、串、矩阵、数组我们已经学完了。非线性结构中的树、集合我们也已经学完了。下面我们就将进入【数据结构】的最后一个非线性结构------图的学习。

在第六章------图这个章节中,我们会分为4个板块来学习:

  • 图的基本概念
  • 图的存储与基本操作
  • 图的遍历
  • 图的基本应用

从今天开始,我们会进入图的第一个板块------图的基本概念的学习。我们会在今天的内容中,知道什么是图?图有哪些分类?以及图中的一些重要概念。下面我们就一起进入今天的内容吧!!!

一、图的定义

图(Graph)是数据结构中一种重要的非线性结构,用于表示对象之间的关系。它由顶点(Vertex)​和边(Edge)​组成,能够建模复杂的关联关系,广泛应用于社交网络、路径规划、推荐系统等领域。

图 G G G 是由顶点集 V V V 和边集 E E E 组成,记为 G = ( V , E ) G = (V, E) G=(V,E),其中 V ( G ) V(G) V(G) 表示图 G G G 中的顶点的有限非空集; E ( G ) E(G) E(G) 表示图 G G G 中顶点之间的关系(边)集合。

这里我们以上图中展示的图来进一步的认识图中的顶点与边。

所谓的顶点,就是A/B/C/D/E这些结点;边指的就是连接这些顶点的线。在一个图中,可以顶点与顶点之间可以没有线连接,即边集可以为空集;但是不存在没有顶点的图,即顶点集一定是非空集。

举一个最简单的例子,在上图中,如果我们只看结点A,其它都不看,此时的结点A就是一个图:
A

再说一个我们比较熟悉的例子,我们目前所学的数据结构:

  • 线性结构:顺序表、链表、栈、队列、串、矩阵
  • 非线性结构:
    • 树形结构:树、m叉树、森林
    • 集合
    • 并查集

这些都可以看做一种特殊图。这是因为这些数据结构都是由顶点与边构成:

  • 线性结构:由n个顶点和n-1条边构成的单链路径的图,无环无分支;

a b c d

  • 树形结构:由n个顶点与n-1条边构成的有向无环图

a b c

  • 集合:由n个顶点与0条边构成的零图

a b c

  • 并查集:由多个无向无环图构成

a b c d e f

那也就是说,只要是由顶点与将各个顶点连接起来的边就能得到图;

在图 G G G 中,若 V = v 1 , v 2 , v 3 ... ... V={v_1, v_2, v_3......} V=v1,v2,v3...... ,则我们可以用 ∣ V ∣ |V| ∣V∣ 表示图 G G G 中顶点的个数,也称为图 G G G 的阶, E = { ( u , v ) ∣ u ∈ V , v ∈ V } E = \{(u, v)|u∈V,v∈V\} E={(u,v)∣u∈V,v∈V} ,用 ∣ E ∣ |E| ∣E∣ 表示图 G G G 中边的条数。

在线性表、树中我们都有提到过一种特殊情况------空表、空树。也就是说在线性表和树中可以什么都没有,但是在图中不行,图不存在空图

接下来我们就来认识一下图中的一些基本概念与术语;

二、图的分类

2.1 有向图与无向图

在图中,我们根据边是否有明确的方向指示将图分为两类:

  • 有向图

若E为有向边(也称弧)的有限集合,则图G为有向图。

弧是顶点的有序对,记为 < v , w > <v, w> <v,w> 。

其中v与w是顶点,v称为弧尾 ,w称为弧头
< v , w > <v, w> <v,w> 称为从v到w的弧,也称v邻接到w。
弧 弧 弧 a b c

上图可表示为:
G = ( V , E ) G = (V, E) G=(V,E)
V = { a , b , c } V = \{a, b, c\} V={a,b,c}
E = { < a , b > , < b , c > , < c , a > } E = \{<a, b>, <b, c>, <c, a>\} E={<a,b>,<b,c>,<c,a>}

在上图中,存在3条弧:

  • < a , b > <a, b> <a,b>:a为弧尾,b为弧头,a邻接到b
  • < b , c > <b, c> <b,c>:b为弧尾,c为弧头,从b到c的弧
  • < c , a > <c, a> <c,a>:c为弧尾,a为弧头,从c到a的弧,也叫做c邻接到a

当我们在表述一条弧时,我们采用前两种中的任意一种即可,第3条弧,我是为了给大家展示两种说法都是可行的,没有其它的含义。

  • 无向图

若E是无向边(简称边)的有限集合,则图G称为无向图。

边是顶点的无序对,记为 ( v , w ) (v, w) (v,w) 或 ( w , v ) (w, v) (w,v) 。可以说w与v互为邻接点。

边 ( v , w ) (v, w) (v,w) 依附于w和v,也可以称为边 ( v , w ) (v, w) (v,w) 和v,w相关联。
边 边 边 a b c

上图可表示为:
G = ( V , E ) G = (V, E) G=(V,E)
V = { a , b , c } V = \{a, b, c\} V={a,b,c}
E = { ( a , b ) , ( b , c ) , ( c , a ) } E = \{(a, b), (b, c), (c, a)\} E={(a,b),(b,c),(c,a)}

在上图中,有3条边:

  • ( a , b ) (a, b) (a,b):边 ( a , b ) (a, b) (a,b) 依附于a和b
  • ( b , c ) (b, c) (b,c):边 ( b , c ) (b, c) (b,c) 与b和c相关联
  • ( c , a ) (c, a) (c,a):边 ( c , a ) (c, a) (c,a) 依附于a和c

在无向图中,由于没有起点与终点之分,因此我们在表述时,不需要在意顶点的先后顺序

2.2 简单图与多重图

按照边是否重复,我们可以将图分为两类:

  • 简单图

一个图G若满足:

  1. 不存在重复边
  2. 不存在顶点到自身的边

则图G称为简单图。
a b c

像上图这种没有重复边且不存在自环的图就是简单图,前面展示的有向图与无向图都是简单图

  • 多重图

与简单图相反,多重图中会存在三种情况:

  1. 仅有重复边(或弧),不允许自环

a b c

像上图这种有多条重复的弧,但是没有出现自环的图就是狭义上的多重图;

  1. 仅有自环,无重复边(或弧)

a b c

像上图这种存在自环,但是无重复弧的图也属于多重图,但是我们将其称为伪图

  1. 既有重复边,又有自环

a b c

像上图这种既存在重复弧,又有自环的图,就是广义上的多重图,也称为伪图。

在本章节的学习中,我们只会学习简单图,不会接触多重图,因此大家只需要对多重图有一个基本的了解即可!!!

三、生活中的图

介绍完了图的两种分类方式,接下来我们就来看一下日常生活中的图:

  • 交通网络

在我们的生活中,交通网络就是一个最直白的有向图的例子,比如我们要从上海去北京,那我们就需要搭乘该方向的交通工具:
上海 北京

上海与北京这就是图中的两个顶点,它们之间的路径就是对应的弧;

  • 人际关系网络

我们在生活中会接触各种各样的人,认识各种各样的朋友,这些交际关系组织成的网络就是一个典型的无向图:
小红 小明 小新 小陆

在人际关系网中,每个人都是一个顶点,人与人之间的联系就是连接两个顶点的边;

  • 思维导图

我们平时不管是在学习,还是工作中,肯定离不开思维导图,这里我们以图这个章节中的思维导图为例:
图 基本概念 存储与基本操作 遍历 基本应用 定义 分类 有无方向 有无重复边或自环

在思维导图中,各知识点就是图中的各个结点,知识点之间的逻辑关系就是连接各个结点的边(或弧)

结语

📌 今日核心要点

1. 图的定义与本质

  • 组成 :由顶点集(非空)​边集(可为空)​构成,记为 G = (V, E)
  • 不可为空:至少含一个顶点,但边可缺失(如单顶点图)。
  • 广义性:线性表、树、集合等均为图的特例(链表是单链路径图,树为有向无环图)。

2. 图的分类

按方向性
  • 有向图 :边为有序弧(如 < a , b > <a, b> <a,b>),严格区分方向(弧尾→弧头)。
  • 无向图 :边为无序对(如 ( a , b ) (a, b) (a,b)),顶点关系对称。
按边复杂度
  • 简单图:禁止重复边与自环,算法研究核心。
  • 多重图:允许重复边/自环,贴近现实场景(如交通多线路)。

3. 现实映射

  • 交通路线(有向)、社交网络(无向)、知识图谱(混合)均为图的实例。

🔍 下期预告

1. 顶点连接性指标

  • 度(Degree)​:无向顶点的边数(社交活跃度)。
  • 入度(In-degree)​:有向顶点接收的弧数(影响力接收度)。
  • 出度(Out-degree)​:有向顶点发出的弧数(信息传播力)。

2. 图的连通性

  • 路径与环路:可达性判断与环路对算法的影响。
  • 连通图与连通分量:如何识别独立子结构(如社交圈层)。

3. 带权图解析

  • 边权重:量化关系的现实意义(如导航距离、通信成本)。

思考题预热

  • 如何用"出度"识别社交网络中的信息传播枢纽?
  • 若某顶点的入度为0,它在系统中可能扮演什么角色?

💬 互动与支持

如果本文帮你理清了图论基础

  • 👍 点赞 -- 鼓励更多技术分享
  • 收藏 -- 构建个人知识库
  • ↗️ 转发 -- 帮助更多同行学习

你的互动是持续创作的动力!​

下期预告:深入图的量化分析,解锁顶点影响力评估与网络稳定性判据! 🚀

相关推荐
我不会编程55516 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
似水এ᭄往昔17 小时前
【C语言】文件操作
c语言·开发语言
owde17 小时前
顺序容器 -list双向链表
数据结构·c++·链表·list
第404块砖头17 小时前
分享宝藏之List转Markdown
数据结构·list
A旧城以西18 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
烂蜻蜓18 小时前
C 语言中的递归:概念、应用与实例解析
c语言·数据结构·算法
守正出琦19 小时前
日期类的实现
数据结构·c++·算法
ゞ 正在缓冲99%…20 小时前
leetcode75.颜色分类
java·数据结构·算法·排序
橘猫云计算机设计20 小时前
基于springboot的考研成绩查询系统(源码+lw+部署文档+讲解),源码可白嫖!
java·spring boot·后端·python·考研·django·毕业设计