当前位置: 首页 > 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** 展示了两个具有不同标签但结构相同的图,它们之间的映射也是同构的。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ESP IDF 4.4工程迁移到IDF5最新注意事项
  • 从核心到边界:六边形、洋葱与COLA架构的深度解析
  • uni-app中使用支付宝扫码插件并且在真机调试时使用(详细教程)
  • 3.11.样式迁移
  • Linux查看进程和进程号的几种方式
  • 数据结构第十讲:二叉树OJ题
  • 什么是人工智能 (AI)
  • 【MySQL】常用数据类型
  • Js在线Eval加密混淆及解密运行
  • [CR]厚云填补_SEGDNet
  • MySQL数据库入门:掌握数据管理的关键步骤!
  • 基于微信小程序的游戏王交流平台设计与实现-计算机毕设 附源码 06533
  • antd-vue 在style里面 scoped修改默认样式-vue3
  • 数学建模--二分法
  • 01:【stm32】软件安装及stm32的简要介绍
  • github指令
  • HashMap剖析之内部结构
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript HTML DOM
  • Javascript设计模式学习之Observer(观察者)模式
  • JavaScript设计模式与开发实践系列之策略模式
  • Object.assign方法不能实现深复制
  • tweak 支持第三方库
  • Vue2 SSR 的优化之旅
  • 飞驰在Mesos的涡轮引擎上
  • 开发基于以太坊智能合约的DApp
  • 盘点那些不知名却常用的 Git 操作
  • 前嗅ForeSpider采集配置界面介绍
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 数据仓库的几种建模方法
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 昨天1024程序员节,我故意写了个死循环~
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • $L^p$ 调和函数恒为零
  • (02)vite环境变量配置
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (21)起落架/可伸缩相机支架
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (二)测试工具
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (排序详解之 堆排序)
  • (四)图像的%2线性拉伸
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .Net core 6.0 升8.0
  • .Net Core与存储过程(一)
  • .NET Framework与.NET Framework SDK有什么不同?