数据结构--图定义与基本术语

news2025/2/2 21:46:45

数据结构–图定义与基本术语

图的定义

图G由 顶点集 V \color{red}顶点集V 顶点集V 边集 E \color{red}边集E 边集E组成,记为G = (V, E),其中V(G)表示图G中顶点的有限非空集;
E(G)表示图G中顶点之间的关系(边)集合。若 V = v 1 , v 2 , … , v n V = {v_1, v_2, … , v_n} V=v1,v2,,vn,则用|V|表示图G中顶点的个
数,也称图G的阶, E = { ( u , v ) ∣ u ∈ V , v ∈ V } E=\{(u,v)\mid u\in V,v\in V\} E={(u,v)uV,vV},用|E|表示图G中边的条数。

注意:
线性表可以是空表,树可以是空树,但图不可以是空,即 V 一定是非空集 \color{green}线性表可以是空表,树可以是空树,但图不可以是空,即V一定是非空集 线性表可以是空表,树可以是空树,但图不可以是空,即V一定是非空集

图逻辑结构的应用

无向图、有向图

若E是 无向边 \color{red}无向边 无向边(简称 边 \color{red}边 )的有限集合时,则图G为无向图。
边是顶点的无序对,记为 ( v , w ) 或 ( w , v ) \color{red}(v, w)或(w, v) (v,w)(w,v),因为(v, w) = (w, v),其中v、w是顶点。可以说顶点w和顶点v互为邻接点。边(v, w)依附于顶点w和v,或者说边(v, w)和顶点v、w相关联。

G 2 = ( V 2 , E 2 ) V 2 = { A , B , C , D , E } E 2 = { ( A , B ) , ( B , D ) , ( B , E ) , ( C , D ) , ( C , E ) , ( D , E ) } \begin{aligned} &G_{2} =(V_{2},E_{2}) \\ &V_{2} =\{A,B,C,D,E\} \\ &E_{2} =\{(A,B),(B,D),(B,E),(C,D),(C,E),(D,E)\} \end{aligned} G2=(V2,E2)V2={A,B,C,D,E}E2={(A,B),(B,D),(B,E),(C,D),(C,E),(D,E)}

若E是 有向边 \color{red}有向边 有向边(也称 弧 \color{red}弧 )的有限集合时,则图G为 有向图 \color{red}有向图 有向图
弧是顶点的有序对,记为 < v , w > \color{red}<v, w> <v,w>,其中v、w是顶点,v称为 弧尾 \color{red}弧尾 弧尾,w称为 弧头 \color{red}弧头 弧头,<v, w>称为从顶点v到顶点w的弧,也称
v邻接到w,或w邻接自v。 < v , w > ≠ < w , v > \color{red} <v, w> ≠ <w, v> <v,w>=<w,v>

G 1 = ( V 1 , E 1 ) V 1 = { A,B,C,D,E } E 1 = { <A,B>,<A,C>,<A,D>,<A,E>,<B,A>,<B,C>,<B,E>,<C,D> \begin{array}{l}G_1=(V_1,E_1)\\V_1=\{\textsf{A,B,C,D,E}\}\\E_1=\{\textsf{<A,B>,<A,C>,<A,D>,<A,E>,<B,A>,<B,C>,<B,E>,<C,D>}\\\end{array} G1=(V1,E1)V1={A,B,C,D,E}E1={<A,B>,<A,C>,<A,D>,<A,E>,<B,A>,<B,C>,<B,E>,<C,D>

简单图、多重图

简单无向图:

简单有向图:

简单图 \color{red}简单图 简单图:
① 不存在重复边;
② 不存在顶点到自身的边

多重无向图:

多重有向图:

多重图 \color{red}多重图 多重图:
图G中某两个结点之间的边数多于
一条,又允许顶点通过同一条边和自己关联,
则G为多重图

顶点的度、入度、出度

对于 无向图 \color{red}无向图 无向图 顶点 v 的度 \color{red}顶点v的度 顶点v的度是指依附于该顶点的边的条数,记为TD(v)。
在具有n个顶点、e条边的无向图中, ∑ i = 1 n T D ( v i ) = 2 e \sum_{i=1}^n\mathrm{TD}(v_i)=2e i=1nTD(vi)=2e
即无向图的全部顶点的度的和等于边数的2倍

对于 有向图 \color{red}有向图 有向图
入度 \color{red}入度 入度是以顶点v为终点的有向边的数目,记为ID(v);
出度是以顶点v为起点的有向边的数目,记为OD(v)。
顶点v的度等于其入度和出度之和,即TD(v) = ID(v) + OD(v)。
在具有n个顶点、e条边的有向图中, ∑ i = 1 n I D ( ν i ) = ∑ i = 1 n O D ( ν i ) = e \sum_{i=1}^n\mathrm{ID}(\nu_i)=\sum_{i=1}^n\mathrm{OD}(\nu_i)=e i=1nID(νi)=i=1nOD(νi)=e

顶点-顶点的关系描述

顶点之间有可能不存在路径:

有向图的路径也是有向的:

路径 \color{red}路径 路径——顶点vp到顶点vq之间的一条路径是指顶点序列 , v p , v i 1 , v i 2 , ⋯   , v i m , v q v_{p},v_{i_{1}},v_{i_{2}},\cdots,v_{i_{m}},v_{q} vp,vi1,vi2,,vim,vq
回路 \color{red}回路 回路——第一个顶点和最后一个顶点相同的路径称为回路或环
简单路径 \color{red}简单路径 简单路径——在路径序列中,顶点不重复出现的路径称为简单路径。
简单回路 \color{red}简单回路 简单回路——除第一个顶点和最后一个顶点外,其余顶点不重复出现的回路称为简单回路。
路径长度 \color{red}路径长度 路径长度——路径上边的数目
点到点的距离 \color{red}点到点的距离 点到点的距离——从顶点u出发到顶点v的 最短路径 \color{red}最短路径 最短路径若存在,则此路径的长度称为从u到v的距离。
若从u到v根本 不存在路径 \color{red}不存在路径 不存在路径,则 记该距离为无穷( ∞ ) \color{red}记该距离为无穷(∞) 记该距离为无穷(
无向图 \color{red}无向图 无向图中,若从顶点v到顶点w有路径存在,则称v和w是 连通 \color{red}连通 连通
有向图 \color{red}有向图 有向图中,若从顶点v到顶点w和从顶点w到顶点v之间都有路径,则称这两个顶点是 强连通 \color{red}强连通 强连通

连通图、强连通图

若图G中任意两个顶点都是连通的,则称图G为
连通图,否则称为非连通图。
若图中任何一对顶点都是强连通的,则称此图为强连通图。

常见考点: \color{red}常见考点: 常见考点:
对于n个顶点的无向图G,
若G是 连通图 \color{red}连通图 连通图,则 最少 \color{red}最少 最少有 n-1 条边
若G是 非连通图 \color{red}非连通图 非连通图,则 最多 \color{red}最多 最多可能有 C n − 1 2 C_{n-1}^2 Cn12 条边

若图中任何一对顶点都是强连通的,则称此图为
强连通图 \color{red}强连通图 强连通图

常见考点 \color{red}常见考点 常见考点
对于n个顶点的有向图G,
若G是 强连通图 \color{red}强连通图 强连通图,则 最少 \color{red}最少 最少有 n 条边(形成回路)

研究图的局部——子图

设有两个图G =(V,E)和G′ =(V’,E’),若V’是V的子集,且E′是E的子集,则称G’是G的 子图 \color{red}子图 子图

若有满足V(G’)=V(G)的子图G’9则称其为G的 生成子图 \color{red}生成子图 生成子图

并非任意挑几个点、几条边都能构成子图 \color{green}并非任意挑几个点、几条边都能构成子图 并非任意挑几个点、几条边都能构成子图

连通分量

无向图中的 极大连通子图 \color{red}极大连通子图 极大连通子图称为连通分量。

极大连通子图:子图必须连通,且包含尽可能多的顶点和边

G的三个连通分量:

强连通分量

强连通分量(Strongly Connected Component,简称SCC)是指有向图中的一个子图,其中 任意两个顶点之间都存在有向路径 \color{red}任意两个顶点之间都存在有向路径 任意两个顶点之间都存在有向路径

G的三个强连通分量:

生成树

连通图 \color{red}连通图 连通图 生成树 \color{red}生成树 生成树 包含图中全部顶点的一个极小连通子图 \color{red}包含图中全部顶点的一个极小连通子图 包含图中全部顶点的一个极小连通子图
若图中顶点数为n,则它的生成树含有 n-1 条边。对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路。

G的生成树:

生成森林

非连通图 \color{red}非连通图 非连通图中, 连通分量的生成树 \color{red}连通分量的生成树 连通分量的生成树构成了非连通图的 生成森林 \color{red}生成森林 生成森林

G的连通分量 → \to G的生成森林

边的权、带权图/网

给各边赋予一个权值——实际距离

给各边赋予一个数值——转发概率

边的权 \color{red}边的权 边的权——在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值。
带权图 / 网 \color{red}带权图/网 带权图/——边上带有权值的图称为 带权图 \color{red}带权图 带权图,也称 网 \color{red}网
带权路径长度 \color{red}带权路径长度 带权路径长度——当图是带权图时,一条 径上所有边的权值之和 \color{red}径上所有边的权值之和 径上所有边的权值之和,称为该路径的带权路径长度

几种特殊形态的图

无向完全图 \color{red}无向完全图 无向完全图——无向图中任意两个顶点之间都存在边

若无向图的顶点数|V|=n,则 ∣ E ∣ ∈ [ 0 , C n 2 ] = [ 0 , n ( n − 1 ) / 2 ] |E|\in[0,C_n^2]=[0,\color{red}{n(n-1)/2}] E[0,Cn2]=[0,n(n1)/2]

有向完全图 \color{red}有向完全图 有向完全图——有向图中任意两个顶点
之间都存在方向相反的两条弧
若有向图的顶点数|V|=n,则 ∣ E ∣ ∈ [ 0 , 2 C n 2 ] = [ 0 , n ( n − 1 ) ] |E|\in[0,2C_n^2]=[0,\color{red}{n(n-1)}] E[0,2Cn2]=[0,n(n1)]

边数很少的图称为 稀疏图 \color{red}稀疏图 稀疏图

反之称为 稠密图 \color{red}稠密图 稠密图

没有绝对的界限,一般来说|E| < |V|log|V|时,可以将G视为稀疏图

树 \color{red}树 —— 不存在回路 \color{red}不存在回路 不存在回路,且 连通 \color{red}连通 连通 无向图 \color{red}无向图 无向图

n个顶点的树,必有n-1条边。
常见考点:n个顶点的图, 若 ∣ E ∣ > n − 1 ,则一定有回路 \color{red}若 |E|>n-1,则一定有回路 E>n1,则一定有回路

有向树 \color{red}有向树 有向树——一个顶点的入度为0、其余顶点的
入度均为1的 有向图 \color{red}有向图 有向图,称为有向树。

知识回顾与重要考点

常见考点:
对于n个顶点的 无向图 \color{red}无向图 无向图G,
• 所有顶点的度之和=2|E|
• 若G是连通图,则最少有 n-1 条边(树),若 |E|>n-1,则一定有回路
• 若G是非连通图,则最多可能有 C n − 1 2 C_{n-1}^2 Cn12
• 无向完全图共有 C n 2 C_{n}^2 Cn2条边

对于n个顶点的 有向图 \color{red}有向图 有向图G,
• 所有顶点的出度之和=入度之和=|E|
• 所有顶点的度之和=2|E|
• 若G是强连通图,则最少有 n 条边(形成回路)
• 有向完全图共有 2 C n 2 2C_{n}^2 2Cn2 条边

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762378.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

现代化 Android 开发:Jetpack Compose 最佳实践

作者&#xff1a;古哥E下 如果一直关注 Compose 的发展的话&#xff0c;可以明显感受到 2022 年和 2023 年的 Compose 使用讨论的声音已经完全不一样了, 2022 年还多是观望&#xff0c;2023 年就有很多团队开始采纳 Compose 来进行开发了。不过也有很多同学接触了下 Compose&am…

22.JavaWeb-Minio存储服务器

MinIO是一个开源的对象存储服务器&#xff0c;它兼容Amazon S3 API。它提供了一个简单而强大的存储解决方案&#xff0c;可以用于存储和检索任意大小的文件对象&#xff0c;如图片、视频、文档等。 1.安装与配置Minio https://dl.min.io/server/minio/release/windows-amd64/…

Leetcode 1352: 最后K个数的乘积

题目描述 链接&#xff1a;https://leetcode.cn/problems/product-of-the-last-k-numbers/ 结果 耗时&#xff1a;12min-13min 思路 暴力法&#xff0c;直接从后面读取数组计算。 Java代码 import java.util.ArrayList;class ProductOfNumbers {ArrayList<Integer…

4个简单易上手的免费抠图工具,让你轻松在线抠图!

本文介绍了四个简单易上手的免费抠图工具&#xff0c;它们分别是记灵在线工具、Remove、FocoClipping和免费抠图工具。无论你是初学者还是有经验的设计师&#xff0c;这些工具都能帮助你快速、高效地进行在线抠图操作。 在现代设计和摄影中&#xff0c;抠图是一项重要且常见的…

新建一个Vue项目后,如何在vue.config,js中配置后端访问地址

在 Vue 2 项目中&#xff0c;可以通过配置 vue.config.js 文件来设置后端访问地址。下面是一个简单的示例&#xff1a; 在项目根目录下新建 vue.config.js 文件&#xff08;如果已存在&#xff0c;则直接编辑该文件&#xff09;。在 vue.config.js 文件中添加以下内容&#xf…

ClickHouse原理剖析

1.ClickHouse简介 ClickHouse是一款开源的面向联机分析处理的列式数据库&#xff0c;其独立于Hadoop大数据体系&#xff0c;最核心的特点是极致压缩率和极速查询性能。同时&#xff0c;ClickHouse支持SQL查询&#xff0c;且查询性能好&#xff0c;特别是基于大宽表的聚合分析查…

yolo系列学习

文章目录 理论基础YOLO-V1YOLO-V2YOLOV3 教学视频 理论基础 不同阶段算法优缺点分析 two-stage (两阶段) &#xff1a;Faster-rcnn、Mask-Rcnn &#xff0c;多了预选框操作RPNOne-stage (单阶段)&#xff1a;YOLO 指标分析 精度 Precision 查准率&#xff0c;预测为正且实际…

亚马逊、lazada店铺销售策略揭秘:如何利用测评自养号突破瓶颈?

在跨境平台上&#xff0c;想要取得突破性的销售成绩并不容易。随着竞争的日益激烈&#xff0c;商家们需要采取有效的销售策略来突破销售瓶颈。本文将揭示三种结合测评自养号的销售策略&#xff0c;帮助卖家在跨境平台上取得更好的销售业绩。 一、建立完善的自养号评价体系 自…

git rebase (合并代码和整理提交记录)图文详解

git rebase详解&#xff0c;附带操作过程命令&#xff0c;运行图片 合并代码初始代码分支结构merge合并代码rebase合并代码 整理提交记录背景-整理提交记录步骤-图文详解 建议在看这篇文章之前一定要看完&#xff1a;git reset 命令详解 git revert命令详解。 看完上面的文章后…

基于scrcpy的Android群控项目重构,获取Android屏幕元素信息并编写自动化事件

系列文章目录 基于scrcpy的远程调试方案 基于scrcpy的Android群控项目重构 基于scrcpy的Android群控项目重构 进阶版 基于scrcpy的Android群控项目重构&#xff0c;获取Android屏幕元素信息并编写自动化事件&#xff08;视频&#xff09; 基于scrcpy的Android群控项目重构…

struct详解

导入 我们有没有这种情况&#xff0c;总想有一个数组&#xff0c;其中可以有int,double,char。。。各种类型&#xff0c;但是对于内置的数据类型显然是做不到的&#xff0c;于是就有了结构体类型 结构体是将多种不同的结构打包在一起&#xff0c;形成全新的类型进行使用 stru…

Spring的两种事务管理机制,面试这样答当场入职!

前言&#xff1a; 博主在最近的几次面试中&#xff0c;大中小厂都问到了Spring的事务相关问题&#xff0c;这块知识确实是面试中的重点内容&#xff0c;因此结合所看的书籍&#xff0c;在这篇文章中总结下。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读&#xff0c;感…

刻录到光盘功能看不见怎么办

刻录到光盘功能看不见怎么办 1、 打开组策略 同时按键WINR&#xff0c;打开运行对话框&#xff0c;输入gpedit.msc&#xff0c;打开组策略&#xff08;如果发现输入gpedit.msc后无法打开组策略&#xff0c;请参照文件后面的方法进行操作&#xff09; 2 、查找“删除CD刻录…

Java开发基础系列(五):对象方法参数

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Java开发基础系列(五)&#xff1a;对象方法参数 ⏱️ 创作时间&#x…

Pycharm 搭建 Django 项目,看完这一篇就够了

1. 安装需求 在使用 python 框架 Django 需要注意下面事项 Pycharm 版本是专业版而不是社区版本Pycharm 配置好了 python 解释器 &#xff08;一般我们现在用的都是python3&#xff09;我自己使用的是 Pycharm 版本是2020.1.2 2. 准备工作 2.1 新建项目 首先我们打开 Pycharm …

opencv -10 基础运算之 图像加权和(图像融合图像修复视频合成)

什么是图像加权和&#xff1f; 所谓图像加权和&#xff0c;就是在计算两幅图像的像素值之和时&#xff0c;将每幅图像的权重考虑进来&#xff0c;可以用公式表示为&#xff1a; dst saturate(src1 &#x1d6fc; src2 &#x1d6fd; &#x1d6fe;)式中&#xff0c;satu…

无缝集成:基于FastAPI实现AI模型服务与nacos的完美融合

1 场景介绍 当我们使用python构建AI模型算法的过程中&#xff0c;经常会遇到如下的问题&#xff1a; 这个模型如何提供给其他微服务调用&#xff08;比如JAVA构建的微服务&#xff09;&#xff1f;这个模型如何做到多个服务节点的负载均衡&#xff1f;这个模型如何做到服务的…

Python高光谱遥感数据处理与高光谱遥感机器学习方法深度应用

提供一套基于Python编程工具的高光谱数据处理方法和应用案例。 本文涵盖高光谱遥感的基础、方法和实践。基础篇&#xff0c;用通俗易懂的语言解释高光谱的基本概念和理论&#xff0c;深入理解科学原理。方法篇结合Python编程工具&#xff0c;专注于解决高频技术难题&#xff0c…

工欲善其事,必先利其器之—react-native-debugger调试react native应用

调试react应用通常利用chrome的inspector的功能和两个最常用的扩展 1、React Developer Tools &#xff08;主要用于debug组件结构) 2、Redux DevTools &#xff08;主要用于debug redux store的数据&#xff09; 对于react native应用&#xff0c;我们一般就使用react-nativ…

C++无锁编程——无锁队列

C无锁编程——无锁队列 贺志国 2023.7.11 上一篇博客给出了最简单的C数据结构——堆栈的几种无锁实现方法。队列的挑战与栈的有些不同&#xff0c;因为Push()和Pop()函数在队列中操作的不是同一个地方。因此同步的需求就不一样。需要保证对一端的修改是正确的&#xff0c;且对…