【补充】图神经网络前传——图论

本文作为对图神经网络的补充。主要内容是看书。

仅包含Introduction to Graph Theory前五章以及其他相关书籍的相关内容(如果后续在实践中发现前五章不够,会补上剩余内容)

引入

什么是图?

如上图所示的路线图和电路图都可以使用点和线表示,如下图:

图中的点P,Q,R,S和T被称为顶点(vertices),而图中的线被称为边(edges)。整张图被称为图(graph)。注意PS和QT两条线相交点并不是顶点,参考前面的图,这里的“焦点”并不是路口或者是两条电线教会的地方。

顶点的度(degree),是以该顶点为终点的边的个数,比如图中的顶点Q的度是4(PQ,TQ,SQ,RQ)。

上面这张图也可以表示其他的情况,比如,P,Q,R,S和T表示足球队,边代表队伍之间的比赛,那么队伍P就和Q,S和T三个队伍比赛过,但是没有与队伍R比过赛。这种情况下,度就可以理解为对应队伍参加比赛的数目。

如果我们把PS边扯到矩形PQST外面,得到的图(⬇️)荏苒可以告诉我们P S两个地点之间有一条路/P S之间连了一条电线/P S两个足球队之间进行了比赛。我们丢失的信息可能是路线的长度或者电线是直的。

 因此,图仅仅代表点之间是如何连接的,任何测量得到的属性都不重要。因此虽然PS被扯到外面了,但是与前面的图是同一个图。

类似的,即使⬆️这张图长得完全不像了,但是仍然是同一张图。

现在,我们假设QS、ST道路拥堵,我们需要建造更多的路来缓解交通压力,如下图:

此时,QS、ST之间的边被称为多重边(multiple edges)。

现在,我们有一辆车要在P点停车(感觉这里说做U turn更好理解),此时在P点加一条边,此时这条边被称为自环(loop)

没有loop以及multiple edges的图被称为简单图(simple graphs)

将道路设置为单行道,即为有向图(directed graphs,简写为digraphs),如上图所示。单行道的方向使用箭头表示。

许多图论都包含了各种各样的“移动方式”,即从一个顶点移动到另一个顶点。比如从P点到Q点,我们可以P —> Q —> R,P —> S —> Q —> T —> S —> R,前者走了两步,后者走了五步。如果同一个顶点出现次数不超过一次,则称这种“移动方式”为一条路(path)。

P —> T —> S —> R为一条路

Q —> S —> T —> Q是一个环

这里关于Eulerian和Hamiltonian graph的描述不是很清楚,采用其他材料补充。

在访问每个顶点时沿着每条边正好走一次的回路被称为欧拉回路(Eulerian circuit),这个图被称为欧拉图(Eulerian graph)(死去的记忆开始攻击我了)

如果连通图中存在闭合遍历,则该图称为哈密顿图(Hamiltonian Graph),除了根顶点或起始顶点外,该图的每个顶点都经过一次。哈密顿图的另一个定义是如果有一个连通图,它包含哈密顿电路,那么这个图就被称为哈密顿图。

Certain graph problems deal with finding a path between two vertices such that each edge is traversed exactly once, or finding a path between two vertices while visiting each vertex exactly once. These paths are better known as Euler path and Hamiltonian path respectively.

Mathematics | Euler and Hamiltonian Paths - GeeksforGeeks

有些图有两个或者更多的部分组成->非连通图

任意两个顶点之间都连了一条路径->连通图

如果每一对顶点之间只连了一条边->称为树(tree)

可以看出树是连通图,但是没有环

图的边没有交叉的图称为平面图(planar graph)

(在第6章中介绍的是染色问题,提到了高中的时候用到过的四色定理,考虑有空去看看~)

定义

 如上图,简单图G的顶点集合为V(G),{u, v, w, z},边的集合为E(G),包含:uv, uw, vw, wz

在任何简单图中,最多有一条边连接给定的一对顶点。

简单图的很多结论可以推广到更general的图中(即使加上环和多重边)

图:G = (V, E)

其中V表示顶点的集合,E是未排序的顶点对的集合,E中的元素即为边。

相邻(adjacent):假设u v是图G = (V, E)的两个顶点,若有\{u, v\}\in E,则称u v是相邻的,即\{u, v\}是图G中的一条边,称u为v的邻居(neighbour)。

关联(incident):若顶点v和边e的关系为v\in e,则称顶点v和边e关联。

自环(loop):(v,v), v\in V
这里的(v,v)表示边连接的两个顶点是同一个

多重边(multiple edge):当一条边e = (u,v)在边的集合E中出现多次,称为多重边

简单图:没有环&多重边

同构(Isomorphism)

G_1 G_2之间的顶点有一一对应关系,且G_1中连接任意两个顶点的边的个数与G_2中对应相等,则称G_1 G_2同构。

推论:G_1与G_2同构,则G_2与G_1同构(可逆)

G_1与G_2同构,G_2与G_3同构,则G_1与G_3同构(传递)

labelled graph和unlabelled graph(直接看图,上面的是labelled,下面是unlabelled)

连通(connectedness)

我们可以把两个图合并在一起,得到一个更大的图,假设现在有两个图G_1 = (V(G_1), E(G_1))以及图G_2 = (V(G_2), E(G_2))并且两个图的顶点的集合(V(G_1)V(G_2))是不相连的,则图的unionG_1\cup G_2即为顶点集合和边集合的unionV(G_1)\cup V(G_2)E(G_1)\cup E(G_2)

之前讨论的大部分图都是连通的(不能被表述为两个图的union),如果可以拆成两个图,那么就是非连通图

任何非连通图G都可以表示成连通图的union,这里的连通图被称为连通块/连通分量(connected component)

相邻

当图G的顶点v和w之间有一条边vw,我们称顶点v和w是相邻(adjacent)的,且与边相关(incident)。类似的,如果两条边e和f有一个公共的顶点,则称这两条边相邻。

邻接矩阵&关联矩阵

adjacency and incidence matrices

假设有n个顶点,邻接矩阵定义为一个nxn的矩阵,若顶点i和顶点j之间有一条边,则位置(i,j)为1,否则为0。任何邻接矩阵为实矩阵且为对称阵

假设有n个顶点,m条边,关联矩阵为一个nxm的矩阵,若顶点与边相关(这条边有一段连着这个顶点)则为1,否则为0。

如果顶点v的度为0,则称该顶点为孤立点(isolated)

如上图所示的图的度序列为(1,3,6,8)(可以看到环会带来两个度)

handshaking lemma:任何图的所有顶点的度的和是偶数。

说明如果几个人握手,总的握手数目一定是偶数

子图

图G的子图是一个顶点都在V(G)内,边都在E(G)内的图。

导出子图(induced subgraph):是子图,但是摘出来所有完整的边(如果某个点有多条边,只选取边的另一边连着的顶点也在选取的顶点集合中的边。

生成子图(spanning subgraph):是子图,但是顶点全都选出来了

特殊的图

null graphs:边的集合为空的图。注意null graph的每个顶点都是isolated的。

complete graphs:每一对不同的顶点是邻接的简单图。如果有n个顶点,那么边的数目为n(n-1)/2(见下图)

regular graphs:图的每个顶点都有相同的度(见下图)。如果图的每个顶点的度为r,则称图为regular of degree r或r-regular(r阶正则图)。

下图同样称为Petersen graph,是cubic graphs的一个例子,cubic graphs指的是3阶正则图

cycle graphs:二阶正则图。

path graphs:cycle graphs去掉一条边

wheel:给cycle graphs中的每个点都另外一起连到一个新的顶点

如下图:

platonic graphs:属于正则图

bipartite graphs(二部图/二分图):如果图G的顶点集合可以被分为两个不相交的集合A和B,使得图G的每条边都分别连接A中的顶点和B中的顶点。

cubes:正则二部图

路径和循环

连通性

给定一个图G。G中的一条线路(walk)是一个有限的边的序列,可以表示成:

v_0v_1,v_1v_2,......,v_{m-1}v_m

或者

v_0 \rightarrow v_1\rightarrow v_2 \rightarrow \cdot \cdot \cdot \rightarrow v_m

任意两条连续的边是邻接的或者是相同的(有一个自环)。我们称v_0为线路的初始顶点(initial vertex),v_m为线路的最终顶点(final vertex),并且称这个过程为从v_0到v_m的线路(a walk from v_0 to v_m)。线路中经过的边的条数称为线路的长度(length)

但是线路的概念往往太过于笼统了->引入轨迹(trail)的概念。轨迹指的是所有的边都是distinct的线路,如果同时能保证顶点也是distinct,就称为途径(path)。

如果轨迹或途径是封闭(closed)的(即初始顶点=最终顶点,v_0 = v_m)。至少包含一条边的封闭的途径称为环(cycle),请注意,任何的自环以及多重边都是环。

若G为二部图,则G的每个环的长度都是偶数

连通图:任何一对顶点时图中一条途径的两端

非连通图:⬆️不满足

Eulerian graphs

如果一个连通图G存在一条封闭的轨迹包含G中所有的边,则称这条轨迹为Eulerian trail。注意要求每条边都要遍历且只能走一次(一笔画)

如果一个非欧拉图存在一条轨迹可以包含所有的边,称为semi-Eulerian。上图由左到右依次为欧拉图,半欧拉图,非欧拉图。

七桥问题:

引理:若G的每个顶点的度都至少为2,那么G包含一个环

定理:当且仅当连通图G的每个顶点的度都是偶数,这个图才是Eulerian

(题外话,这不就是一笔画问题咩)

Hamiltonian graphs

哈密顿图

是否包含一条封闭的轨迹通过且只通过一次图G中的所有顶点。

一些算法

详见https://www.maths.ed.ac.uk/~v1ranick/papers/wilsongraph.pdf47页

本章暂时跳过

平面性

平面图

平面图(planar graph)指的是图可以被画在一个平面上并且避免交叉(即:没有任何两条边在除了顶点意外的地方在几何上相交)

把左图的一条边扯到外边(中间的图)就得到了一个平面图

同胚的 (homeomorphic):若两个图都可以通过向同一个图的边加入新的度为2的顶点,称两个图同胚

 

对偶图

图论(十三)——平面图和对偶图-CSDN博客

在G的每个面中选择点v*作为G*的顶点,对应G的边e画边e*穿过e,但是不穿过G的其他边,并将与e相邻的面的顶点v*连接起来,这些线就是G*的边

参考:

https://www2.math.ethz.ch/education/bachelor/lectures/fs2016/math/graph_theory/graph_theory_notes.pdf

https://sitn.hms.harvard.edu/flash/2021/graph-theory-101/

https://cseweb.ucsd.edu/~dakane/Math154/154-textbook.pdf

https://www.maths.ed.ac.uk/~v1ranick/papers/wilsongraph.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Spring Cloud】服务容错中间件Sentinel入门

文章目录 什么是 SentinelSentinel 具有以下特征:Sentinel分为两个部分: 安装 Sentinel 控制台下载jar包,解压到文件夹启动控制台访问了解控制台的使用原理 微服务集成 Sentinel添加依赖增加配置测试用例编写启动程序 实现接口限流总结 欢迎来到阿Q社区 …

【介绍下Unity编辑器扩展】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【docker】Spring Boot3.x 打包 Docker容器

Docker化Spring Boot应用 创建文件夹 demo mkdir democd demo创建Dockerfile # 两个 openjdk 二选一 #FROM openjdk:17-jre-alpineFROM eclipse-temurin:17MAINTAINER chengxuyuanshitang <chengxuyuanshitangXX.com>RUN mkdir -p /workspace/java/demoCOPY demo.ja…

Android 11 裁剪系统显示区域(适配异形屏)

概述 在显示技术中&#xff0c;"OverScan"&#xff08;超扫描&#xff09;是一种调整显示图像边界的技术。通常情况下&#xff0c;OverScan 会在显示屏的边缘周围裁剪一小部分图像。这种裁剪是为了确保显示内容在屏幕上的完整可见性&#xff0c;尤其是在老式电视或投…

C++入门基础(二)

目录 缺省参数缺省参数概念缺省参数分类全缺省参数半缺省参数声明与定义分离 缺省参数的应用 函数重载函数重载概念例子1 参数类型不同例子2 参数的个数不同例子3 参数的顺序不同 C支持函数重载的原理--名字修饰(name Mangling) 感谢各位大佬对我的支持,如果我的文章对你有用,欢…

Visual Studio导入libtorch(Cuda版)

Visual Studio导入libtorch&#xff08;Cuda版&#xff09; 一、安装 官网&#xff1a;https://pytorch.org/get-started/locally/ 相应地选择并下载 二、环境变量配置 解压zip&#xff0c;得到libtorch文件夹&#xff0c;将libtorch\lib和libtorch\bin对应路径添加到系统环…

使 Elasticsearch 和 Lucene 成为最佳向量数据库:速度提高 8 倍,效率提高 32 倍

作者&#xff1a;来自 Elastic Mayya Sharipova, Benjamin Trent, Jim Ferenczi Elasticsearch 和 Lucene 成绩单&#xff1a;值得注意的速度和效率投资 我们 Elastic 的使命是将 Apache Lucene 打造成最佳的向量数据库&#xff0c;并继续提升 Elasticsearch 作为搜索和 RAG&a…

【JVM】简述类加载器及双亲委派机制

双亲委派模型&#xff0c;是加载class文件的一种机制。在介绍双亲委派模型之前&#xff0c;我需要先介绍几种类加载器&#xff08;Class Loader&#xff09;。 1&#xff0c;类加载器 Bootstrap&#xff0c;加载lib/rt.jar&#xff0c;charset.jar等中的核心类&#xff0c;由…

JWT是什么?如何使用?

JWT是什么&#xff1f;如何使用&#xff1f; 前言什么是JWT&#xff1f;概念工作方式JWT的组成HeaderPayloadSignatrue 实战引入依赖自定义注解定义实体类定义一个JWT工具类业务校验并生成token定义拦截器配置拦截器定义接口方法并添加注解开始验证 使用场景注意事项 JWT与传统…

ASR语音转录Prompt优化

ASR语音转录Prompt优化 一、前言 在ASR转录的时候&#xff0c;我们能很明显的感受到有时候语音识别不是很准确&#xff0c;这过程中常见的文本错误主要可以归纳为以下几类&#xff1a; 同音错误&#xff08;Homophone Errors&#xff09; 同音错误发生在不同词语发音相似或相…

用Excel做一个功能完备的仓库管理系统

1 基本设计思路 用到的Excel技术&#xff1a;sumif, vlookup, 表格(table)。基本思路&#xff1a;在有基础的商品、仓库等信息的情况下&#xff0c;对商品的每一个操作都有对应的单据&#xff0c;然后再汇总统计。标识&#xff1a;为了在不同的维度统计数量&#xff0c;各单据…

谷粒商城实战(020 RabbitMQ-消息确认)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第258p-第p261的内容 消息确认 生产者 publishers 消费者 consumers 设置配置类 调用api 控制台 抵达brocker 代理 新版本ReturnCallbac…

matlab学习005-利用matlab设计滤波器

目录 一&#xff0c;含有多个频率成分的三角信号 1&#xff0c;以采样频率fs20KHz对信号采样&#xff0c; 画出信号的波形&#xff1b; 1&#xff09;前期基础 2&#xff09;波形图 3&#xff09;代码 2&#xff0c;选取合适的采样点数&#xff0c;利用DFT分析信号的…

Baidu Comate:“AI +”让软件研发更高效更安全

4月27日&#xff0c;百度副总裁陈洋出席由全国工商联主办的第64届德胜门大讲堂&#xff0c;并发表了《深化大模型技术创新与应用落地&#xff0c;护航大模型产业平稳健康发展》主题演讲。陈洋表示&#xff0c;“人工智能”成为催生新质生产力的重要引擎&#xff0c;对于企业而言…

【禅道客户案例】同方智慧能源数智化转型新实践 禅道助力前行

同方智慧能源是同方股份有限公司的骨干企业。依托中核集团、清华大学的科技优势&#xff0c;坚持技术和资源双核驱动&#xff0c;基于30多年行业积淀&#xff0c;面向建筑、交通、工业、北方供热、数据中心等主要用能场景提供设计咨询、产品技术、投资建设、运营服务&#xff0…

四、线段、矩形、圆、椭圆、自定义多边形、边缘轮廓和文本绘制(OpenCvSharp)

功能实现&#xff1a; 对指定图片上进行绘制线段、矩形、圆、椭圆、自定义多边形、边缘轮廓以及自定义文本 一、布局 用到了一个pictureBox和八个button 二、引入命名空间 using System; using System.Collections.Generic; using System.Drawing; using System.Windows.F…

如何有效的将丢失的mfc140u.dll修复,几种mfc140u.dll丢失的解决方法

当你在运行某个程序或应用程序时&#xff0c;突然遭遇到mfc140u.dll丢失的错误提示&#xff0c;这可能会对你的电脑运行产生一些不利影响。但是&#xff0c;不要担心&#xff0c;以下是一套详细的mfc140u.dll丢失的解决方法。 mfc140u.dll缺失问题的详细解决步骤 步骤1&#x…

VTK —— 二、教程五 - 通过鼠标事件与渲染交互(附完整源码)

代码效果 本代码编译运行均在如下链接文章生成的库执行成功&#xff0c;若无VTK库则请先参考如下链接编译vtk源码&#xff1a; VTK —— 一、Windows10下编译VTK源码&#xff0c;并用Vs2017代码测试&#xff08;附编译流程、附编译好的库、vtk测试源码&#xff09; 教程描述 本…

C语言-嵌入式-STM32:FreeRTOS说明和详解

Free即免费的&#xff0c;RTOS的全称是Real time operating system&#xff0c;中文就是实时操作系统。 注意&#xff1a;RTOS不是指某一个确定的系统&#xff0c;而是指一类操作系统。比如&#xff1a;uc/OS&#xff0c;FreeRTOS&#xff0c;RTX&#xff0c;RT-Thread 等这些都…

Visual studio 2019 编程控制CH341A芯片的USB设备

1、硬件 买了个USB可转IIC、或SPI、或UART的设备&#xff0c;主芯片是CH341A 主要说明USB转SPI的应用&#xff0c;绿色跳线帽选择IIC&SPI&#xff0c;用到CS0、SCK、MOSI、MISO这4个引脚 2、软件 2.1、下载CH341A的驱动 点CH341A官网https://www.wch.cn/downloads/CH34…