zoukankan      html  css  js  c++  java
  • 离散数学知识点总结(8)-图论

    一、图的基本概念

    无向图可以用二元组G=<V , E>表示,其中E是无序积V&V的有穷多重子集。

    无向图中,所有顶点度数之和∑deg(v)=2|E|,即奇数度的顶点数必是偶数。(自环在计度数时为2

    简单图:不存在自环、重边的无向图。由于每条边可用顶点对唯一表示,可用{vi, vj}代表e

    有向图中,入度之和∑deg+(v)=出度之和∑deg-(v)=|E|

    一些特殊的图

    n阶零图/离散图Nnn个顶点都是孤立顶点1阶零图N1称作平凡图。

    k-正则图:所有顶点度数均为k

    n阶完全图kn:任意互异顶点均相邻,是(n-1)-正则图

    n阶竞赛图:基图是n阶完全图的有向图。必然包含哈密顿道路(可由归纳法证明)。

                      竞赛图可以看作循环赛的比赛结果,但此时通过找哈密尔顿道路确定排名的方法不太公平。

                      可以先求每个选手与对应对手的得分分量s1=(a1,b1,c1,……),其中a1A选手战胜的对手数量

                      然后逐次求第k次的得分分量sk,每个选手在第k级得分是其所战胜的对手在sk-1中的前k-1级得分总和的和

                      若竞赛题为强连通图,且至少4个参数选手,最后排名一定收敛于固定的序列

    圈图Cn:E={{u , v} | 1≤u , v≤n , u-v1(mod n)}

    n-立方体图:顶点集V是由所有长度为n的二进制串组成,两个顶点标号序列仅一位数字不同时就相互连接。n≥3时称为n维超立方体图

    二部图/二分图:简单图G的顶点集合可以划分为{V1, V2}使每一条边的两端都分属V1和V2

    完全二部图/完全二分图Kr,sV1每个顶点都和V2中每个顶点相连,r=|V1|,s=|V2|

    子图与补图

    生成子图/支撑子图V2中包含了图G中所有顶点

    导出子图:E2包含了图G中V2之间的所有边

    删点子图G-v:属于导出子图

    删边子图G-e:属于支撑子图

    补图:n阶简单图G的补图就是kn去除G的边集。若补图与G同构,则称其为自补图

    道路

    简单道路/简单回路:该路径上没有重复的边,顶点可以重复。

    初级道路/初级回路):道路中除了起点和终点,其它顶点只出现一次。即既不能有重复的边又不能有重复的顶点。

    简单图中任一顶点都有deg(v)>1时,必然存在初级回路

    证明:取图中最长初级道路V0~Vk,则V0必然不会与不在道路上的顶点相交(否则存在更长的初级道路)。但由于deg(V0)>1,V0必然会与道路上的顶点相交形成初级回路

    连通性

    连通分支:无向图G在可达性关系下的等价类{V1V2, ... , Vk},G关于它的每个导出子图都是一个连通分支

    点割集V'V'V使得p(G-V')>p(G),且对任意V''V'都有p(G-V'')=p(G)。当V'={v}时称v为割点

    边割集E'E'E使得p(G-E')>p(G),且对任意E''E'都有p(G-E'')=p(G)。当E'={e}时称e为割边

    连通图:只有一个连通分支的无向图,其割边又叫桥

    弱连通图:基图是连通图的有向图

    强连通图:有向图中,任意两个顶点u和v,u到v和v到u都是可达的。(两个至少之一可达就是单连通图,也属于连通图)

    二、欧拉道路与欧拉图

    欧拉道路/回路:通过图G中每条边一次且仅一次的道路/回路。存在欧拉回路的图称为欧拉图,存在欧拉道路且不存在欧拉回路的图称为欧拉半图。

    半欧拉图:无向图连通的且奇数度顶点恰有两个

    有向图单向连通且奇数度顶点恰有两个(一个入度比出度大1一个出度比入度大1),其它顶点出度入度相同。

    欧拉图:无向图连通且所有顶点都是偶数度

        有向图强连通且每个顶点出入度相同

    无向图为欧拉图条件的充要性证明

    必然性:显然成立

    充分性:从任意顶点出发,作出图G中的简单回路C

        从图G删除C中所有边,再删除因此出现的孤立顶点,得到G'。由于所有顶点都是偶数度,删除后仍然是偶数度

        因为是连通图,删除后得到的新图G'和原图G必然存在共有顶点v

        从v出发在G'中作出新回路C',与C相连,得到更长的简单回路

        不断重复该构造过程,直到得到欧拉回路

    即欧拉图⟺图中所有边包含在相互没有公共边的简单回路中

    Fluery算法:

    1)选择图中一个奇数度顶点v,如果不存在就任选一个

    2)如果v关联的边多于一条,选择其中不是桥的任意一条走

    3)删除经过的边,再删除因此出现的孤立顶点

    4)重复直到得到欧拉道路或欧拉回路

    中国邮递员问题:带权无向图求每个边最少经过一次的最短回路。有欧拉回路时显然就是欧拉回路,没有时需要把所有奇数度顶点分成若干对,重复某些道路。

    三、哈密顿道路与哈密顿图

    哈密尔顿道路/回路:通过图G中每个顶点一次且仅一次的道路/回路,存在哈密尔顿回路的图称为哈密尔顿图(例如kn都是哈密顿图)

        存在哈密尔顿道路且不存在哈密顿回路的图称为半哈密尔顿图   

    图G中是否存在自环和重边不影响哈密尔顿道路/回路的存在性,因此只需考虑简单图的情况 

    哈密顿图实际是NPC问题,充要条件未找到

    如果G中任一对顶点u和v,都满足deg(u)+deg(v)≥n-1⟹ G中存在哈密尔顿道路⟹ G中不存在悬挂边

    如果G中任意两个顶点u和v,都满足deg(u)+deg(v)≥n⟹ G是哈密尔顿图⟹ G中不存在孤立顶点 

    哈密顿图任意非空V1V,均有p(G-V1)≤|V1|(设C为任一哈密顿回路,V1中的顶点在C中互不相邻时p(G-V1)有最大值|V1|)

    如果m≥(n2-3n+6)/2⟹ G是哈密尔顿图

    证明:不妨用反证法,假设m≥(n2-3n+6)/2但图G中存在顶点u和v,满足deg(u)+deg(v)<n

              删除这两个顶点和相应边,构成n-2阶简单图G'

     m'>m-(deg(u)+deg(v))>(n2-3n+6)/2-n=(n-2)(n-3)/2,与G'是简单图m'≤(n-2)(n-3)/2矛盾

     故图中任意两个顶点均有deg(u)+deg(v)>n,G一定是哈密顿图

    旅行商问题/货郎担问题:n阶完全带权图(权为∞时代表无交通)求最短哈密尔顿回路,足有(n-1)!/2条哈密尔顿回路,是NPC问题,至今无有效算法

    可以采用最邻近算法近似:选择任一顶点作为开始点,选择最近的点,形成初始路径。随后不断选择不在路径中的距离最近的点加入到路径中。

    例题:有七名科学家参加一个会议,已知A只会讲英语,B会讲英语和中文,C可以讲英语、意大利语和俄语,D会日语和中文,E会德语和意大利语,F会讲法语、日语和俄语,G可以讲德语和法语。可否安排他们在一个圆桌围坐,使得相邻的科学家都可以使用相同的语言交流 

    A:英语 

    B:英语和中文 

    C:英语、意大利语和俄语 

    D:日语和中文 

    E:德语和意大利语 

    F:法语、日语和俄语 

    G:德语和法语 

    例题:假设在 n(n≥4)个人中,任意两人合在一起能认识其余的n-2个人,则他们可以围成一圈,使相邻者相识。 

    证明:deg(u)+deg(v)n-2+1+1=n

     

    例题:有6门考试ABCDEF必须安排在连续6天,假设每人选修课的情况有DCA、BCF、EB、AB,应如何安排考试使得没有人连续两天考试

    思路:作出6阶完全图,去掉DCA间的边、BCF间的边、EB间的边、AB间的边,然后从图中找出一条哈密尔顿道路。 

    、平面图

    平面图:所有面的次数之和是边数的两倍;桥只能是一个面的边界,在计算次数时算两条边

    极大平面图、极小非平面图

    n-m+面数f=连通分支数l+1

    首先用数学归纳法证明l=1时成立

    m=0时n=1、f=1,n-m+f=2成立

    假设m=k时n-m+f=2成立

    m=k+1时,若图中存在悬挂边,则删除后n减1、m减1、f不变,n-m+f的值不变

                       若不存在,则每个顶点的度数均大于,图中存在初级回路,回路上任意边都是两个面的边界,删去后m减1、f减1,n-m+f的值不变

    当l≠1时,n1-m1+f1=n2-m2+f2=...=nl-ml+fl=2

           (n1+n2+...nl)-(m1+m2+...ml)+(f1+f2+...fl)=n-m+f+(l-1)=2l

          n-m+f=l+1

    若每个数最少为t,则tf≤2m,代入上式得m≤(n-2)·t/(t-2)

    t必定至少为3,因此m≤3n-6;当t至少为4时,则m≤2n-4

    平面图至少存在一个度数不超过5的顶点 

    证明:若全部顶点的度数均大于5,6n2m与m≤3n-6矛盾

    库拉托夫斯基定理:一个无向图是平面图它不包含与K5K3,3的细分同构的子图(K5和K3,3都是非平面图) 

    对偶图

    在图 G 中的每个面(包含外部面)内画一顶点 ,在这些新的顶点之间添加边,每条新的边恰与G中的每一条边相交一次 

    n*-m*+f*=f-m+n=2

    得到的图G的对偶图图G*也是平面图,必定连通

    、顶点支配、独立、覆盖

    点支配集

    对于任意 v∈V-D,都存在u∈D,使得uv∈E

    极小支配集:D的任何真子集都不是支配集

    支配数γ(G):最小支配集的元素数

    点独立集

    对于任意u , v∈S,都有uv不相邻

    极大独立集:S不是其它任何独立集的子集。此时任意u∈V-S,都有v∈S使得u与v相邻

    独立数α(G):最大独立集的元素数,α(G)|任一极大独立集|=|对应极小支配集|≥γ(G)

    所有独立集中,只有极大独立集也是支配集,而且它是极小支配集

    点覆盖集

    对于任意e∈E,都有v∈V*,使得v是E的一个端点

    极小点覆盖:V*的任何真子集都不是点覆盖。此时不存在所有相邻顶点都属于V*的顶点

    点覆盖数β(G):最小点覆盖的元素数,β(G)≥γ(G)

    V*是点覆盖集当且仅当V-V*是独立集

    证明:若V*是点覆盖集但V-V*不是独立集,则存在顶点u, v∈V-V*使得uv相邻,这与V*是点覆盖集矛盾

      若V-V*是独立集但V*不是点覆盖集,则存在uv∈E使得u, v∈V-V*,这与V-V*是独立集矛盾

    V*是极小点覆盖集当且仅当V-V*是极大独立集。 

    V*V是最小点覆盖集当且仅当 V-V*是最大独立集,α(G)+β(G)=|V|

    总结

    极小支配集最小支配集、极大独立集、最大独立集、极小点覆盖、最小点覆盖都未必唯一

    完全图Kn的支配数为1、独立数为1、点覆盖为n-1

    完全二部图Km,n的支配数为min(m, n)、独立数为max(m, n)、点覆盖数为min(m, n)

    图的着色

    利用对偶图的概念,可以把平面图G的面着色问题转化为研究对偶图 G* 的点着色问题 

    利用线图的概念,可以把平面图G的边着色问题转化为研究线图的点着色问题 

    点着色数χ(G)就是将顶点集V关于独立集作划分时,划分块为最少时的数目,它的确定是一个NPC问题

    χ(Kn)=n,χ(Km,n)=2

    χ(Cn)=2(n为偶数)或3(n为奇数)

    Welch-Powell算法

    该方法得到的不一定是最优方法:

    1)将图中顶点按度数不增的方式排成一个序列 

    2)使用一种新颜色对序列中的第一个顶点进行着色,并且按照序列次序,对与已着色顶点不邻接的每一顶点着同样的颜色,直至序列末尾。然后从序列中去掉已着色的顶点得到一个新的序列 

    3)对新序列重复步骤2直至得到空序列 

  • 相关阅读:
    Linux 性能优化--理解 CPU 使用率和平均负载
    sqlalchemy ORM
    redis缓存数据库
    基于CentOS安装FTP服务器
    python3之platform模块
    paramiko模块
    shelve模块
    Vue入门---属性、style和class绑定方法
    Vue入门---事件与方法详解
    Vue入门---常用指令详解
  • 原文地址:https://www.cnblogs.com/yangyuliufeng/p/10684210.html
Copyright © 2011-2022 走看看