图论-图的基本概念与数据结构

news2024/9/29 21:18:24

图的基本概念

无向图

边是没有方向的,也就是双向的

image-20230529214724983

结点 V = { v 1 , v 2 , . . . , v 7 } \mathcal{V} = \{ v_1,v_2,...,v_7\} V={v1,v2,...,v7}

ε = { e 1 , 2 , e 1 , 3 , . . . , e 6 , 7 } \varepsilon = \{e_{1,2},e_{1,3},...,e_{6,7}\} ε={e1,2,e1,3,...,e6,7}

G = { V , ε } \mathcal{G} = \{ \mathcal{V},\varepsilon \} G={V,ε}

有向图

边是有方向的,也就是单向的

image-20230529215534915

无权图

边没有权重,也可以理解为权重都是1

image-20230529215639069

有权图

边有权重

image-20230529215708278

图的数据结构

邻接矩阵与邻接表

无向无权图

image-20230529215708278
邻接表(Adjacency list)

表示结点与谁相连,

vertexNeighbors
12,3,4
21,4
31,4,6
41,2,3
5empty
63,7
76
领接矩阵(Adjacency matrix)

[ 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 ] \begin{bmatrix} 0 & 1& 1& 1& 0& 0& 0\\ 1 & 0& 0& 1& 0& 0& 0\\ 1 & 0& 0& 1& 0& 1& 0\\ 1 & 1& 1& 0& 0& 0& 0\\ 0 & 0& 0& 0& 0& 0& 0\\ 0 & 0& 1& 0& 0& 0& 1\\ 0 & 0& 0& 0& 0& 1& 0 \end{bmatrix} 0111000100100010010101110000000000000100010000010

邻接矩阵表示结点 i i i 和结点 j j j 之间的权重,如果是无权图,权重就是1。无向图的邻接矩阵都是对称的。因为边是双向的。

有向无权图

邻接表(Adjacency list)

表示结点与谁相连,

vertexNeighbors
12,4
24,5
31,6
45
5empty
67
76
领接矩阵(Adjacency matrix)

[ 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 ] \begin{bmatrix} 0 & 1& 0& 1& 0& 0& 0\\ 0 & 0& 0& 1& 1& 0& 0\\ 1 & 0& 0& 0& 0& 1& 0\\ 0 & 0& 0& 0& 0& 1& 0\\ 0 & 0& 0& 0& 0& 0& 0\\ 0 & 0& 0& 0& 0& 0& 1\\ 0 & 0& 0& 0& 0& 1& 0 \end{bmatrix} 0010000100000000000001100000010000000110010000010

邻接矩阵表示结点 i i i 和结点 j j j 之间的权重。列表示出发的点,行表示达到的点,比如 a 1 , 2 = 1 a_{1,2} = 1 a1,2=1 表示从结点1到结点2 有一条单向的边。

有权图

在这里插入图片描述

邻接矩阵(Adjacency matrix)

[ 0 2 4 1 0 0 0 2 0 0 3 0 0 0 4 0 2 0 0 5 0 1 3 2 0 0 1 0 0 0 0 0 0 0 0 0 0 5 0 0 0 1 0 0 0 0 0 1 0 ] \begin{bmatrix} 0 & 2& 4& 1& 0& 0& 0\\ 2 & 0& 0& 3& 0& 0& 0\\ 4 & 0& 2& 0& 0& 5& 0\\ 1 & 3& 2& 0& 0& 1& 0\\ 0 & 0& 0& 0& 0& 0& 0\\ 0 & 0& 5& 0& 0& 0& 1\\ 0 & 0& 0& 0& 0& 1& 0 \end{bmatrix} 0241000200300040220501300000000000000510010000010

其实和无向图很像,就是表示两个结点之间的链接,有权图有权重,无权图没有

度矩阵(degree matrix)

度矩阵是图论中一个重要的概念,用于描述无向图或有向图中每个节点的度数。它是一个对角矩阵,矩阵中的元素 d i d_i di 表示节点 i i i 的度数,即与节点 i i i 相连的边的数量。

无向图

上图的度矩阵为
[ 3 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 ] \begin{bmatrix} 3 & 0& 0& 0& 0& 0& 0\\ 0 & 2& 0& 0& 0& 0& 0\\ 0 & 0& 3& 0& 0& 0& 0\\ 0 & 0& 0& 3& 0& 0& 0\\ 0 & 0& 0& 0& 0& 0& 0\\ 0 & 0& 0& 0& 0& 2& 0\\ 0 & 0& 0& 0& 0& 0& 1 \end{bmatrix} 3000000020000000300000003000000000000000200000001
可见,是一个对角矩阵。

有向图

对于有向图而言,可以分为出度矩阵和入度矩阵。出度矩阵代表每个节点的出度,入度矩阵代表每个节点的入度。这个就很好计算了,不在演示

拉普拉斯矩阵(Laplacian matrix)

拉普拉斯矩阵用来表述图的性质,关于拉普拉斯矩阵的计算一般有如下几种方法

1、Symmetric normalized Laplacian:设 L 为图 G 的拉普拉斯矩阵,D 是度数矩阵,则对称归一化拉普拉斯矩阵为 L s y m = D − 1 2 L D − 1 2 L_{sym}=D^{-\frac{1}{2}}LD^{-\frac{1}{2}} Lsym=D21LD21

2、Random walk Laplacian:设 M = D − 1 L M=D^{-1}L M=D1L,则随机游走拉普拉斯矩阵为 L r w l = I − M L_{rwl} = I-M Lrwl=IM,其中 I I I 是单位矩阵。

3、Unnormalized Laplacian:不进行归一化的拉普拉斯矩阵可以表示为 L = D − A L=D-A L=DA,其中A为邻接矩阵,D为度矩阵

矩阵性质[1]

  • 0是他的特征值, 1 N 1_N 1N 为特征向量

  • x T ℓ x = 1 2 ∑ i = 1 N ∑ j = 1 N a i j ( x j − x i ) 2 x^T\ell x=\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} a_{ij}(x_j-x_i)^2 xTx=21i=1Nj=1Naij(xjxi)2 ℓ \ell 的半正定性意味着 ℓ \ell 的所有特征根都是实数且非负

  • 如果G是连通的,那么 ℓ \ell 的第二小的特征根,可以用 λ 2 ( ℓ ) \lambda_2(\ell) λ2() ,称为G的代数连通性,其大于0

  • G的代数连通性等于 m i n x ≠ 0 , 1 N T x = 0 x T ℓ x x T x min_{x \ne 0,1_N^Tx=0} \frac{x^T \ell x}{x^T x} minx=0,1NTx=0xTxxTx,因此,如果 $1_N^T x = 0,x^T \ell x \ge \lambda_2(\ell)x^Tx $ 。

参考文献

[1] R. Olfati-Saber, R.M. Murray, Consensus problems in networks of agents with switching topology and time-delays. IEEE Trans. Autom. Control 49(9), 1520–1533 (2004)

文中的图来自王树森大佬的课程,课程并未细看,只需要这些基础知识。

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

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

相关文章

【面试】计算机网络面试题

计算机网络面试题一 简述OSI七层协议 OSI七层协议包括:物理层,数据链路层,网络层,运输层,会话层,表示层, 应用层 简述TCP/IP五层协议 TCP/IP五层协议包括:物理层,数据…

IntelliJ IDEA使用Alibaba Java Coding Guidelines编码规约扫描插件

代码规范和编码规约扫描插件使用 为什么要有代码规范?1.代码规范插件2.idea插件安装3.插件使用介绍编码规约扫描使用编码规约扫描结果 4.扫描结果严重级别BlockerCriticalMajor 5.《阿里巴巴Java开发手册(终极版)》 为什么要有代码规范&#…

HTTPS协议深入理解

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶 目录 文章目录 一、HTTPS协议的由来及概念 二、加密是什么 三、HTTPS的工作流程 3.1 使用对称密钥 3.2 引入非对称加密 3.3 中间人攻击 3.4 引入证书 一、HTTPS协议的由来及概念 HTTPS 也是…

【chatGPT4结对编程】chatGPT4教我做图像分类

开始接触深度学习 大语言模型火了之后,我也想过是否要加入深度学习的行业当中来,一开始的想法就是AI大模型肯定会被各大厂垄断,我们作为普通应用型软件工程师直接调用api就完事,另外对自己的学历也自卑(刚刚够线的二本&#xff0…

2.4. 封装与访问控制

封装(Encapsulation)是面向对象编程的一个核心概念,它意味着将数据(属性)和方法(操作数据的函数)捆绑在一起,形成一个类(Class)。封装的目的是将数据和操作数…

C++插件管理类(下)——实际项目(阉割版)

文章目录 一、背景二、代码结构三、两个CMakeLists.txt3.1 父目录3.2 子目录src 四、代码实例4.1 main.cpp4.2 Plugin.h4.3 Plugin.cpp4.4 Comm.h4.5 calc.cpp 五、 踩坑点 一、背景 请参考C插件管理类(上) 二、代码结构 三、两个CMakeLists.txt 3.1 父目录 #设置cmake的最…

stackqueue的模拟实现

stack模拟: stack的源代码: stack的全部源代码就这些。 stack的代码少,原因在于采用了适配器模式,所谓适配器,以电器为例,每个电器都有电源适配器,中国的家用电源为220V的交流电,但是…

3d虚拟主播形象能提升提升企业销售额

随着科技的不断进步和发展,虚拟人形象正在被广泛地应用于商业宣传中。3D虚拟人形象是指采用计算机图形学、人工智能等技术,模拟真实人类形象的虚拟形象。相比于传统产品营销方式,采用3D虚拟人形象进行产品交互讲解对提升企业销售额具有很多优…

JavaWeb12(实现基础分页模糊查询的分页)

目录 一. 效果预览 ​编辑 二. 实现基本分页 2.1 分页sql --每页3条 取第二页 --由于伪列不能作用与大于符号也不能作用于between....and --因此需要将伪列----->名列 2.2 万能公式 2.3 首页&上一页&下一页实现 ②前端代码 2.4 末页实现&优化 ①底层代…

目标检测复盘 -- 6. YOLOv4

Backbone YOLOv4的骨干是CSPDarknet53 CSP结构的作用:1. 增强CNN的学习能力 2. 移出计算瓶颈 3. 减少内存开销 CSP首先将输入的特征层分成两个部分,这里以densenet为例,part2分支经过denseblock后,进过一个transition&#xff0c…

Redis之高可用方案浅析

在工程项目中,系统应用的高可用性越来越重要,业主越来越重视。其实高可用可以分为应用层高可用和数据层高可用,数据层高可用中常见的有关系型数据库mysql的高可用、非关系型NoSQl数据库redis的高可用等,下面聊聊典型的NoSQL数据库…

C# 事件和委托的区别并说明

1.区别 事件是基于委托的,为委托提供了一个发布/订阅机制。可以说事件是一种特殊的委托,他的调用和委托是一样的。 事件的声明 public event 委托类型 事件名称 通常事件的命名以事件名称Event来命名。如public event delegate NotifyEvent; 事件和委…

C++ Primer Plus 第二章习题

目录 复习题 1.C程序的模块叫什么? 2.#include 预处理器编译指令的用处? 3.using namespace std; 该语句是干什么用的? 4.什么语句可以打印一个语句"hello,world",然后重新换行? 5.什么语句可以用来创…

桂院校园导航 导入 与 配置教程

将 静态项目/云开发项目 文件夹下最新版本的 文件夹下的 项目 的整个文件夹 复制到项目路径下(比如 D:\WeChatProjects),强烈建议不要直接扔在桌面上 云开发项目 需开通 云开发 功能(首月免费,次月19.9)&am…

【论文阅读笔记】CRFL: Certifiably Robust Federated Learning against Backdoor Attacks

个人阅读笔记,如有错误欢迎指出! 会议:PMLR 2021[2106.08283] CRFL: Certifiably Robust Federated Learning against Backdoor Attacks (arxiv.org) 问题: 现有的防御算法缺乏健壮性 创新: 证明了所提出框架得稳定性 通过马尔…

Generative AI 新世界 | 走进文生图(Text-to-Image)领域

在之前的四篇 “Generative AI 新世界” 中,我们带领大家一起探索了生成式 AI(Generative AI),以及大型语言模型(LLMs)的全新世界概览。并在文本生成(Text Generation)领域做了一些概…

javascript基础十:说说你对Javascript中this对象的理解

一、定义 函数的 this 关键字在 JavaScript 中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别 在绝大多数情况下,函数的调用方式决定了 this 的值(运行时绑定) this 关键字是函数运行时自动生成的一…

进程控制与进程调度 —— 时间片轮转调度算法(C++版)

目录 实验一 进程控制与进程调度 一、实验目的 二、实验内容 三、数据结构及符号说明 四、运行环境说明 五、代码段 六、 效果展示 实验一 进程控制与进程调度 备注:大二(下)操作系统实验一 一、实验目的 掌握进程状态的转变、…

多次调用java.awt.Toolkit.getDefaultToolkit方法获得是同一个单例的Toolkit

多次调用java.awt.Toolkit.getDefaultToolkit方法获得是同一个单例的Toolkit java.awt.Toolkit.getDefaultToolkit()import java.awt.Toolkit;public class 多次调用Toolkit的getDefaultToolkit方法获得是同一个单例的Toolkit {static public void main (String...arguments)t…

WMS:系统窗口添加过程

WMS:系统窗口添加过程 1、经常使用的两大类窗口2、系统窗口StatusBar2.1 StatusBarWindowView添加流程2.2 简要时序图 android12-release 1、经常使用的两大类窗口 Android中的“窗口”类型有很多,经常使用的“窗口”大致分为两大类:一是,由系…