zoukankan      html  css  js  c++  java
  • 图论学习笔记

    目录

    图的概念

    简史

    欧拉与戈尼斯堡七桥问题

    等价问题:“欧拉一笔画”(equiv)与任一个顶点相关联的边必须是偶数条。

    图的基本概念

    无向图

    邻接与关联

    邻接与关联:

    ((p,q))

    另一种表示方法:(p,q)图

    图相等与特殊的图

    图相等、特殊的图(平凡图、零图)

    有向图

    疑惑:无向图是集合反自反、对称的关系。有向图中为保证反自反性,去掉了自身到自身的有向线段({(v,v)|v in V})。但是,图是不允许存在自身到自身的边吗?

    答案:是的。

    图的表示

    图解法与邻接矩阵法

    图解法与邻接矩阵法:

    问题:关系的闭包在图中的意义是什么?

    图模型

    利用图建模现实问题,并用图的理论加以解决的能力。

    例子:结婚问题、地图与导航

    子图

    子图概念

    生成子图

    特例:生成子图

    记号:去除顶点u,去除边{u,v}

    尤其地,注意去除边的记号不是去除u、v两个顶点。

    导出子图

    (1)顶点导出子图:若V1⊆V(G),则以V1为顶点集,以两个顶点均在V1中的边集组成的图,称为图G的顶点导出子图,记为G(V1)。

    例如:求G(V1),V1 ={1,3,5}

    则G(V1)为

    (2)边的导出子图​:若E1⊆E(G),则以E1为边集,以E1中所有边的顶点为顶点集组成的图,称为图G的边的导出子图,记为G(E1)。​

    例如:求G(E1),E1 = {13,24,35}

    则G(E1)为​

    度的概念

    定理1——握手定理

    【定理1】握手定理

    证明:每一条边对度数总和的贡献为2(每一条边对应两个顶点),由于共有q个边,故度数总和为2q。

    推论1:握过奇数次数手的人为偶数个。
    证明:将人分为两类,握奇数次手(V_1)和握偶数次手(V_2)
    那么,(V_1)(V_2)中顶点的度数总和为偶数(2q),
    同时,(V_2)的度数之和必然为偶数,
    那么,(V_1)的度数之和必然为偶数(偶数-偶数=偶数),
    同时,由于(V_1)中均是握奇数次手((V_1)中各顶点度均为奇数),
    那么,(V_1)中顶点数必为偶数个(偶数个奇数之和=偶数)。

    最小度数与最大度数

    图G的最小度数和最大度数:

    正则图

    2-正则图

    3-正则图

    完全图

    完全图(K_p):(p-1)正则图
    完全图是一个简单的无向图,其中每对不同的顶点之间都恰连有一条边相连

    双图中的完全图:(K_{m,n})


    图建模:

    用反证法证明:
    假设任意两个顶点,其度数均不相同。那么,n个顶点必然有n种度数,即:

    (degv_i=0)代表没有顶点与之邻接,而(degv_j=n-1)代表与其他所有顶点邻接。
    这显然是矛盾的,因此,原结论得证。
    注意:证明过程中是使用的度的定义,而不是抽屉原理。

    同构


    图里是双图中的3-正则图,是完全一样的两个图。

    同构的概念

    两个图结构一样,但是顶点名字不一样了。(顶点集合上的置换)

    那么,什么条件下可以称两个图是同构呢?

    注意:双射是指既是单射又是满射的映射称为双射,亦称“一一映射”。

    同构的应用

    例如,判断基因是否相似。

    乌拉姆猜想


    注意:乌拉姆猜想并未被证明。

    路、圈、连通

    连通是图论里最重要的概念。

    通道

    通道的长为边的个数。

    闭通道:(v_0=v_n)时,称(v_0v_n)通道为闭通道。

    迹与闭迹的概念:

    路和圈

    路、闭路(圈)的概念:

    与集合论的联系:
    u、v之间有直通的路(Leftrightarrow)u、v关系矩阵相关元素为1
    u、v之间有不知长度的路(Leftrightarrow)u、v传递闭包矩阵相关元素为1

    判断一个图有没有圈:


    证明方法:
    最长路法,图论中常用的证明方法(因为图是有穷系统上的二元关系,因此必然存在最长路)。

    推论:

    有意思的题目:安排大量朋友吃饭,其中每个人的朋友数(互相)大于等于m,那么,每桌安排m+1个人最合适。
    因为这种安排可使每位吃饭的人左右均是朋友。

    放宽条件的定理:

    路和圈的另一个定理:

    【定理】假设(G=(V,E))(u,vin V),如果u、v之间有两条路,那么图G中有圈。

    【证明】

    注意:

    为什么(p_1+p_2-u'v')连通就代表(p_1)(p_2)是不同的路呢?

    连通

    连通的定义:

    判定方法:

    1. 充分条件


      充分条件是一个很强的结论,也就意味着其条件近乎苛刻。我们更希望得到充要条件。
      充要条件是很好的结论,其“要”字表明,不满足其条件的话,则一定不成立。

      证明方法:

      推导过程:

      直观的说,这个不连通的图可以说为是分块的(划分/等价)。

      那么,依据什么关系进行划分呢?

      验证上述关系是不是自反、对称、传递的。
      自反:自己和自己之间有路;
      对称:u和v之间有路,则v和u之间有路;
      传递:u和v之间有路,v和w之间有路,则u和w之间有路。

      对谁进行划分呢?
      那么,很自然的这个等价关系就是对顶点的划分。

      (V/cong)表示的是集合V关于(cong)的商集合,也称之为等价类。

      商集是集合论的基本概念之一,指由集合和该集合上的等价关系导出的集合。设~是非空集合A的一个等价关系,若把以A关于~的全部等价类作为元素组成一个新的集合B,则把集合B叫做A关于~的商集合,简称为商集,记作B=A/~。
       
      例子:
      A={a,b,c,d,e,f}={某大学宿舍的大学生};R是A上的同乡关系(不难证明同乡关系是等价关系),若a,b是北京人,c是广东人,d,e,f南京人,则R={(a,a)(a,b)(b,a)(b,b)(c,c)(d,d)(d,e)(d,f)(e,d)(e,e)(e,f)(f,d)(f,e)(f,f)}.A中各元素关于R的等价类分别是:
      [a]R=[b]R={a,b};
      [c]R={c};
      [d]R=[e]R=[f]R={d,e,f};
      A关于R的商集A/R={[a]R,[c]R,[d]R}={{a,b},{c},{d,e,f}}.

      对这个划分的准确定义是什么呢?

      很明显,连通子图(顶点各等价类的导出子图)不仅包括顶点,还包括相应的边。
      子集属于偏序关系(给定集合的子集的集合(它的幂集)按包含排序),因此采用“极大”而不是“最大”一词(极大表示找不出一个子集具备此性质(连通),且真包含这个集合)。
      这个极大连通子图称之为图的一个支。

      图论常用证明方法:

      1. 演绎推理法。

      2. 反证法。

      3. 数学归纳法。

        常用数学归纳法。当某一个问题与自然数相关时,数学归纳法比较好用。
        由于图论是一个有穷系统上定义的唯一的二元关系,有穷系统一定与自然数关联。
        但是,归纳法是一种无趣的方法。

      此处使用反证法。

      证明过程:

      1. 法1


        有了支的概念,证明变得简单。

      2. 法2


        此处,(mbox{deg} vle p-2-k)的原因是:由于v与u之间不连通,以及v与自身不连通(?),故-2;另外,与u连通的节点均不能与v连通,故再-k。

        副产品:如果(mbox{deg} u+mbox{deg} vge p-1),则u、v之间必然有一条长为2的路(很短)。

      推论:

    补图、双图(二部图)

    补图

    补图的定义:

    注:同构的图的补图也是同构的。

    注意:图和自己的补图有可能是同构的,称之为自同构,或自补。

    引入补图的意义:

    为了方便。在图中讨论不方便的问题,可以考虑在其补图中考虑。


    在图论中,这个问题即为:
    在六个顶点的无向图或者其补图中,一定存在三角形。

    注:在五个顶点的无向图及其补图中得不到这样的结论。

    Ramsey理论:

    双图

    双图的定义:

    双图内的圈都是偶数(包括0)吗?
    这个特征是本质特征吗?(是否充要

    是充要条件。

    【证明1】

    1. 必要性。


      必要性的证明是显然的,在写完之后,立马可得n是偶数。
      因为相邻的顶点分别属于不同的划分,于是下标n与下标2同为偶数。

    2. 充分性。

      构造的方法生成(V_1,V_2)两个划分。

      1. (mbox{if} u,win V_1,uvin E)

        立马可得矛盾。因为(V_1={u|d(u,v)是偶数,forall vin V_1})

      2. (mbox{if} u,win V_2,uvin E)

        亦存在矛盾。
        因为(V_2={u|d(u,v)是奇数,forall vin V_1}),那么

        两条边的长度之和为偶数,加上u,w之间的长度为奇数(1)。

    【证明2】
    用染色法。从某个点开始逐层交叉染色,在染色过程中:

    若发现有某条边的两个端点着色相同,则必定存在奇数环①,与题意相矛盾。

    若没有发现,则根据染色法原理,每一条边的两端着色必然不同,那么根据二分图的定义,就可知这个图是一个二分图。

    ①的证明:

    不妨设这条边的两个端点着色都为1,且这两点必然是由同一个源点扩展而来。那么根据染色法原理,因为这两个点的着色相同,那么从源点到这两个点所经过的边数(假设分别为x和y)的奇偶性必然相同,那么这个环的总边数为x+y+1,由数学知识得这个数必然是奇数。 

    证毕!

    【推论】
    也就是说双图中一定不存在三角形。
    没有三角形并不一定是双图(也即反之不真

    【例】

    问两图是否同构?

    【解】显然,两图并不同构。
    原因在于,上图很明显是双图,而下图中有三角形(圈长度为3)。

    完全双图:
    完全双图(K_{m,n})是具有(mcdot n)条边的双图,其中(|V_1|=m,|V_2|=n)

    没有三角形的图中,完全双图边最多。

    图兰定理

    定理

    证明

    注意:利用数学归纳法证明时,从p=2n-1到p=2n+1的证明过程中所写的(qle q'+2n+1-1),加上的(2n+1=k+2n+1-k)(从2n+1个顶点中去掉顶点u和v之后所减少的边的和),最后减一是因为u、v之间的边被重复的计算了。

    极图理论

    引子

    工兵排雷问题

    欧拉图

    欧拉迹、欧拉闭迹

    欧拉图定义


    迹:没有重复边的通道。
    欧拉迹:没有重复边且边全部包含的迹。(戈尼斯堡七桥问题)

    欧拉图的判定(欧拉定理)

    欧拉定理在伪图上的结论

    伪图

    多重图和带环图(违反了反自反性)统称为伪图。

    欧拉定理在伪图上依然成立

    一笔画问题

    相比于欧拉图(一笔画成且回到原点),不再要求回到原点,一笔画成即可。

    【定理2】

    【证明】
    在两个奇数度顶点上加一条边,使之成为伪图(多重图)。
    由于欧拉定理在伪图上依然成立,因此此图中有欧拉闭迹。
    那么,去掉所加的这条边,自然就存在一欧拉开迹(可一笔画)。

    【定理3】

    也就是说,对于不能一笔画的图,这个定理给出了所需的最少笔数。

    哈密顿图

    背景

    哈密顿在1859年做的“环游世界”装置,正十二面体上的20个顶点,能否找到一个包含所有顶点的圈(生成圈)。

    判断一个图是否为哈密顿图的充要条件是一个NP难问题。

    定义

    【定义1】

    闭合的哈密顿路径称作哈密顿回路(Hamiltonian cycle),含有图中所有顶点的路径称作哈密顿路径(Hamiltonian path)。

    判断方法

    判不是

    【染色法】对一个图每条边两侧的顶点染不同的颜色,如果这幅图可以完全染色,并且染色后两种颜色的顶点个数不同,则此图一定不是哈密顿图。
    解释:为了形成生成圈,其两种颜色的顶点必然前后相接并形成圈,因此其个数必然相等。

    注意:这仅仅是一种判不是的方法,另外需要注意,其条件要求能完全染色。如果
    1、对于无法完全染色的,方法失效(不一定不是哈密顿图);(部分可采用加边法解决,要在哈密顿圈上加边)
    2、对于染色后顶点个数相同的,此方法无法判断其为哈密顿图;

    必要条件

    【定理1】

    其中,(G-S)代表从图G中去掉子图S中所包括的顶点,(w(G-S))表示去掉之后形成的支数。

    例如在下图中,如果在右下角去掉两个顶点,仅有一个支,在中间去掉两个顶点,也仅有两个支。

    充分条件

    【定理1】(Dirac定理)

    解释:当边多的时候,则存在哈密顿圈。例如,完全图中必然存在哈密顿圈。

    【证明】
    posa的证明方法:证明其逆否命题,如果一个图G不是哈密顿图,则(exists vin V,mbox{deg} vle frac{p}{2})


    原因是如果(v_p)(v_{i_j-1})相连(例如图中与(v_2)相连),则(v_1v_3v_4cdots v_pv_2v_1)是一个哈密顿圈。
    而此时不是一个哈密顿图,不能存在哈密顿圈。

    -k的原因如上所述,是因为不能与和(v_1)相连的k给顶点的前一个顶点相连(也是k个),-1的原因是不与自己相连。

    【定理2】(Ore定理)
    这是一个由Dirac定理的上述证明过程导出的定理。

    【定理3】(非充分条件

    【证明】
    反证法。(仍受posa证法的启发)

    注意:
    1、当最长路的长度(k<p)时,那么最常路必然形成圈,而又由于(k<p),在圈外必然仍有与之连通的节点,那么,这就形成了更长的路,则与假设矛盾。
    2、必然形成圈的原因在于,【定理1】的证明中所用到的关于度的证明,如果要求两点度数之和大于等于p-1,那么(v_p)必须与(v_{i_j-1})相连,而这个相连就会导致圈的形成。

    图的表示

    邻接矩阵

    1. 邻接矩阵的阶是顶点个数。
    2. 对角线上全是0。
    3. 矩阵的是对称的。
    4. 每一行上1的个数是该顶点的度。
    5. 1的个数除以2等于边的条数。
    6. 同构图的邻接矩阵相似。

    由上图中的(v_3)经过6步到达(v_1),问有多少种走法?

    【定理1】

    也就是说,走法是((B^l)_{ij})种。

    【证明】
    证明方法使用数学归纳法,使用到的是线性代数知识。

    但是,值得注意的是在图论中,其意义如何。

    也就是说,把最后一步摘出来,这是其在图论中的意义。

    邻接表

    关联矩阵


    图中(e_1、e_2)等表示相应的边,也就是说这个矩阵反映了顶点与边的关系。

    应用:如表示电路节点间关系。

    特点:

    1. 每一列都是两个1;
    2. 每一行是顶点的度。

    图解

    优点:直观,容易产生灵感。

    带权图

    定义

    应用

    异构信息网:
    顶点不是一类,边可以在同类或不同类间连接。
    例如:论文数据库

    典型问题

    最短路径问题

    分类:

    1. 单源最短路径

      不含负权重,Dijkstra算法。

    2. 任意两点均求最短路径

      求传递闭包,Floyd算法,(O(p^3))

    中国邮路问题

    必须走遍所有的路。
    除去权重,可视为欧拉迹。

    在没有欧拉回路的情况下,所有奇度顶点之间的路需要走两遍,这就涉及到优化问题。

    旅行商(货郎担)问题

    必须走遍所有的顶点。
    除去权重,可是为哈密顿回路。

    树与割集

    定义

    森林
    没有圈的图称之为森林。

    连通的森林即为树。

    特殊的树
    平凡树:只有一个顶点的树。

    叶子:树中度为1的节点。

    推论1

    其证明方法是树也是一种图,则其有一条最长路,最长路两个端点的度均为叶子。

    推论2
    数是双图。
    【证明1】
    一个图是双图的充分必要条件是圈为偶数个。
    而树的圈为0个,符合条件。
    【证明2】
    可使用染色法证明。
    注意:这是论证,而不是给一个具体的图通过染色结果来判断。

    性质

    如果互相(两两)证明为充分必要条件,则证明过于繁琐。
    我们采用如下证明方法:

    1到2

    这是由于,如果两个顶点间具有不同的路,则一定有圈,与树的定义相悖。可以用反证法具体论证。

    2到3

    注意:这里要使用第二数学归纳法。

    3到4
    连通自然是得不到无圈这样的结论的,因此必须利用好(p=q+1)这一条件。
    圈与p、q之间的关系在于,对于圈(p=q)。那么,用反证法证明。

    假设存在圈(C_n),其中有n个顶点,则(nge 3),且(n<p)(原因在于圈中顶点数与边数相等,故(nle q<p)
    又由于此图连通,故圈与圈外顶点(p-n个)有边,边共有p条,矛盾。

    (4到5):

    由于4到5不好证明,而2到5好证明,因此使用这种方法证明。

    4到1

    假设不连通之后,就应该想到图中有至少两个支,而这些支内部是连通的。
    而图是无圈的,则其支中自然无圈。
    那么,每个支就是树,满足(p_k=q_k+1)
    相加可得(p=q+k=q+1),得出支为1个,矛盾。

    5到1
    只需证该图连通即可。
    可采用反证法,假设其不连通,则至少存在两个支。从两个支中取出两个顶点,自然是不邻接的,在两个顶点间加上一条边,图中也不会形成圈。
    因此,与任意两个顶点间加一条边可形成一个圈矛盾。

    极小连通图

    【定义】
    【解释】
    连通的最弱情况,去掉一条边则不连通。

    【定理】

    极小连通是树的等价定义。

    树的中心

    顶点偏心率

    树的半径

    树的中心

    【定义】

    【求法】
    可以像剥白菜一样求之,每次去掉其最外围的叶子节点,其中心不变,其半径减一。

    【定理】
    树的中心是一个或者是两个。
    【证明】
    两种思路:
    1、不停的去叶子节点,直到最后为2个或1个才能停止。
    2、从其最长路出发,最长路的节点数一定是奇数个或偶数个。

    生成树

    定义

    【引入】
    村庄自来水问题:

    【定义】

    存在性定理

    是不是每个图都有生成树呢?
    并不是这样的。
    【定理】

    【证明】

    “破圈法”是指:在图G中如果存在圈,则去掉其一条边,使之保持连通且去掉这条边。如此重复,由于图是有穷的,必然可以得到其生成树。

    生成树的个数

    生成树的个数上界

    这个只是可能的上界,具体怎么求有多少个呢?

    生成树的个数求法

    假设B是邻接矩阵,D是顶点度数矩阵,
    其Kirchhoff矩阵(K=BB^T=D-B)
    其n-1阶主子式的绝对值是生成树的个数。
    (具体会在组合数学中探讨)

    最小生成树

    定义

    加权图

    最小生成树
    【定义】

    算法

    Kruskal算法
    先对边按照权值排序,然后从最小的权值边开始,逐步组成生成树。
    但是在这一过程中,要注意判断不要生成圈。

    Prime算法
    从任一顶点出发,然后选择与已选顶点集相连且权值最小的顶点,逐步组成生成树。
    但是在这一过程中,要注意判断不要生成圈。

    两种算法的简单对比

    这两种算法将在数据结构中详细论述。

    这两种算法,体现了Greedy策略(贪心策略)。

    割点与桥

    割点

    割点的定义

    【引入】

    离散数学数学修养的要求
    1、了解背景;
    2、会用图解;
    3、会用数学(集合论)语言描述。

    【定义】

    【推论】

    1. 哈密顿图中不存在割点。/有割点的不是哈密顿图。

      哈密顿图中存在哈密顿圈,此圈中包含所有顶点,去掉里面的任一个顶点不能增大其分支数。

    2. 每个非平凡图中至少有两个点不是割点。

      非平凡图中,考虑其最长路,最长路的两端点不可能是割点。

    割点的性质

    割点的特征性质(与定义等价)


    此处注意:如果G不连通,此结论也是成立的,但是证明过程会更繁琐。

    很明显,3得证之后,2自然可得,故选择(1°Rightarrow 3°Rightarrow 2°Rightarrow 1°)
    证明过程并不复杂,不再赘述。

    桥的定义

    桥的性质


    小结

    许多好算法与树有关,许多模型首先得到的是图。(例如:传感器网络)
    这就是树的重要性。
    要知道什么样的树可以更好地表达图的性质。
    有向树更有实用性。(最后一章)

    【例】???
    证明R的等价闭包((e(R)))与传递闭包有如下关系:

    【证明】
    等价闭包可以认为是自反对称传递闭包。
    使用集合相等的常用证明方法:

    1. 左边(subseteq)右边

      (e(R))是包含R的等价关系中最小的那个集合,因此,只需要证明右边是包含R的等价关系即可。
      这几乎是显然的。因为,(I)是自反的,(R^+cup (R^+)^{-1})是对称且传递的。

    2. 右边(subseteq)左边

      任意找出一个S,要求(Ssupseteq R)且S是等价的。
      由于(e(R))是所有S的交集,且S是任意的,
      那么,要证明右边(subseteq e(R)),证明右边(subseteq S)即可。
      可以任意假设一个序对(<x,y>in Icup R^+cup (R^+)^{-1})
      然后分为:

      1. (<x,y>in I)

        显然,(<x,y>in S)。因为S是对称的。

      2. (<x,y>in R^+)

        显然,(<x,y>in S)

      3. (<x,y>in (R^+)^{-1})

        可通过若S是对称的,则(S=S^{-1})来考虑证明。

    连通度与匹配

    连通度

    引入

    直观了解


    通过对这两个图连通能力的比较,可以知道在顶点上考虑,两幅图连通能力相同。(去掉1个顶点即不连通)
    但在边上考虑,明显右图的连通能力更强些。(左图去掉1条边,有图去掉4条边才能不连通)
    因此,连通度需要在边和顶点两个层面上考虑。


    但是,对于图(K_5),去掉几个顶点/边才能使之不连通呢?
    可见上面的说法对于这样的图并不方便。需要更方便使用的定义。

    研究背景

    铁路网、公路网与计算机互联网如果建设成第一幅图中的样子,会过于脆弱。
    但若建设成第二幅图中的样子,又并不现实。

    但是,以互联网为例,主节点之间希望可以建成如第二幅图中的样子,增强容错性。

    我们需要对这种连通能力进行度量。

    定义


    注意
    定义中没有提到图G是不是连通的,也就是说不连通的图G也有其连通度。

    【例1】


    其中,T表示树。

    【例2】
    除了连通度,最小度(delta (G))也可以反映一副图的连通程度,但没有连通度描述的精确。

    注意:这这是连通的充分条件,并不能将这个条件视为连通(不能当成充要条件)。

    (kappa (G))(lambda (G))(delta (G))的关系

    【定理1】

    【证明】

    在这个结论当中,(lambda (G)le delta (G))最容易证明。
    (原因是在不等式关系中,越不精确的越容易证明。)
    因此,先证(lambda (G)le delta (G))


    根据顶点最小度的定义,也就是说对于这样一个顶点v,只需要去掉与之关联的(delta (G))条边,则其一定不连通。
    也就是说(lambda (G)le delta (G))

    这部分严格的证明过程如下:

    然后,证明(kappa (G)le lambda (G))
    在这里要注意平凡图是连通的

    明显地,若假设去掉(lambda (G))条边之后图不连通,那么去掉与之相关联的顶点也是可使图不连通的。
    进一步地,再分两种情况讨论。??这里如何证明的(kappa (G)<lambda (G))

    【定理2】

    【证明】
    证明存在性定理往往使用构造法。
    但应该注意,构造法往往只能用于证明其存在,如果直接使用构造出的图,可能实际应用效果很差。

    1. (a=b=c)

    2. (a=b<c):

    3. (a<b=c)


      网格线代表中心子图中每个顶点均与外面顶点相连。
      需要去掉的边:
      使(K_{b-a+1})不连接的b-a个,加上与中间相连的a个。

    4. (a<b<c)

    能否根据【定理2】改进【定理1】的结论呢?
    答案是不能改进。
    但是,如果增加一些条件(使G中的边多到一定程度),可以得到新的结论((lambda (G)=delta (G)))。

    【定理3】

    【证明】


    n连通

    我们希望描述对一大类图的性质,因此,我们定义图集(mathcal{G})

    【定义】

    n连通不仅仅是针对特定的某一个图的概念,例如,树都是1连通的。
    再如,我们说这个图是2连通的,那么也就是说这幅图去掉一个顶点仍是连通的。
    怎么描述这样的一幅图呢?

    【定理1】

    【证明】
    (Leftarrow)是显然的。
    由于其任意两个顶点在一个圈上,也就是说这两个点不是割点,由于取点的任意性,得出图G上没有割点。
    那么,(kappa (G)ge 2),也即图G是2连通的。

    (Rightarrow)
    分析可知,找不到明确的思路正向证明,反证法也没有好的思路。
    只能尝试使用数学归纳法。
    由题意,如果使用归纳法,重要的找到对什么施归纳
    由于要证明的u、v之间有路,为了方便描述,我们取最短路(距离(d(u,v)))。
    那么,只需假设(d(u,v)<k)时成立,证明(d(u,v)=k)时成立即可。

    大概的思路在上图已给出。

    1. (d(u,v)=1)

      (d(u,v)=1)时,u、v之间有一条边,由于图G是2连通的,所以这条边不是桥。
      因此,结论显然成立。

    2. 假设(d(u,v)<k)时结论成立,往证(d(u,v)=k)时成立。

    【定理2】

    这个结论启发了明格尔研究任给两个顶点,其不相交的路(独立轨)的最大条数的最小值,可以刻画图的连通程度。
    :最大独立轨的最小值是(kappa (G))

    明格尔定理

    Menger's theorem

    分离

    明格尔定理

    柯尼希定理

    Konig's theorem

    对连通度的研究(明格尔定理)与二部图匹配(柯尼希定理)联系起来了。

    最大流最小割定理

    对连通度的研究(明格尔定理)与网络流问题(最大流最小割定理)联系起来了。

    网络流问题

    算法设计与分析课程中会进一步讨论。

    应用

    自来水管道、运输网等一大类的组合优化问题。

    模型

    图D是一个有权的有向图,称之为容量网络。

    试问从s到t的最大流量是多少?

    术语介绍
    流量:在网络中实际流动的值,标有的权值视为容量;
    网络流:不同弧上的流的集合;
    可行流:满足容量约束(限制条件)与s流出与t流入相等(平衡条件)这两个约束的流;
    零流:
    伪流:满足限制条件不满足平衡条件的流;
    最大流:可行流上的流量总和的最大值;
    饱和弧:流量与容量相等的弧;
    不饱和弧:
    链:不考虑方向的路;
    增广路:满足如下条件的链:
      1、前向弧不饱和;
      2、后向弧不为零。
    残留流量:容量减去实际流;
    残留网络:残留流量的网络;
    割:使图不连通所去掉的最小顶点;
    割边:去掉的边的集合;
    割容量:割边集合容量之和;
    最小割:容量最小的割。

    定理

    增广路定理

    最大流最小割定理

    与明格尔定理等价。

    例子

    网络流问题两种常用方法:

    Ford-Fulkson方法、Push-Relabel方法(假设s处对网络加压,进而重新标记容量的方法)。

    【例】

    初始时刻,流量均为0((sum=0))。



    第一次迭代后,残余流量如上图所示。


    ……

    如此迭代,最后得出的最大网络流为7。

    匹配问题

    匈牙利算法(Hungarian algorithm)是求一个图的最大匹配的算法。
    那什么是匹配呢?

    独立集与团

    独立集

    最大独立集
    所有独立集中,其顶点个数最多的称为最大独立集。

    如何求最大独立集
    可使用简单的搜索法(求出所有独立集,再加以比较)。
    当然,简单搜索法并不是一个好的算法。
    求最大独立集是一个NPC(NP完全问题),很难找出好的算法加以解决。

    P问题、NP问题、NPC问题、NP
     
    P问题(Polynomial)
    P问题,由其名字(Polynomial)我们不难看出它指的就是能在多项式时间内解决的问题,亦即解决这个问题的算法的时间复杂度是是多项式。
     
    NP问题(Non-deterministic Polynomial)
    在多项式时间内可判定其答案是否正确的问题。
    也就是说,不能判定这个问题是否能在多项式时间内求得其解,但是对于这个问题的一个解可以在多项式时间内证明是否正确的。
    即该问题的求解过程是不确定的,而对其某一个解的验证则能够在多项式时间内完成。
    因而显然P类问题是NP问题的子集,因为倘若一个问题可以在多项式时间内被求解,那么这个解也一定可以在多项式时间内被验证是否正确。
    NP问题的另一个定义是,可以在多项式的复杂度里猜出一个解的问题。
     
    NP完全问题(NPC问题,NP-Complete问题)
    存在这样一个NP问题,所有的NP问题都可以规约成它。换句话说,只要解决了这个问题,那么所有的NP问题都解决了。
    (1)同时满足:

    • 得是一个NP问题;
    • 所有的NP问题都可以约化到它。
      (2) 举例
      旅行商问题和集合覆盖问题都是NP完全问题。
      (3)如何识别NP完全问题
    • 元素较少时算法的运行速度非常快,但随着元素数量的增加,速度会变得非常慢。
    • 涉及“所有组合”的问题通常是NP完全问题。
    • 不能将问题分成小问题,必须考虑各种可能的情况。这可能是NP完全问题。
    • 如果问题涉及序列(如旅行商问题中的城市序列)且难以解决,它可能就是NP完全问题。
    • 如果问题涉及集合(如广播台集合)且难以解决,它可能就是NP完全问题。
    • 如果问题可转换为集合覆盖问题或旅行商问题,那它肯定是NP完全问题。

    NP-Hard问题
    NP-Hard问题是这样一种问题,它满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广,NP-Hard问题没有限定属于NP),即所有的NP问题都能约化到它,但是他不一定是一个NP问题。
    NP-Hard问题同样难以找到多项式的算法,即使NPC问题发现了多项式级的算法,NP-Hard问题有可能仍然无法得到多项式级的算法。
    事实上,由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。

     
    很显然,所有的P类问题都是NP问题。也就是说,能多项式地解决一个问题,必然能多项式地验证一个问题的解――既然正解都出来了,验证任意给定的解也只需要比较一下就可以了。
     
    关键是,人们想知道,是否所有的NP问题都是P类问题(注意:跟“所有的P类问题都是NP问题”表述的顺序是不同的)。
     
    我们可以再用集合的观点来说明。如果把所有P类问题归为一个集合P中,把所有 NP问题划进另一个集合NP中,那么,显然有P属于NP。现在,所有对NP问题的研究都集中在一个问题上,即究竟是否有P=NP?通常所谓的“NP问题”,其实就一句话:证明或推翻P=NP。
     
    从NPC定义上看,所有的NP问题都能约化成NPC问题,那么只要任意一个NPC问题找到了一个多项式的算法,那么所有的NP问题都能用这个多项式复杂度算法解决了,同时,P问题也是多项式复杂度算法解决的,所以NP也就等于P了。因此,给NPC找一个多项式算法太不可思议了。那么,前文说,“正是NPC问题的存在,使人们相信P≠NP”。我们可以就此直观地理解,NPC问题目前没有多项式的有效算法,只能用指数级甚至阶乘级复杂度的搜索。


    由于其对称性,求最大团问题也是NPC问题。
    求最大团问题的现实意义是什么?

    求最大团的现实意义
    物以类聚,人以群分。
    团的意义在于寻找具有相同点的一群事物,进而精准实施某种操作。

    匹配/边独立集

    偶图匹配问题

    完全匹配与完美匹配

    完美匹配即为正则二部图。

    偶图匹配的条件

    【定理1】Hall结婚定理(Hall's Marriage Theorem)


    【证明】

    相异代表系(匹配问题的另一种数学描述方法)

    相异代表系的概念

    (Gamma (x_i))(x_i)的映射,可以理解成结婚问题里面的对象列表。
    相异代表系就是取出X的一个子集S,并同时从每个(x_i)的映射中取出不相同的一个。

    霍尔定理

    这是一种纯数学的描述,其实质与霍尔结婚定理是一样的。

    结婚问题的变形


    第一种是指,例如招工,一个公司所招人数超过一人。

    第二种可以联想员工跳槽。

    1962年,Gale-Shapley algorithm,“GS算法”,也称为 “延迟接受算法”(deferred-acceptance algorithm)。
    2012年的诺贝尔经济学奖,来自哈佛大学商学院的Alvin Roth和UCLA的Lloyd Shapley分享了今年120万美元的奖金,以此表彰他们对Gale-Sapley算法的提出和改进所作的贡献。
    瑞典皇家科学院表示,此次的诺贝尔经济学奖是对于“稳定分配(Lloyd Shapley)及市场设计实践理论(Alvin Roth)”的认可。

    几个概念

    点覆盖

    边覆盖
    类似的,可以定义。

    支配集


    最小支配集越少越好。
    实例:微信公众号
    支配集也分为顶点支配集和边支配集。

    二分图的性质

    平面图与顶点着色

    平面图与欧拉公式

    背景

    【例子1】
    印刷电路板的交叉线路不能放在同一个平面
    【例子2】
    道路地下管道的不同系统交叉管线不能放在同一个平面

    平面图、可平面图、面

    可平面图

    平面图

    注意二者的辨析:
    平面图是已经画在一个平面上且各边除顶点外不相交的图,可平面图是可以画在一个平面上且各边除顶点外不相交的图。

    上图为平面图,下图为可平面图。


    给定一个图一定有面。这是因为一定有外部面,如下图所示:


    面的典型特征是什么?
    由于面是由一个圈(内部不能有边)围成的不能再分割的区域,所以这个特征是圈的长度。

    欧拉公式

    欧拉最早从凸多面体来研究平面图的。
    凸多面体定义
    任何一个面,将多面体延展后,其他所有面均在该面的一侧。

    【定理】欧拉公式

    【证明】
    由于没有已有的结论与要证的结论接近,所以我们使用数学归纳法证明。
    施归纳于f。

    每个面都是圈围城的,由于此时(fge 2),因此,一定有一个内部面。
    我们可以去掉这个内部面,去掉之后根据归纳假设满足该公式。
    由于去掉圈中的一条边就可以破掉这个圈(生成树一节的破圈法),所以在归纳假设的式子中,q与f同时加一即可证明。

    【实例】

    根据右图,可以得到左侧的关系式。
    注意的是,式2由握手定理得出,式3的理解要注意每条边参与构成两个面。

    【推论1】

    【推论2】

    最大的意思在于,对于面来说,这是最大平面图。也就是说,如果再加一条边,就不再是平面图。

    【推论3】

    推论2、3都是由推论1令n为不同的值得到的。

    【推论4】

    注意:偶图(双图)中没有三角形,但是没有三角形的图不一定是偶图。

    【推论5】

    【证明】

    【推论6】

    【推论7】

    这个推论对证明五色定理有用。

    【证明】
    反证法。

    例题

    【例1】

    【证明】

    【例2】

    【解】
    (q=6)是满足条件的。也即三棱锥。

    【引申】
    证明(qge 6)(q eq 7)时,均存在q条棱的凸多面体。

    【证明】
    8条棱:

    与之类似的,10条棱只需将底面变成5边形。
    故偶数棱均可。

    那么奇数棱呢?
    自主证明

    非平面哈密顿图

    Grinberg定理

    【定理】

    【解释】

    如图,红色为哈密顿圈。此图中(f_4=2)(g_4=1)

    【证明】
    由于3式为1式减2式所得,故无需证明。
    另由于1式、2式具有高度对称性(这也说明,哈密顿圈内外具有对称性),故可仅证1式。



    式2是由面上边的和是边数的2倍所得到的,+p的原因是因为哈密顿圈上的边参加形成面且仅参加一次。

    应用

    【例】

    证明x、y不能在一个哈密顿圈上。

    使用Grinberg定理判断一个图是不是哈密顿图依然是比较复杂的,但是相比于寻找有无哈密顿圈的方法,已经简便很多。

    图的着色

    顶点着色

    相关术语

    n-可着色:用n种颜色可着色。
    色数:最小的n。
      对应到考试安排上,就是考试时段。
      但是,求色数是NPC问题。
      有算法:用一种颜色染尽可能多的点,换一个色继续,直到完成(简单的贪心算法)。没有好的算法。(目前)

    【例】

    注意:树是一种典型的层次结构,色数为2。

    边着色

    使用较少,不再赘述。

    色数的上下界

    下界

    上界

    【定理1】

    【解释】
    可以简单地用数学归纳法证明。

    去掉这个顶点,归纳假设剩下的顶点均可着色(仅用了(Delta (G)))种颜色。
    对刚才去掉的顶点,用另外的一种颜色着色即可。

    【定理2】
    (G=(V,E))是平面图,则其是(Delta (G))可着色的。

    【定理3】

    【证明思路】

    利用这个结论,用归纳法证明。

    四色定理VS五色定理

    五色定理

    【定理】
    任何一个平面图都是5-可着色的。

    【证明】
    施归纳于p。
    考虑(mbox{deg} vle 5)的那个顶点:

    1. (mbox{deg} vle 4)


      由归纳假设,除v外的顶点已5-着色。而与v邻接的顶点最多只有4个,最多用去4种。得证。

    2. (mbox{deg} v=5)



      其中,(V_{13})是指用(c_1)(c_3)两种颜色染色的顶点集合,(G_{13})是其导出子图(两个顶点都在(V_{13})中的边才算在内)。

      1. (v_1)(v_3)不在一个支

        这样的话,我们在(v_1)所在的支里面将(v_1)改染(c_3)
        节省出的颜色用于染v即可。

      2. (v_1)(v_3)在一个支

        在这种情况下,(v_2)(v_4)必不在一个支。
        原因是,如果(v_1)(v_3)在一个支,(v_2)(v_4)也在一个支,则这就不是一个平面图了。为什么???
        用类似的方法对(v_2)(v_4)操作,即可证明。

    有向图

    无向图与有向图的对比


    有向图不具有对称性。但是,无向图的理论可以为有向图的研究提供指导。

    【例】

    如果边上没有方向(也就是对于无向图来讲),这样是不符合定义的。
    但是对于有向图,这样是符合定义的。


    但是必须注意的是,这样的图(具有多重弧以及带环顶点)对于有向图也是不符合定义的。
    这种称为有向图中的伪图。

    基本概念

    有向图

    【定义】
    与无向图类似,另注意有向图的边可以称为弧。

    有向图的表示

    1. 用定义表示

      列出V与A两个集合。

    2. 图解法

    3. 邻接矩阵法

    4. 关联矩阵法

    计数问题

    p个顶点能构成的图个数:

    无向图:

    注意
    (C_p)是p个顶点构成的集合,({C_p}^2)是p个顶点构成的二元集合。

    有向图:

    也即在所有笛卡尔乘积中去掉自反的那些。

    伪图

    参见链接

    定向图



    下图称为上图的定向图。

    例:单向道

    【定义】

    握手定理

    对于无向图

    对于有向图

    注意:无向图中的握手定理在有向图中仍然成立,但是在有向图中此式更有作用。

    有向完全图


    这就是一个有向完全图。

    【定义】

    注意
    在无向图中,满足(G+G^c=K_p)
    在有向图中,依然存在这样的关系,也即(D+D^c=p阶有向完全图),其中(D^c=Vcup A^c),而(A^c=V imes Vackslash {v,v} ackslash A)

    同构

    【定义】

    怎么找同构,在有向图中仍然是一个NPC问题。

    有向路与有向圈

    路的重要性在于它是用来描述图是否连通的工具。

    有向通道与闭有向通道

    与无向图中类似。

    有向迹与有向闭迹

    边不能重复的有向通道。

    有向路

    顶点不能重复的有向通道。

    有向闭路(有向圈)

    有向图的连通性

    可达

    【定义】

    这个关系R是自反(u与u自身之间可达)和传递的。
    但是不是对称的。

    相互可达

    在关系R的基础上具有对称性即为相互可达。

    连通性

    弱路与弱连通

    弱路:不考虑路的方向条件下的路。

    弱连通:任何顶点间有一条弱路。

    单向连通

    强连通

    互达

    对于u、v直接的这种关系R,我们定义为:
    互达(R_D)

    这个关系是自反、传递以及对称的(这是个等价关系)。

    等价关系可以用来对事物进行分类,分类后可以用其中一个来代表。(即划分)

    强支(极大强连通分量)

    强支的概念


    对V利用(R_D)关系确定一个划分,称为V相对于(R_D)的商集,记作(V/R_D)
    而这个商集正好是该等价关系的等价类的集合,该集合则是V的一个划分。

    该划分中的任一个等价类(V_i),则其是V的一个子集。
    因此,可以通过(V_i)导出一个子图,称之为强支,也称为D的极大强连通分量。
    极大的原因在于,(R_D)是一个等价关系,与(V_i)中任一个顶点等价的其他顶点,全部在(V_i)之中。

    利用邻接矩阵求强支

    引入
    在无向图中,给定的两个顶点之间,我们可求其长为r的通道的条数。


    其中,B是邻接矩阵。

    有向图的通道数
    在有向图中,此方法亦然。

    可达矩阵

    求强支
    (Rwedge R^T)
    (v_i)行中,其列为一的列标记为(j_i,cdots ,j_k)
    其中,对应着顶点集(v_{j_1},cdots ,v_{j_k})
    这个顶点集的导出子图,则为(v_i)所在的强支。

    应用

    有向无环路的拓扑排序

    有向无环路(DAG,Directed acyclic graph),无环指不存在有向圈。

    【实际场景】
    例如选课时的先修课程要求,
    做饭时的工序要求等。

    【例】

    【命题】
    这幅图中,一定有一个顶点入度是零。
     
    【证明】
    有穷系统中一定有最长路,其起点入度是零,终点出度是零。

    【问题描述】
    假设有四道工序,1决定3能否进行,2决定4能否进行。
    因此,需要合理的排序(拓扑排序)。

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。

    一种实现的算法为从中找出入度为零的顶点,将其排在第一个并在图中删去它。
    剩下的仍有入度为零的顶点,如此循环处理。

    寻找入度为零的顶点可以简单地使用遍历法。

    大规模任务的分布式处理的流水式并行法也与之类似。

    操作系统的资源分配图


    弧上的字母表示进程名,代表该进程正在使用起点的资源,而需要申请终点的资源。


    如图所示,即出现了死锁问题。(以图论的观点,是出现了强支。)

    早期操作系统为避免死锁问题,采用了一系列的方法:

    • 进程优先级
    • 操作顺序

    但是这些方法造成了系统灵活性的丧失。

    交通控制

    与图的定向问题有关。

    1939年,Robbin给出一个结论:
    只要该无向图是一个没有桥的连通图,则一定有它的一个定向图是强连通的。

    但是,这个结论没有考虑所产生的距离代价(有可能你到一个很近的地方,需要绕很远的路)。

    有根树、有序树

    有向树

    有根树

    【定义】

    有根树的叶子

    有序树

    有序树是指一类特定的有根树,其兄弟节点之间也是有序的。

    1. 树是分层的。

    2. 深度。

      即所处的层数,第一层的深度为0。

    3. 高度。

      高度是指总层数。

    m元-正则树

    每个顶点的出度不是m就是0。
    例如,2-正则树:

    满2-正则树:

    【例1】
    2元-正则树,有(n_0)个叶子,能否求出其有几个顶点几条边?

    【解】
    虽然是有向图对应的有向树,其无向图无向树中的理论仍然成立,则有(p=q+1)成立。
    另外,对于(n_0)个叶子,其出度均为0,而其他节点的出度均为2。
    依次可以求出。

    【例2】
    数学语言描述的算术表达式,如何让计算机理解呢?
    应该形成一个抽象的语法树表达。

    与有向无环路(DAG)的关系

    注意
    这个图在有向图中是无环的,当然其在无向图中有环。
    因此,对其进行拓扑排序,即可得出生成其机器指令的顺序。

    使用DAG的好处在于,对于相同的子表达式,只需生成一次。

    完全二元树

    “完全”不代表其是满的。

    任意给定一个树,均可转化为二元树。
    二元树作为数据结构,则具有广泛的可用性。

    完全二元树是特殊的有根树、有序树,其倒数第二层一定是满的,且最后一层全部靠左,从完全二元树可以得到堆。
    堆相比于完全二元树,又多了一种“序”,其每个节点的子节点,要么比该节点大,要么比该节点小。
    这样就避免了排序,大大提高了算法效率。
    最短路径、最小生成树在堆上进行,可以得到更好的算法。

    在数据结构中将进一步探究。

    比赛图

    引入

    完全图的定向图就称为比赛图。

    其方向取决于“比赛”的胜负结果。

    定理

    【定理】
    比赛图中一定存在一条哈密顿路。

    【证明1】数学归纳法

    只关注如何利用归纳假设。

    我们寻找最后一个向新增加顶点指的弧,可以轻松地得到更长的哈密顿路。

    【证明2】最长路
    比赛图里的最长路就是哈密顿路。
    使用反证法。

    【例1】

    对于这样的一个正则二元树,有(I=E+2i)成立。
    其中,I是叶子顶点的深度和,E是内定点的深度和,i是內顶点(非叶子顶点)的个数。

    【证明1】数学归纳法
    注意
    对于有根树来说,归纳假设要注意需要去掉的是其根节点。

    也就是说,归纳假设必须写成第二归纳法的形式。

    而加上最上方的内顶点之后,只是多了一个内定点与两条边,易证结论成立。

    【证明2】
    对于内节点来说,其出度均为2,因此,2i刚好是其边数。
    也就是说,所有叶子节点的深度总和,等于内节点的深度总和加上边数。
    因此,如果对于任一条边,可以证明结论成立的话,则可以认为结论证得。


    对于边uv,v的子树其内节点正好为叶子节点减一。

    其正好差一条边???

    【例2】

    注意:不是2-可着色,也就是说仅仅是用两种颜色对其顶点进行染色,并不严格要求两个邻接顶点颜色不同。

    其现实意义
    比如黑人白人合住小区,能否保证黑人的白色邻居多,白人的黑色邻居多?

    【例2的不同描述】
    把一些人组成一个团体,把这些人分为两组,使每个人在自己组内的朋友数至多是整个团队朋友数的一半。

    即对V进行一个划分,

    使如下数目最大:

    启示
    学会从不同角度思考问题,
    甚至从不同角度得到的问题可能是相同的。

    【完】

  • 相关阅读:
    注意身体
    用生命去战斗
    来到华师,一切清零
    linux fork()函数 转载~~~~
    小端大端
    位域
    内存泄漏(memory leak)和内存溢出
    stack,heap的区别
    内存管理简便复习总结
    虚函数&&虚继承
  • 原文地址:https://www.cnblogs.com/letisl/p/12243273.html
Copyright © 2011-2022 走看看