当前位置: 首页 > news >正文

图的同态Graph Homomorphism与同构Graph Isomorphism

  • 图的同态Graph Homomorphism

图的同态(Graph Homomorphism)是图论中的一个重要概念,用于描述图之间的一种映射关系。图的同态描述了一个图如何通过映射保留其边的结构。

### 图的同态定义

设有两个图 \( G = (V_G, E_G) \) 和 \( H = (V_H, E_H) \)。一个从图 \( G \) 到图 \( H \) 的映射 \( f: V_G \to V_H \) 被称为图的同态,如果对于 \( G \) 中的每一条边 \( (u, v) \in E_G \),在 \( H \) 中对应的边 \( (f(u), f(v)) \) 也在 \( E_H \) 中,即:
\[ \forall (u, v) \in E_G, (f(u), f(v)) \in E_H \]

这个定义意味着,图的同态映射保留了边的存在性,但不要求完全保留顶点间的连接关系。

### 例子

#### 例子 1:简单图的同态

**图 \( G \)(完全图 \( K_3 \))**:
- 顶点集合 \( V_G = \{a, b, c\} \)
- 边集合 \( E_G = \{(a, b), (b, c), (c, a)\} \)

**图 \( H \)(具有两个顶点和一条边的图)**:
- 顶点集合 \( V_H = \{x, y\} \)
- 边集合 \( E_H = \{(x, y)\} \)

**映射 \( f \)**:
- \( f(a) = x \)
- \( f(b) = x \)
- \( f(c) = y \)

**验证同态**:
- 对于 \( G \) 中的每一条边:
  - 边 \( (a, b) \) 映射到 \( (x, x) \),但 \( E_H \) 中只有边 \( (x, y) \),因此这条边的映射不是有效的。
  - 边 \( (b, c) \) 映射到 \( (x, y) \),这是有效的。
  - 边 \( (c, a) \) 映射到 \( (y, x) \),这也是有效的。

在这个例子中,映射 \( f \) 并没有完全保留边的结构,因为 \( (a, b) \) 在 \( H \) 中并没有对应的边。因而,\( f \) 并不是一个有效的同态。

#### 例子 2:完整图的同态

**图 \( G \)(有三个顶点和两条边的图)**:
- 顶点集合 \( V_G = \{1, 2, 3\} \)
- 边集合 \( E_G = \{(1, 2), (2, 3)\} \)

**图 \( H \)(有四个顶点和两条边的图)**:
- 顶点集合 \( V_H = \{a, b, c, d\} \)
- 边集合 \( E_H = \{(a, b), (b, c)\} \)

**映射 \( f \)**:
- \( f(1) = a \)
- \( f(2) = b \)
- \( f(3) = c \)

**验证同态**:
- 对于 \( G \) 中的每一条边:
  - 边 \( (1, 2) \) 映射到 \( (a, b) \),这在 \( H \) 中是存在的。
  - 边 \( (2, 3) \) 映射到 \( (b, c) \),这在 \( H \) 中也是存在的。

在这个例子中,映射 \( f \) 是一个有效的同态,因为每条边在 \( G \) 中都有相应的边在 \( H \) 中与之对应。

### 总结

- 图的同态保留了边的存在性,但不要求顶点间的连接关系完全一致。
- 同态映射可以用来研究图的结构特性和图的简化问题。
- 在第一个例子中,映射并不是有效的同态,因为并不是所有边都可以映射到目标图中;而在第二个例子中,映射是有效的同态,因为所有边在目标图中都有对应的边。

  • 同构Graph Isomorphism

图的同构(Graph Isomorphism)是图论中的一个核心概念,用于描述两个图在结构上的完全等价关系。两个图 \( G \) 和 \( H \) 被称为同构的,如果存在一个顶点的双射(双向一一映射) \( f: V_G \to V_H \),使得对于 \( G \) 中的每一条边 \( (u, v) \in E_G \),在 \( H \) 中有一条边 \( (f(u), f(v)) \in E_H \),且这种映射保留了图的边的连接关系。即:
\[ \forall (u, v) \in E_G, (f(u), f(v)) \in E_H \]

### 例子

#### 例子 1:三角形图的同构

**图 \( G \)(完全图 \( K_3 \))**:
- 顶点集合 \( V_G = \{a, b, c\} \)
- 边集合 \( E_G = \{(a, b), (b, c), (c, a)\} \)

**图 \( H \)(另外一个完全图 \( K_3 \))**:
- 顶点集合 \( V_H = \{x, y, z\} \)
- 边集合 \( E_H = \{(x, y), (y, z), (z, x)\} \)

**同构映射 \( f \)**:
- \( f(a) = x \)
- \( f(b) = y \)
- \( f(c) = z \)

**验证同构**:
- 对于 \( G \) 中的每一条边:
  - 边 \( (a, b) \) 映射到 \( (x, y) \),这在 \( H \) 中存在。
  - 边 \( (b, c) \) 映射到 \( (y, z) \),这在 \( H \) 中存在。
  - 边 \( (c, a) \) 映射到 \( (z, x) \),这在 \( H \) 中存在。

在这个例子中,映射 \( f \) 是一个有效的同构映射,因为它保留了边的结构,说明图 \( G \) 和图 \( H \) 是同构的。

#### 例子 2:具有不同标签的同构图

**图 \( G \)(两个三角形共享一个公共边)**:
- 顶点集合 \( V_G = \{a, b, c, d, e\} \)
- 边集合 \( E_G = \{(a, b), (b, c), (c, a), (b, d), (d, e), (e, b)\} \)

**图 \( H \)(另一个具有相同结构的图)**:
- 顶点集合 \( V_H = \{1, 2, 3, 4, 5\} \)
- 边集合 \( E_H = \{(1, 2), (2, 3), (3, 1), (2, 4), (4, 5), (5, 2)\} \)

**同构映射 \( f \)**:
- \( f(a) = 1 \)
- \( f(b) = 2 \)
- \( f(c) = 3 \)
- \( f(d) = 4 \)
- \( f(e) = 5 \)

**验证同构**:
- 对于 \( G \) 中的每一条边:
  - 边 \( (a, b) \) 映射到 \( (1, 2) \),这在 \( H \) 中存在。
  - 边 \( (b, c) \) 映射到 \( (2, 3) \),这在 \( H \) 中存在。
  - 边 \( (c, a) \) 映射到 \( (3, 1) \),这在 \( H \) 中存在。
  - 边 \( (b, d) \) 映射到 \( (2, 4) \),这在 \( H \) 中存在。
  - 边 \( (d, e) \) 映射到 \( (4, 5) \),这在 \( H \) 中存在。
  - 边 \( (e, b) \) 映射到 \( (5, 2) \),这在 \( H \) 中存在。

在这个例子中,映射 \( f \) 是一个有效的同构映射,因为它保留了边的结构,说明图 \( G \) 和图 \( H \) 是同构的。

### 总结

- **图的同构** 需要存在一个顶点的双射,使得图的每条边在两个图中都有对应的边,并且这种映射完全保留了图的结构。
- **例子 1** 展示了两个完全图 \( K_3 \) 的同构,它们的结构完全相同,但顶点标签不同。
- **例子 2** 展示了两个具有不同标签但结构相同的图,它们之间的映射也是同构的。

通过这些例子,可以看到图的同构不仅考虑了图的结构,而且还允许不同的顶点标签,只要边的连接关系被保留。

相关文章:

图的同态Graph Homomorphism与同构Graph Isomorphism

图的同态Graph Homomorphism 图的同态(Graph Homomorphism)是图论中的一个重要概念,用于描述图之间的一种映射关系。图的同态描述了一个图如何通过映射保留其边的结构。 ### 图的同态定义 设有两个图 \( G (V_G, E_G) \) 和 \( H (V_H, …...

使用 Python 对雷达卫星 sar 图像进行降噪的三种方法

合成孔径雷达 (SAR) 图像广泛应用于各种领域(航空航天、军事、气象等)。问题是这种图像在其原始格式中受到噪点的影响。虽然这些图像通常也是沉重的文件,但从科学的角度来看,有效地对其进行去噪的任务似乎既具有挑战性,又在现实世界中非常有用。 卫星图像有两大类: 光学…...

C# Unity 面向对象补全计划 之 初识继承方法与多态

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝 1.继承方法 C# & Unity 面向对象补全计划 之 继承(字段与属性&…...

突破PyCharm索引瓶颈:提升文件索引速度的策略

突破PyCharm索引瓶颈:提升文件索引速度的策略 PyCharm作为Python开发者的首选IDE,以其强大的功能和灵活的配置而广受好评。然而,当处理大型项目或复杂文件结构时,文件索引慢的问题可能会显著降低开发效率。本文将提供一系列优化技…...

体素相关的快速计算

“体素”通常是指在三维空间中具有固定尺寸和位置的小立方体单元。 体素的优点包括: 易于处理和计算:在计算机图形学和三维建模中,体素的结构相对简单,计算和操作较为方便。能精确表示物体的内部结构:对于一些需要了…...

Python 爬虫项目实战(二):爬取微博热搜榜

前言 网络爬虫(Web Crawler),也称为网页蜘蛛(Web Spider)或网页机器人(Web Bot),是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓…...

文件解析漏洞复现

一、IIS 6.X 1.在网站目录创建文件夹名为xxx.asp/xxx.asa 文件夹,里面的任意文件都会被当作asp文件执行 创建1.asp 访问 2.ooo.asp.jpg会被当做asp文件执行 创建一个ooo.asp;.jpg 访问 二、IIS 7.X 上传1.jpg文件在网址后/.php可以成功执行 写一个1.jpg文件内容…...

git push报错 pre-receive hook declined

今天使用git提交的代码的时候,不然报错 pre-receive hook declined提交不上去,昨天还好好的。 经过检查发现,原来对应的分支被leader设置成受保护分支了,导致代码提交不上去。 然后在git管理平台取消分支保护,或者将我…...

打造个性化代码审查工具:在Perl中实现自定义审查的艺术

打造个性化代码审查工具:在Perl中实现自定义审查的艺术 代码审查是软件开发过程中的关键环节,它有助于提高代码质量和发现潜在缺陷。Perl作为一种灵活的编程语言,提供了丰富的特性,使得在Perl中实现自定义的代码审查工具成为可能…...

RabbitMq架构原理剖析及应用

文章目录 RabbitMQ 架构组件1. **Broker** (Broker Server)2. **Exchange**3. **Queue**4. **Producer** (消息生产者)5. **Consumer** (消息消费者)6. **Virtual Hosts** (虚拟主机) 工作流程内部原理1. **队列管理**2. **集群**3. **持久化与内存**4. **性能优化** 高级特性1…...

c# 对接第三方接口实现签名

官网文档要求如下: Sign算法说明 举例:假设请求参数键值对如下 appkey : test2-xx page_no : 0 end_time : 2016-08-01 13:00:00 start_time : 2016-08-01 12:00:00 page_size : 40 sid : test2 timestamp : 1470042310 第一步 对数所有请求参数按照…...

数学建模评价类模型—层次分析法(无数据情况下)

目录 前言 一、评价类问题概述 二、AHP建模流程 1、过程描述 2、层次分析法—Matlab代码 三、权重计算 1、算术平均法 2、几何平均法 3、特征值法 目录 文章目录 前言 一、评价类问题概述 二、AHP建模流程 1、过程描述 2、层次分析法—Matlab代码 三、权重计算 算术平均法 前言…...

模拟实现strcat(字符串追加)

1.我们要知道stcat的作用是什么,字符串追加。 2.我们进行模仿,我们先将arr1不断,直到“\0”,我们加在后面。 //模拟实现strcat(字符串追加) char* my_strcat(char* arr1, const char* arr2) {assert(arr1 && arr2);char ret arr1;…...

HTTP简单概述

一. HTTP HTTP(HyperText Transfer Protocol)是用于在客户端和服务器之间传输超文本数据(如HTML)的应用层协议。它是万维网的基础协议,定义了浏览器和服务器之间如何请求和传输文档。HTTP有多个版本,每个版…...

掌握PyCharm代码片段管理器:提升编码效率的秘诀

掌握PyCharm代码片段管理器:提升编码效率的秘诀 PyCharm作为业界领先的集成开发环境(IDE),提供了许多便利的功能来提升开发者的编码效率,其中之一就是代码片段管理器。代码片段管理器允许开发者保存、管理和重用代码模…...

MyBatis动态代理和映射器

目录 1、映射器简介 (1)什么是mapper动态代理? (2)动态代理的规范 (3)如何使用动态代理 (4)为什么学映射器 (5)映射器与接口 (…...

ShardingSphere中的ShardingJDBC常见分片算法的实现

文章目录 ShardingJDBC快速入门修改雪花算法和分表策略核心概念分片算法简单INLINE分片算法STANDARD标准分片算法COMPLEX_INLINE复杂分片算法CLASS_BASED自定义分片算法HINT_INLINE强制分片算法 注意事项 ShardingJDBC Git地址 快速入门 现在我存在两个数据库,并…...

SpringBoot整合Flink CDC实时同步postgresql变更数据,基于WAL日志

SpringBoot整合Flink CDC实时同步postgresql变更数据,基于WAL日志 一、前言二、技术介绍(Flink CDC)1、Flink CDC2、Postgres CDC 三、准备工作四、代码示例五、总结 一、前言 在工作中经常会遇到要实时获取数据库(postgresql、m…...

ThinkPHP事件的使用

技术说明 1.ThinkPHP版本:支持6.0、8.0 2.使用场景:用户登陆后日志记录、通知消息发送等主流程、次流程分离等场景 3.说明:网上很多帖子说的不明不白的,建议大家自己手动尝试总结一下 4.事件手动绑定的时候,一定要…...

【Nuxt】服务端渲染 SSR

SSR 概述 服务器端渲染全称是:Server Side Render,在服务器端渲染页面,并将渲染好HTML返回给浏览器呈现。 SSR应用的页面是在服务端渲染的,用户每请求一个SSR页面都会先在服务端进行渲染,然后将渲染好的页面&#xf…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...