【数据结构】图的基本概念
图的定义
通俗来说一堆顶点被一堆线连在一起,这一坨顶点与线的集合
目录
图的定义
术语
有向图与无向图
简单图与多重图
度、入度与出度
路径与回路
路径长度与距离
子图
连通、连通图与连通分量
强连通、强连通图与强连通分量
完全图
生成树与生成森林
权、网与带权路径长度
例题
就是图。
图的严格定义如下:
图G由顶点集 和边集 E组成,记为 G=(V,E),其中 V(G)表示图 G中顶点的有限非空集;E(G)表示图 G中顶点之间的关系(边)集合。若V={v1,v2...,vn},则用表示图G中顶点的个数,E={(u,v)|u
V,v
V},用
表示图G中边的条数。
术语
有向图与无向图
有向图:
若E是有向边(也称弧)的有限集合,则图G为有向图。弧是顶点的有序对,记为<v,w>其中v,w是顶点,v称为弧尾,w称为弧头,<v,w>称为从v到w的弧,也称v邻接到w。

E1={<2,1>}
无向图:
若E是无向边(简称边)的有限集合,则图G为无向图。边是顶点的无序对,记为(v,w)或(w,v)。可以说w和v互为邻接点。边(v,w)依附于w和v,或称边(v,w)和v,w 相关联。

E2={(2,1)}
说人话就是无向图的边没有箭头,有向图的边有箭头。
简单图与多重图
如果一个图 G满足以下两个条件:① 任意两顶点之间最多只有一条边;② 没有任何顶点通过边与自身相连,那么这个图称为简单图。
如果一个图 G允许两个顶点之间存在多条边,同时允许顶点通过一条边与自身相连,则称为多重图。
度、入度与出度
对于无向图,顶点的度指的是依附于顶点的边的条数,记为TD(v)。
对于有向图,顶点的入度指的是以该顶点为终点的有向边的数目(被箭头指向),记为ID(v);出度指的是以该顶点为起点的有向边的数目,记为OD(v);顶点的度为入度与出度之和。
无向图中顶点的度为顶点数的两倍(一个边连着两个顶点),有向图中所有顶点入度之和=出度之和=边数(一个弧有一个头和一个尾)。
路径与回路
顶点v1到v2的路径指的是能够从v1出发到达v2不中断的途径中所有的顶点与边。第一个顶点与最后一个顶点相同的路径称为回路或者环。
顶点不重复出现的路径称为简单路径;除了最后一个顶点和第一个顶点以外,其余顶点不重复出现的回路称为简单回路。
若图的边数大于顶点数-1,则图一定有环。
路径长度与距离
路径包含的边的数目为路径长度,顶点之间最短路径称为距离。如果顶点v1到达不了顶点v2,记两者距离为无穷。
子图
如果G1的顶点是G2顶点的子集,G1的边也是G2的边的子集,称G1是G2的子图。如果G1顶点完全继承G2,但是G1的边不一定完全继承G2,称G1为G2的生成子图。
这种情况G1不是G2的子图,因为G1不满足图的定义。
连通、连通图与连通分量
无向图中:
如果v与w有路径存在,称v与w连通。
如果一个无向图所有顶点之间都连通,则称该图为连通图。
一个图里的极大连通子图称为连通分量。
极大连通子图的极大指的是是尽量包含多的顶点和边。对于下面这张图,虽然123也是连通的,但是比1234少一个顶点,所以123不是图连通分量,1234是图的连通分量。
当然按照定义,一个孤立的顶点也是一个连通分量。
强连通、强连通图与强连通分量
有向图中:
如果v与w有路径存在,w与v有路径存在,称v与w强连通。
如果一个有向图所有顶点之间都强连通,则称该图为强连通图。
一个图里的极大强连通子图称为强连通分量。
完全图
对于无向图,如果任意一个顶点都与其他所有的顶点相连,则这样的图称为完全图。完全图的边数等于n+(n-1)+...+1=。对于有向完全图,则要求每个顶点有来去两条边相连,所以数目是无向完全图的两倍。
生成树与生成森林
连通图的生成树是包含图中全部顶点的一个极小连通子图。包含图中全部顶点的极小连通子图,只有生成树满足这个极小条件,对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路。在非连通图中,连通分量的生成树构成了非连通图的生成森林。
这里的极小连通子图的极小指的是包含尽可能少的边。
权、网与带权路径长度
在一个图中,每条边都可以标上具有某种含义的数值,该数值称为该边的权值。这种边上带有权值的图称为带权图,也称网。
例题
1、含n个顶点的非连通图最多有几条边?
答:包含n-1个顶点的完全图和一个孤立顶点。边数为(n-1)(n-2)/2。
2、含n个顶点的强连通图最少要有几条边?
答:一个环,边数为n。
相关文章:
【数据结构】图的基本概念
图的定义 通俗来说一堆顶点被一堆线连在一起,这一坨顶点与线的集合 目录 图的定义 术语 有向图与无向图 简单图与多重图 度、入度与出度 路径与回路 路径长度与距离 子图 连通、连通图与连通分量 强连通、强连通图与强连通分量 完全图 生成树与生成森林 权…...
常见的HR面问题汇总
⚠️注意:以下仅是个人对问题的参考,具体情况视个人情况而定~ 1. 你觉得你有哪些优点和缺点? 优点:学习能力强,遇到问题会主动思考和查找解决方案;有责任心,对待工作认真负责&#…...
【微知】ARM CPU是如何获取某个进程的页表的?(通过TTBR寄存器,MMU进行处理)
ARM CPU 中用于存储访问某个进程的页表的寄存器是 TTBR(Translation Table Base Register)。有TTBR0和TTBR1。TTBR0用户空间的一级页表基址,1是内核页表。cpu访存获取物理地址流程 如果mmu发现tlb里面miss就通过pdbg拿pa物理地址。Intel是CR3…...
从零开始:在Qt中使用OpenGL绘制指南
从零开始:在Qt中使用OpenGL绘制指南 本文只介绍基本的 QOpenGLWidget 和 QOpenGLFunctions 的使用,想要学习 OpenGL 的朋友,建议访问经典 OpenGL 学习网站:LearnOpenGL CN 本篇文章,我们将以绘制一个经典的三角形为例&…...
激光加工中平面倾斜度的矫正
在激光加工中,加工平面的倾斜度矫正至关重要,直接影响加工精度和材料处理效果。以下是系统的矫正方法和步骤: 5. 验证与迭代 二次测量:加工后重新检测平面度,确认残余误差。 反馈优化:根据误差分布修正补偿…...
Android学习总结之应用启动流程(从点击图标到界面显示)
一、用户交互触发:Launcher 到 AMS 的跨进程通信 1. Launcher 处理点击事件(应用层) 当用户点击手机桌面上的应用图标时,Launcher(桌面应用)首先捕获点击事件。每个图标对应一个启动 Intent(通…...
rdiff-backup备份
目录 1. 服务器备份知识点 1.1 备份策略 1.2 备份步骤和宝塔面板简介 1.3 CentOS7重要目录 2. 备份工具 2.1 tar -g 备份演示 2. rsync 备份演示 3. rdiff-backup 备份演示 4. 差异和优缺点 3. rdiff-backup安装和使用 3.1 备份命令rdiff-backup 3.2 恢复命令--…...
PE结构(十五)系统调用与函数地址动态寻找
双机调试 当需要分析一个程序时,这个程序一定是可以调试的,操作系统也不例外。在调试过程中下断点是很重要的 当我们对一个应用程序下断点时,应用程序是挂起的。但当我们对操作系统的内核程序下断点时,被挂起的不是内核程序而是…...
webrtc 本地运行的详细操作步骤 1
前言 选修课的一个课程设计,需要我们本地运行这个开源项目,给我的压力非常大,因为确实不是很熟练这种操作。但是还是得做。谨以此文,纪念这个过程。 之前自己在 github 上面看到有代码仓库,但是比较复杂,在…...
kali——httrack
目录 前言 使用教程 前言 HTTrack 是一款运行于 Kali Linux 系统中的开源网站镜像工具,它能将网站的页面、图片、链接等资源完整地下载到本地,构建出一个和原网站结构相似的离线副本。 使用教程 apt install httrack //安装httrack工具 httrac…...
力扣经典算法篇-6-轮转数组
题干: 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步…...
【计算机网络】Linux配置SNAT/DNAT策略
什么是NAT? NAT 全称是 Network Address Translation(网络地址转换),是一个用来在多个设备共享一个公网 IP上网的技术。 NAT 的核心作用:将一个网络中的私有 IP 地址,转换为公网 IP 地址,从而…...
火山引擎coze用户市场
火山引擎 **Coze**(扣子)的用户市场主要集中在 **需要快速构建和部署智能对话应用的企业及开发者群体**,覆盖多个行业与场景。以下是具体分析: --- ### **一、核心用户群体** 1. **企业用户** - **互联网/科技公司**&#…...
qt designer 软件主题程序设计
对于使用Qt Designer设计的界面,主题切换的实现需要结合Qt的信号槽机制、样式表动态加载以及资源管理。以下是针对Qt Designer UI的详细解决方案: 一、UI文件与主题系统的整合架构 二、核心实现步骤 1. 动态样式表加载系统 // ThemeManager.h class …...
2025/4/2 心得
第一题 题目描述 给定1001个范围在[1,1000]的数字,保证只有1个数字重复出现2次,其余数字只出现1次。试用O(n)时间复杂度来求出出现2次的这个数字。 不允许用数组 输入格式 第一行:一个整数1001; 第二行:1001个用…...
AI安全:构建负责任且可靠的系统
AI已成为日常生活中无处不在的助力,随着AI系统能力和普及性的扩展,安全因素变得愈发重要。从基础模型构建者到采用AI解决方案的企业,整个AI生命周期中的所有相关方都必须共同承担责任。 为什么AI安全至关重要? 对于企业而言&…...
VUE+SPRINGBOOT+语音技术实现智能语音歌曲管理系统
语音控制歌曲的播放、暂停、增删改查 <template><div class"Music-container"><div style"margin: 10px 0"><!--检索部分--><el-input style"width: 200px;" placeholder"请输入歌曲名称"v-model"sen…...
使用 SignalR 在 .NET Core 8 最小 API 中构建实时通知
示例代码:https://download.csdn.net/download/hefeng_aspnet/90448094 介绍 构建实时应用程序已成为现代 Web 开发中必不可少的部分,尤其是对于通知、聊天系统和实时更新等功能。SignalR 是 ASP.NET 的一个强大库,可实现服务器端代码和客户…...
Kotlin 集合函数:map 和 first 的使用场景
Kotlin 提供了丰富的集合操作函数,使开发者可以更加简洁、高效地处理数据。其中,map 和 first 是两个常用的函数,分别用于转换集合和获取集合中的第一个元素。 1. map 的使用场景 场景 1:对象列表转换 在开发中,我们…...
Spring Cloud 框架为什么能处理高并发
Spring Cloud框架能够有效处理高并发场景,核心在于其微服务架构设计及多组件的协同作用,具体机制如下: 一、分布式架构设计支撑高扩展性 服务拆分与集群部署 Spring Cloud通过微服务拆分将单体系统解耦为独立子服务,每个服务可独…...
【Python爬虫高级技巧】BeautifulSoup高级教程:数据抓取、性能调优、反爬策略,全方位提升爬虫技能!
大家好,我是唐叔!上期我们聊了 BeautifulSoup的基础用法 ,今天带来进阶篇。我将分享爬虫老司机总结的BeautifulSoup高阶技巧,以及那些官方文档里不会告诉你的实战经验! 文章目录 一、BeautifulSoup性能优化技巧1. 解析…...
复古未来主义屏幕辉光像素化显示器反乌托邦效果PS(PSD)设计模板样机 Analog Retro-Futuristic Monitor Effect
这款模拟复古未来主义显示器效果直接取材于 90 年代赛博朋克电影中的黑客巢穴,将粗糙的屏幕辉光和像素化的魅力强势回归。它精准地模仿了老式阴极射线管显示器,能将任何图像变成故障频出的监控画面或高风险的指挥中心用户界面。和……在一起 2 个完全可编…...
Spring Boot + MySQL + MyBatis(注解和XML配置两种方式)集成Redis的完整启用及配置详解,包含代码示例、注释说明和表格总结
以下是 Spring Boot MySQL MyBatis(注解和XML配置两种方式)集成Redis的完整启用及配置详解,包含代码示例、注释说明和表格总结: 1. 添加依赖 在pom.xml中添加Spring Boot对MySQL、MyBatis和Redis的支持依赖: <d…...
Webpack vs Vite:现代前端构建工具的巅峰对决与选型指南
构建工具的进化革命当雪碧瓶上的水珠折射出前端工程的变迁史,Webpack与Vite的决战已然成为现代前端开发的分水岭。这场始于打包理念的革命,正在重塑整个前端生态的底层逻辑。本文将从原理架构、性能表现、开发体验三个维度,结合真实项目数据对…...
2023-2024总结记录
概括经历 这一年算是一个人生节点,2023年花了一整年的时间在准备考研,基本上等于一个人奋战,我不怎么去图书馆,只呆在无人的实验室,还好有对象陪我,不然可能要抑郁了。作息上还是很随意,什么时…...
技术驱动革新,强力巨彩LED软模组助力创意显示
随着LED显示技术的不断突破,LED软模组因其独特的柔性特质和个性化显示效果,正逐渐成为各类应用场景的新宠。强力巨彩软模组R3.0H系列具备独特的可塑造型能力与技术创新,为商业展示、数字艺术、建筑装饰等领域开辟全新视觉表达空间。 LED…...
Spring 核心技术解析【纯干货版】- XVIII:Spring 网络模块 Spring-WebSocket 模块精讲
在现代 Web 开发中,实时通信已成为提升用户体验的关键技术之一。传统的 HTTP 轮询方式存在较高的延迟和带宽开销,而 WebSocket 作为一种全双工通信协议,能够在客户端和服务器之间建立持久连接,实现高效的双向数据传输。 Spring 框…...
Spark,HDFS概述
HDFS组成构架: 注: NameNode(nn):就是 Master,它是一个主管、管理者。 (1) 管理 HDFS 的名称空间; (2) 配置副本策略。记录某些文件应该保持几个副本; (3) 管理数据块(…...
【数据结构】图论进阶:生成树、生成森林与权值网络的终极解析
图的基本概念 导读一、图中的树与森林1.1 生成树与生成森林1.1.1 生成树1.1.2 生成森林1.1.3 生成树、生成森林与连通分量结点的关系边的关系 1.2 有向图中的树与森林1.2.1 有向树与有向森林1.2.2 生产有向树与生成有向森林1.2.3 有向树与生成有向树的区别1.2.4 有向森林与生成…...
C和C++(list)的链表初步
链表是构建其他复杂数据结构的基础,如栈、队列、图和哈希表等。通过对链表进行适当的扩展和修改,可以实现这些数据结构的功能。想学算法,数据结构,不会链表是万万不行的。这篇笔记是一名小白在学习时整理的。 C语言 链表部分 …...


