数据结构之图

数据结构之图

图的常见分类方法

图的术语和几种特殊的图

基本术语及定理

若u和v是无向图G中的一条边e的端点,则称两个顶点u和v在G里邻接(或者相邻)。这样的边e称为关联顶点u和v,也可以说边e连接u和v;

无向图G=(V,E)中,顶点v的所有邻接顶点的集合,记做N(v),也被称为v的邻居;如果A是V的子集,我们称N(A)为图G中至少和A中一个顶点相邻的所有顶点的集合;

在无向图中顶点的是与该顶点相关联的边的数目,例外的情况是顶点上的环为顶点的度做出双倍贡献,顶点v的度表示为deg(v);

度为0的点称为孤立的,把度为1的顶点称为悬挂的

握手定理:设G=(V,E)为有m条边的无向图,则2*m=V中所有顶点的度之和;

由握手定理可以得到,一个图的所有顶点度之和为偶数;并且度为奇数的顶点个数一定为偶数;

当e=(u,v)是有有向边的图G的边时,我们说u邻接到v或者说v从u邻接;u称为e的起点,v称为e的终点;环有着相同的起点和终点;

在带有有向边的图里,顶点v的入度,记做deg-(v)是以v作为终点的边数;顶点v的出度,记做deg+(v)是以v为起点的边数;顶点上的环,对该顶点的出度和入度的贡献都是1;

因为每一条边都关联一个起点和一个终点,所以:设G=(V,E)是带有向边的图,于是所有顶点的出度之和=所有顶点的入度之和=边数

在有向图中,如果忽略边的方向,我们把得到的无向图称为基本无向图,带有向边的图与它的基本无向图有着相同的边数;

特殊的图

完全图

n个顶点的完全图记做Kn,是指每对不同顶点之间都恰好只有一条边;

圈图

n个顶点的圈图记做Cn,顶点之间以此建立边的关系,比如三角形、正方形、正五边形等;

轮图

向圈图Cn添加一个顶点,并把这个新顶点与Cn中每一个顶点向连接,就得到轮图,记做Wn;

n立方体图

n个顶点的立方图记做Qn;使用顶点表示2^n个长度为n的位串的图。两个顶点相邻,当且仅当所表示的位串恰好只有一位不同;值得注意的是,我们可以通过Q(n-1)来构造Qn,方法是首先复制一个Q(n-1)然后,在Qn-1的复制的每个顶点所代表的位串前加1,然后在Qn-1的每个顶点所代表的位串前加0,然后将相对应的顶点连接起来就得到了Qn;

二分图

如果把简单图G的顶点分成两个不相交的非空集合V1和V2,使得每一条边都连接一个V1中的一个的顶点与V2中的一个顶点,因此G中没有一条边关联两个V1或者V2中的点。当此条件成立时,我们说G是一个二分图;

一个简单图是二分图,当且仅当能够对图中的每个顶点赋予两种不同的颜色,并使得没有任何两个相邻的顶点被赋予相同的颜色;

完全二分图

完全二分图K(m,n)是顶点集分别划分成m个和n个顶点的两个子集的图,并且两个顶点之间有边,当且仅当一个顶点属于第一个子集而另一个顶点属于第二个子集;

二分图和匹配

我们知道,图中的边表示两个顶点存在某种关系,而二分图中的边因为其“二分”的特性,可以表示一种分配关系,比如员工-工作、孩子-礼物等关系;我们把这类关系的建立视为在图中寻找一种匹配,而对于简单图G=(V,E)中的一个匹配M就是图中边集E的一种子集,该子集中没有两条边关联相同的两个顶点;如果顶点v是匹配M中一条边的端点,那么称该点在M中被匹配,否则称为未被匹配;在所有匹配中,边数最多的一个匹配称为最大匹配

在二分图G=(V,E)中的一个匹配,其划分为(V1,V2),如果V1中的每个顶点都是匹配中边的端点,则称匹配M是从V1到V2的完全匹配

完全匹配的充分必要条件

对于二分图G=(V,E)的一个二部划分(V1,V2),存在一个从V1到V2的完全匹配,当且仅当对于V1的所有子集A有|N(A)|>=|A|;

证明必要性并不是很难,而其充分性的证明使用了数学归纳法~这里省去;

构造新图

图G=(V,E)的子图是H=(W,F),其中W属于V且F属于E,如果H!=G,那么G的子图H则被称为是G的真子图

图G=(V,E)是一个简单图,图(W,F)是由顶点集V的子集导出的子图,其中边集F包含E中的一条边当且仅当这条边的两个端点都在W中;

我们可以通过删除或者增加一条边来形成一个新的图;有时,我们从图中删除一条边后,我们不希望该边所关联的顶点作为独立的顶点存在于所得到的子图中,此时,我们把端点为u和v的边e删除,而把u和v合并成一个新的点w,然后将所有与u和v相关联的边都改为和w相关联,此时得到一个新的图(该图不一定是原图的子图哦),我们把这一过程称为边的收缩

当然我们也可以从图G=(V,E)中删去一个顶点v并将所有与v相关联的边都删去,此时也可得到新的图;

两个简单图G1=(V1,E1)和G2=(V2,E2)的并图是G=(V,E),其中V=V1并V2,E=E1并E2;

图的表示和同构

图的表示有很多种方法,选择合适的表示有助于对图的处理;有些图有着完全相同的形式,从某种意义上来说就是两个图的顶点存在一一对应的关系,同时保持着边的对应关系;此时我们说两个图是同构的。判断两个图是否是同构的,也很重要;

图的表示

邻接表

表示不带多重边的图的一种方式是列出这个图的所有边,另外可以列出图中每个顶点与其他顶点的相邻情况,这种表示方法叫做邻接表

邻接矩阵

如果图中存在很多边,那么使用领接表时就不便于执行图算法,此时可以使用矩阵来表示图,这种表示方法称为邻接矩阵

邻接表和邻接矩阵的选择往往和图的边数有关系,当一个图有较少的边时,我们使用邻接表表示图可以节省空间;当一个图有很多边时,我们使用邻接矩阵表示图可以提供算法效率;

关联矩阵

设G=(V,E)是无向图,设v1,v2,·····Vn是G的顶点,而e1,e2,···,en 是G的边,所谓关联矩阵是指记录顶点v和所有边之间的关系:当e和v相关联时,对应的值为1,否则为0;如果使用关联矩阵表示环,那么可以认为某条边仅与一个顶点相关联;至于多重边则比较容易表示了;

图的同构

判断两个图是同构的比较难,但是判断两个图不是同构的则相对容易。图有很多属性,比如边数、顶点数以及顶点的度数(出度和入度)等,在图的同构过程中,保持不变的属性称为图形不变量

在判断两个图是否同构时,我们一般先看是否边数、顶点数一致,然后需要关注一些度数很特别的点,比如悬挂点,甚至孤立点等信息;

判断图是否同构是一个很有趣的问题,现在已知名为NAUTY的算法是用于测试图同构的最佳使用算法;

图的连通性

无向图的连通性

非形式化地说,通路是边的序列,它从图的一个顶点开始沿着图中的边行径图中相邻的顶点,因为通路行经了边,所以沿着通路可以访问顶点;

设n为非负整数且G是无向图,在G中从u到v的长度为n的通路是G的n条边e1,e2,e3,e4的序列;其中ei以xi,x(i+1)为端点,其中x1=u,x(n+1)=v;当图为简单图时,就是用顶点序列表示这条通路;如果u=v并且程度大于0,则表示这是一条回路;如果通路或者回路不包含相同的边,则它是简单的

若无向图中的每一对不同的顶点之间都有通路,则称此图为连通的,不连通的无向图称为不连通的

连通无向图中每一对不同顶点之间都存在简单通路;

图G的连通分支是G的连通子图,且该子图不是图G的另一个连通子图的真子图;也就是说,G的连通分支是G的一个极大连通子图

有时候,删除图中的一个顶点和其相关联的边,就会产生比原图更多的连通分支的子图,把这样的点称为割点或者关节点;也就说,将割点从图中删除,那么就会产生不连通的子图;与割点对应的概念是割边,如果删除某条边,就得到比原图更多连通的子图,这条边就是割边或者桥;需要注意的是,在类似计算机网络的图中,割点和割边成为了最重要的关系,它们不能失去联系,否则网络就会失去互联;

并不是所有的图都含有割点,比如含n个顶点的完全图,去掉一个顶点及其相关联的边时,我们得到了含n-1个顶点的完全图;不含有割点的连通图,称为不可分割图;若G-V’是不连通的,则称G=(V,E)的顶点集V的子集V‘是点割集

除完全图外,每一个连通图都有一个点割集,我们定义非完全图的点连通度为点割集中最小的顶点数,记做K(G);

K(G)越大,我们称图的连通性越好;不连通的图和K1具有K(G)=0;若K(G)>=k,则称该图是k连通的;

对应的,我们可以得到边连通度的概念:将连通图G(V,E)变成不连通的所需要的删除的最小边数来度量连通图G的连通性;边割集的最小值为边连通度;G的边连通度记为Y(G);

当G=(V,E)是一个至少含有3个顶点的非完全连通图时,G中顶点的最小度是图G的点连通度和边连通度的上界;如果G是一个连通的非完全图,则G的点连通度小于等于其边连通度;如果n为正整数,则K(Kn)=Y(Kn)=min deg(V)=n-1;如果G是不连通的图,则K(G)=Y(G)=0;

有向图的连通性

如果对于有向图中的任意顶点a和b,都有从a到b和从b到a的通路,则该图是强连通的;

如果在图的基本无向图中,任何两个顶点之间有通路,则称该有向图是弱连通的;

有向图的强连通分支是指有向图G是强连通的,但是不包含在更大的强连通子图中,即极大强连通子图称为G的强连通分支或者强分支;

通路与同构

前面提到有多种方式可以利用通路和回路来判定两个图是否同构;而简单图的一个有用同构不变量是长度为k的简单回路的存在性,其中k是大于2的整数;

顶点之间的通路数

设G是一个图,该图的邻接矩阵A相对于图中的顶点顺序v1,v2···vn,带有无向边或者有向边。从vi到vj长度为r的不同通路的数目等于A^r的第(i,j)项;

欧拉通路和哈密顿通路

欧拉通路和欧拉回路

图G中的欧拉回路是包含G的每一条边的简单回路;图G中的欧拉通路是指包含G中每一条边的简单通路;

欧拉回路和欧拉通路存在的充要条件

含有至少两个顶点的连通多重图含有欧拉回路,当且仅当每一个顶点的度为偶数;

连通多重图具有欧拉通路但是没有欧拉回路当且仅当它恰有两个度为奇数的顶点;

哈密顿通路与哈密顿回路

经过图G中的每一个顶点恰好一次的简单通路称为哈密顿通路;经过图G中每一个顶点恰好一次的简单回路称为哈密顿回路;

哈密顿回路存在的条件

没有已知简单的充要条件来判断哈密顿回路的存在性,但是许多定理给出了哈密顿回路的存在性的充分条件。带有度为1的顶点的图没有哈密顿回路;如果图中有度为2的顶点,则关联这个顶点的两条边属于一条哈密顿回路;一个图的边越多,就越有可能有哈密顿图;

如果G是有n个顶点的简单图,当n大于等于3,并且每个顶点度都至少为n/2,则存在哈密顿回路;——狄拉克定理;

如果G是有n个顶点的简单图,其中n大于等于3,并且对于G中每一对不相邻的顶点u和v来说,都有deg(u)+deg(v)大于等于n,则G有哈密顿回路;

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值