图论导引 - 第二章 - 11/08

devtools/2024/11/8 18:59:31/

图论导引 - 第二章 - 11/08

第二章:定义与示例 Definitions and examples

章节概述

在这一章中,我们为图论的深入研究奠定基础。第2节将第1章中的一些基本定义形式化,第3节提供了各种示例。在第4节中,我们展示如何用图来表示并解决三个来自趣味数学的问题。

定义

简单图 simple graph

一个简单图 G G G 由一个非空有限集 V ( G ) V(G) V(G) 以及一个有限集 E ( G ) E(G) E(G) 组成。我们称 V ( G ) V(G) V(G) G G G 的顶点集, E ( G ) E(G) E(G) G G G 的边集。

  • V ( G ) V(G) V(G) 中的元素称为顶点 vertices(或节点 nodes)
  • E ( G ) E(G) E(G) 是由 V ( G ) V(G) V(G)​ 中不同元素不同无序对组成**(注意:一定是不同元素、不同无序对,与一般图进行区分)**,这些无序对称为边 edges。
    • 不同元素 指 不能有“环”,即边不能指向自己。
    • 不同无序对 指 不能有"多重边",即同一对顶点不能包含多条边。
  • 一条边 { v , w } \{v,w\} {v,w} 被说成连接顶点 v v v w w w,通常简记为 v w vw vw​ 。
  • 在简单图中,任何一对顶点的边最多只有一条。
    简单图
一般图 general graph

允许有环(loop)或多重边(multiple edges)的图,叫一般图(general graph),也叫图 graph。

每个简单图都是图,但并非每个图都是简单图。

  • 环:允许顶点连接自身的边。
  • 多重边:允许两个顶点之间有多条边连接。

一个一般图 G G G 由一个非空有限集 V ( G ) V(G) V(G) 以及一个有限集合族 E ( G ) E(G) E(G) 组成。我们称 V ( G ) V(G) V(G) G G G 的顶点集(vertex set), E ( G ) E(G) E(G) G G G边集合族(edge family)。

  • V ( G ) V(G) V(G) 中的元素称为顶点 vertices(或节点 nodes)
  • E ( G ) E(G) E(G) 是由 V ( G ) V(G) V(G)​ 中元素的无序对组成**(注意:不一定是不同元素,也可能相同)**,这些无序对称为边。
    • 使用“集合族(family set)” 这个词是为了说明集合中允许存在多重边。
  • 一条边 { v , w } \{v,w\} {v,w} 被说成连接顶点 v v v w w w,也是简记为 v w vw vw​ 。
  • 作者使用 “family” 一词描述会出现重复元素的集合。
    • 例如, { a , b , c } \{a,b,c\} {a,b,c} 是集合 set, ( a , a , c , b , a , c ) (a,a,c,b,a,c) (a,a,c,b,a,c) 是集合族 family

一般图

同构 Isomorphism

如果图 G 1 G_1 G1 的顶点与图 G 2 G_2 G2顶点之间存在一一对应关系,使得 G 1 G_1 G1 中任意两个顶点之间连接的边的数量等于 G 2 G_2 G2 中相应顶点之间连接的边的数量,那么两个图 G 1 G_1 G1 G 2 G_2 G2​ 是同构的。

同构图的特点:

  1. 结构保持:同构图保持了图的基本结构,即顶点之间的连接关系。这意味着两个同构图在不考虑顶点标签的情况下,它们的边的连接方式是完全相同的。
  2. 顶点的重新标记:同构图允许我们对顶点进行重新标记,只要这种标记保持了图的结构不变。换句话说,即使两个图的顶点有不同的标签,只要存在一种方式将一个图的顶点映射到另一个图的顶点,使得边的关系得以保持,这两个图就是同构的。
  3. 自反性、对称性和传递性:同构关系具有自反性(一个图与自身同构)、对称性(如果图 G1 与图 G2 同构,则 G2 与 G1 同构)和传递性(如果图 G1 与图 G2 同构,且 G2 与图 G3 同构,则 G1 与 G3 同构)。

在这里插入图片描述

在这里插入图片描述

连通性 connectedness
  • 如果一个图不能被表示为两个图的并集,则这个图是连通图(connected graph)。

  • 任何非连通图都可以表示为连通图的并集(disconnected graph)。

    • 非连通图中的每个连通图称为连通分量(component)。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相邻性 Adjacency

G G G 中顶点 v v v是与 v v v 关联的边的数量,记为 d e g ( v ) deg(v) deg(v)

  • 通常,约定在 v v v 处的 v v v​ 的度贡献为 2(而不是 1)。
  • 度为 0 的顶点是孤立顶点(isolated vertec),度为 1 的顶点是端点(end-vertex)
  • 图的度序列是按升序排列的度组成的序列,必要时可以重复。

注意,在任何图中,所有顶点度数之和是一个偶数,即边数的两倍。

这个结果主要由莱昂哈德·欧拉在1736年得出,被称为握手引理(handshaking lemma)

握手引理的一个直接推论:在任何图中,度数为奇数的顶点的数量是偶数。

在这里插入图片描述
在这里插入图片描述

子图 Subgraphs

G G G 的子图的每个顶点都属于 V ( G ) V(G) V(G),每条边都属于 E ( G ) E(G) E(G)​。

可以通过删除边和顶点来得到一个图的子图

  • G − e G - e Ge 表示从 G G G 中删除边 e e e 后得到的图。
  • 如果 F F F G G G 中的任意一组边,我们用 G − F G - F GF 表示从 G G G 中删除 F F F 中的边后得到的图。
  • 类似地,用 G − v G - v Gv 表示从 G G G 中删除顶点 v v v 以及与 v v v 关联的边后得到的图。
  • 如果 S S S G G G 中的任意一组顶点,我们用 G − S G - S GS 表示从 G G G 中删除 S S S​ 中的顶点以及与其中任何一个顶点关联的所有边后得到的图。

我们也用image-20241107093438282表示这样一个图:取一条边 e e e 并对其进行收缩,即移除这条边并将其两个端点 v v v w w w合并,使得合并后的顶点与那些原本与 v v v w w w 关联的边相关联。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

矩阵表示 Matrix representations

假设图的顶点数量为 n n n,边的数量为 m m m

邻接矩阵 Adjacency Matrix A A A

  • 如果 G G G 是一个顶点标有 { 1 , 2 , … , n } \{1,2,\ldots,n\} {1,2,,n} 的图,那么它的邻接矩阵 A A A 是一个 n × n n×n n×n 的矩阵。 n n n 是顶点数量。
  • 行和列都代表图中的顶点。
  • 其第 ( i , j ) (i,j) (i,j)项是连接顶点 i i i 和顶点 j j j边的数量

关联矩阵 Incidence Matrix M M M

  • 如果边标有 { 1 , 2 , … , n } \{1,2,\ldots,n\} {1,2,,n},那么它的关联矩阵 M M M 是一个 n × m n×m n×m 的矩阵。
  • 行代表图中的顶点,列代表图中的边。
  • 若顶点 i i i 与边 j j j 相关联,则其第 ( i , j ) (i,j) (i,j) 项为 1,否则为 0 。

在这里插入图片描述

示例 Examples

本节主要介绍一些重要类型的图

零图 Null Graphs

边集为空的图是零图。

  • N n N_n Nn 表示 n n n 个顶点的零图,如图 3.1 表示为 N 4 N_4 N4
  • 零图的每个顶点都是孤立顶点。

在这里插入图片描述

完全图 Complete Graphs

一个简单图中,如果每一对不同的顶点都是相邻的,那么这个图是完全图

  • K n K_n Kn 表示 n n n 个顶点的完全图
  • K n K_n Kn n ( n − 1 ) / 2 n(n - 1)/2 n(n1)/2​​ 条边
    • (n-1) + (n-2) + (n-3) + … + 3 + 2 + 1 = n*(n-1)/2 (等差数列求和)
    • 第一个顶点和其他 n - 1 个顶点有 n - 1 条边;第二个顶点除了和刚刚的第一个顶点连接外,还有 n - 2 条边;以此类推…
  • 完全图中每个顶点的度为 n − 1 n-1 n1

在这里插入图片描述

环图、路径图、轮图 Cycle Graphs, path graphs and wheels
  • 度数为2的连通正则图是一个环图。
    • C n C_n Cn 表示 n n n​ 个顶点的环图。
    • 正则图是指图中所有顶点的度数都相同。
  • 从环图 C n C_n Cn移除一条边得到的图是 n n n 个顶点的路径图,用 P n P_n Pn 表示。
  • 从环图 C n − 1 C_{n - 1} Cn1中通过将每个顶点都连接到一个新顶点 v v v 得到的图是 n n n 个顶点的轮图,用 W n W_n Wn 表示。

在这里插入图片描述

正则图 Regular Graphs

每个顶点都有相同度数的图是正则图。

  • 如果每个顶点的度数为 r r r,那么这个图就叫 r r r 度正则图或 r r r 正则的。

  • 特别重要的是三次图(cubic graphs),即度数为 3 3 3 的正则图;**彼得森图(Petersen Graph)**就是一个三次图的例子。

  • 注意,零图 N n N_n Nn是 0 度正则图,环图 C n C_n Cn 是 2 度正则图,完全图 K n K_n Kn n − 1 n - 1 n1 度正则图。

在这里插入图片描述

柏拉图图 Platonic Graphs

与柏拉图立体(Platonic solids)相关的图。

柏拉图立体是五种正多面体,包括:正四面体(Tetrahedron)、正六面体(Hexahedron,即立方体)、正八面体(Octahedron)、正十二面体(Dodecahedron)、正二十面体(Icosahedron)。

在这里插入图片描述

二部图 Bipartite Graphs

如果一个图 G G G 的顶点集可以被分成两个不相交的集合,使得同一个集合内的任意两个顶点都不相邻(即没有边直接连接它们),而不同集合中的顶点之间则可以通过边相互连接(可能存在多重边,也允许不相连,这是与完全二部图的区别!)

更正式地说,如果一个图 G = ( V , E ) G = (V, E) G=(V,E) 可以被分为两个顶点集合 V 1 V_1 V1 V 2 V_2 V2,使得:

  1. V 1 V_1 V1 V 2 V_2 V2 是不相交的,即 V 1 ∩ V 2 = ∅ V_1 \cap V_2 = \emptyset V1V2=
  2. V 1 V_1 V1 V 2 V_2 V2 的并集是整个顶点集合,即 V 1 ∪ V 2 = V V_1 \cup V_2 = V V1V2=V
  3. 图中的每条边 e ∈ E e \in E eE 都连接了一个 V 1 V_1 V1 中的顶点和一个 V 2 V_2 V2 中的顶点。

完全二部图 Complete Bipartite Graphs:

完全二部图指一个图的顶点可以被分成两个不相交的集合,并且其中一个集合中的每个顶点都与另一个集合中的每个顶点通过边相连。

  • K r , s K_{r,s} Kr,s 表示有 r r r 个黑色顶点和 s s s 个白色顶点的完全二部图。(黑色与白色仅表示属于不同集合)

  • K r , s K_{r,s} Kr,s r + s r + s r+s 个顶点和 r ∗ s r*s rs 条边。

在这里插入图片描述

立方体图 Cubes

k k k 维立方体图 Q k Q_k Qk(也称超立方体图 Hypercube Graph) 是这样一个图:

  • 用长度为 k k k 的二进制序列表示顶点,每个顶点可以有 k k k 个二进制位,每位可以是 0 或 1;
    • Q k Q_k Qk 2 k 2^k 2k 个顶点,因为长度为 k k k 的二进制序列共有 2 k 2^k 2k 种表示。
  • 如果两个顶点的二进制表示仅有 一位 不同,则两顶点之间存在一条边。
    • 每个顶点的度数为 k k k,即 k k k 维立方体图是 k k k 度正则图,因为每个顶点都存在 k 个仅一位不同的顶点相连。
    • Q k Q_k Qk k ∗ 2 k − 1 k*2^{k - 1} k2k1 条边
      • 共有 2 k 2^k 2k 个顶点,每个顶点连接 k k k 条边, k ∗ 2 k k*2^k k2k 计算出所有顶点的度数,总度数 = 边数 * 2,故边数 = k ∗ 2 k / 2 k*2^k/2 k2k/2

在这里插入图片描述

简单图的补图 complement of a simple graph

如果 G G G 是一个具有顶点集 V ( G ) V(G) V(G) 的简单图,那么它的补图 G ‾ \overline{G} G 是具有相同顶点集 V ( G ) V(G) V(G) 的简单图,在补图中两个顶点相邻当且仅当它们在 G G G 中不相邻。

  • 完全图的补图是零图
    • 因为完全图中所有顶点都相互相邻,那么其补图中所有顶点都不相邻,符合零图的定义
  • 完全二部图的补图是两个完全图的并集
    • 由于完全二部图中不同部分顶点间的相邻关系在补图中发生反转,从而形成两个分别内部顶点全相邻的部分,即两个完全图的并集。

在这里插入图片描述

三个谜题 Three Puzzles

在本节介绍三个娱乐性谜题,这些谜题可以使用与图相关的概念来解决。在每个谜题中,注意使用图是如何使问题更容易理解的。

八个圆圈问题 The eight circles problem

问题:将字母 A、B、C、D、E、F、G、H 放入图 4.1 的八个圆圈中,使得没有一个字母与在字母表中紧挨着它的字母相邻。

在这里插入图片描述

在这里插入图片描述

六人聚会 Six people at a party

证明:在任何六个人的聚会上,要么有三个人彼此都认识,要么有三个人互相不认识。

在图中,用顶点表示每个人,实线边表示两个人互相认识,虚线边表示不认识证明:总是存在一个实线三角形或者一个虚线三角形

  • 实线三角形:有三个人彼此都认识
  • 虚线三角形:有三个人互相不认识

v v v 是任意一个顶点,必然有 5 条边和该顶点关联,这 5 条边可能是实线或虚线,根据 “抽屉” 原理,至少有 3 条边属于同一种类型

于是假设顶点 v v v 有 3 条实线边,2 条虚线边,即假设顶点 v v v 和顶点 w 、 y 、 z w、y、z wyz 认识,那么 w 、 x 、 y w、x、y wxy 三者的关系有两种可能:

w 、 x 、 y w、x、y wxy 两两互相不认识,即三者之间都是虚线边,存在虚线三角形

w 、 x 、 y w、x、y wxy至少有一对互相认识,即要么有 w 、 x w、x wx 认识,要么有 w 、 y w、y wy 认识,要么有 x 、 y x、y xy​ 认识,只要有一对认识,必存在实线三角形。

综上两种情况,可以得证:总是存在一个实线三角形或虚线三角形。

在这里插入图片描述

四色立方体问题 The four cubes problem

**问题:**给定四个立方体,每个立方体的每个面涂上红(R)、蓝(B)、绿(G)、黄(Y)四种颜色之一,将四个立方体堆叠成一个4x1的柱体,如何堆才能使从该柱体的任意一个侧面观察,都能看到红、蓝、绿、黄四种颜色?

我们需要用图来记录每个立方体的颜色相对关系:

  • 一个立方体表示成一个图,图中存在四个顶点 R 、 B 、 G 、 Y R、B、G、Y RBGY 分别表示红色、蓝色、绿色、黄色;当两个颜色所在的面相对时,这两个颜色顶点被认为是相邻的,即这两个顶点之间存在一条边。如图 4.8 所示。

  • 把这四个图合并成一个新的图 G G G,如图 4.9 所示。即合并顶点,边取并集;合并后的图每条边的序号代表不同的立方体。

在这里插入图片描述

  • 通过找到图 G G G两个子图 H 1 H_1 H1 H 2 H_2 H2 可得到该谜题的一个解。子图 H 1 H_1 H1 告诉我们每个立方体的前面和后面出现的是哪一对颜色,子图 H 2 H_2 H2 告诉我们每个立方体的左面和右面出现的是哪一对颜色。为此,子图 H 1 H_1 H1 H 2 H_2 H2 具有以下属性:

    • 每个子图恰好包含来自每个立方体的一条边

      • 这确保了每个立方体都能确定其前、后面的颜色对和左、右面的颜色对,即保证没有遗漏掉正方体。
      • 如果某个立方体在子图中没有边,那就无法确定该立方体的颜色情况。
    • 这些子图没有共同的边

      • 确保同一个颜色对不能同时出现在 “前后” 面和 “左右” 面上。
      • 因为假如有一个立方体 c u b e 1 cube_1 cube1 前后面“ 红-蓝 ” 配对,意味着其他立方体中至少有一个立方体 c u b e 2 cube_2 cube2 的前后面“ 黄-绿 ” 配对才能在前后面中保证出现不同的颜色,那么该立方体 c u b e 2 cube_2 cube2 的左右面一定是 “ 红-蓝 ” 配对,如果此时 c u b e 1 cube_1 cube1 在左右面上重复出现了 “ 红-蓝 ” 配对,那么很可能会导致左右面上出现重复的 “红、蓝” 颜色
    • 每个子图都是 2 度正则图

      • 保证每种颜色在前后面和左右面各分别出现一次,即保证每一个侧面都要有四种颜色。
  • 通过这两个子图即可知道每个立方体的前、后、左、右面该如何摆放;如果找不到满足上述性质的子图,说明无解。

在这里插入图片描述


http://www.ppmy.cn/devtools/132377.html

相关文章

SpringBoot整合Freemarker(二)

if分支 语法&#xff1a; <#if condition>... <#elseif condition2>... <#elseif condition3>... <#else>... </#if> 例子&#xff1a; <#if x 1>x is 1 </#if> --------------------------------- <#if x 1>x is 1 <…

大数据-205 数据挖掘 机器学习理论 - 线性回归 最小二乘法 多元线性

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

jmeter里判断返回参数是否为空

用jmeter做接口自动化&#xff0c;怎么判断返回的参数是否为空 我们假如返回的参数是数组&#xff0c;有以下3个方向来判断 1、断言返回的字段为大于0的正整数 [1-9][0-9]* 2、返回data的数组长度 data_marchNr 表示数组长度 String datavars.get(“data_matchNr”); int tota…

领略CSS Flex布局的精髓:打造响应式与创新设计

引言 Flexbox 或弹性盒子布局&#xff0c;是 CSS 中的一项革命性特性&#xff0c;旨在简化复杂的多列布局和响应式设计过程。相比传统的 float 和 positioning 方法&#xff0c;Flexbox 提供更直观且强大的布局控制能力&#xff0c;尤其适用于现代网站的复杂结构。本文将深入解…

【go从零单排】go中的结构体struct和method

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 概念 struct 在Go语言中&#xff0c;结构体&#xff08;struct&#xff09;是一种用户定义的数据类型&#xff0c…

汇聚全球前沿科技产品,北京智能科技产业展览会·世亚智博会

在北京这座古老而又充满现代气息的城市中&#xff0c;一场科技与创新的盛宴正悄然上演——北京智能科技产业展览会&#xff08;简称&#xff1a;世亚智博会&#xff09;&#xff0c;作为全球前沿科技的汇聚地&#xff0c;不仅展示了人工智能、5G通信、虚拟现实等尖端技术的最新…

【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!

数据集介绍 【数据集】道路事故识别数据集 8939 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。数据集中包含2种分类&#xff1a;{0: accident, 1: non-accident}。数据集来自国内外图片网站和视频截图。检测范围道路事故检测、监控视角检测、无人机视角检测、等&…

解析Go切片:为何按值传递时会发生改变?|得物技术

一、前言 在Go语言中&#xff0c;切片是一个非常常用的数据结构&#xff0c;很多开发者在编写代码时都会频繁使用它。尽管切片很方便&#xff0c;但有一个问题常常让人感到困惑&#xff1a;当我们把切片作为参数传递给函数时&#xff0c;为什么有时候切片的内容会发生变化&…