图Graph原理及证明

G=(V,E)
V=节点
E=节点之间的边
n=|V| 节点数
m=|E| 边数

图Graph原理及证明_第1张图片
V = { 1, 2, 3, 4, 5, 6, 7, 8 }
E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6, 7-8 }
m = 11, n = 8

一、定义:

  • 简单路径:如果路径上的各顶点均不互相重复,称这样的路径为简单路径。

  • 连通图:如果对每对节点u和v,它们之间有路径相连,则这个图是连通的。

  • :一个环是v1,v2,…vk的路径,其中v1=vk,k>2,并且前k-1个点各不相同。

  • :如果一个无向图是连通的并且无环,则这个图是一棵树。

  • 定理: G为一个无向图,下面的两个描述可以推出第三个:
    (1)G是连通的
    (2) G是无环的
    (3)G有n-1条边
    证明:(待证)

二、无向图的搜索

  • BFS(广度优先搜素)
    从所有可能的方向向外搜索,一次增加一层。
    **定理:**对每个i,Li由所有与s距离为i的顶点组成。当且仅当t出现在某一层中时,s到t有一条路径相连。
    性质: T为G=(V,E)的BFS树,(x,y)为G的一条边,则x和y的层数最多相差1。

图Graph原理及证明_第2张图片

如果图用邻接链表表示,BFS运行时间为O(m+n)

三、二部图

  • 定义:如果所有节点被染成白色或蓝色,使得每条边都有一个白色和一个蓝色端点,则这个无向图G=(V,E)是二部图。

图Graph原理及证明_第3张图片

  • 应用:
    稳定匹配:男人=蓝色,女人=白色
    工作安排:机器=蓝色,工作=白色
  • **引理:**如果一个图是二部图,它不可能有奇数长度的环。
    证明:不可能使得奇数环的所有边端点颜色不同,更不用说整个图G,不可能为二部图。

图Graph原理及证明_第4张图片

  • 引理:

G为一个连通图,让L0,L1,…Lk为从s开始BFS遍历生成的层。
(i) G没有边连接同一层的两个顶点,则G是二部图。
(ii)G的边连接同一层的两个顶点,则G包含一个奇数环。 .

  • 证明(i):

    • 没有边连接同一层的节点
    • 根据BFS树的性质,边相连的两个节点层数最多相差1,则所有边连接相邻层的节点
    • 分成两部分:白色=奇数层的节点,蓝色=偶数层的节点
  • 证明(ii):

    • 假设(x,y)是x,y在相同层Lj的一条边
    • z=lca(x,y)=最小共同祖先
    • z在Li层
    • 考虑从x到y的边,y到z的路径,z到x的路径组成的环。
    • 环长度为 1+(j-i)(y到z的路径长度)+(j-i)(z到x的路径长度),长度为奇数。

    图Graph原理及证明_第5张图片

四、有向图

  • 互相可达:有从u到v的路径,同时也有从v到u的路径,则u和v互相可达。

  • 强连通:如果有向图中的每对节点都是互相可达的,则这个图是强连通的。

  • 引理:s为有向图中任意的一个节点,当且仅当从s到每个节点是可达的,从每个节点到s是可达的,则这个有向图是强连通的。

  • 定理:在O(m+n)时间内可以计算出有向图是否是强连通的。
    证明

    • 任意选择一个节点s
    • 在图G中从s开始运行BFS
    • 在图G_reverse(G中的每条边反向的图G_reverse)中从s开始运行BFS.
    • 当且仅当运行以上两个BFS都满足所有顶点可达时,返回true。

你可能感兴趣的:(算法)