点连通度的定义:一个具有N个点的图G中,在去掉任意k-1个顶点后(1<=k<=N),所得的子图仍然连通,去掉K个顶点后不连通,则称G是K连通图,K称作图G的连通度,记作K(G)。

独立轨:A,B是图G(有向无向均可)的两个顶点,我们称为从A到B的两两无公共内顶的轨为独立轨,其最大的条数记作p(A,B)。

在上图中有一个具有7个定点的连通图,从顶点1到顶点3有3条独立轨,即p(1,3)=3;

1—2—3 ,   1—7—3 , 1—6—5—4—3

如果分别从这3条独立轨中,每条轨抽出一个内点,在G图中删掉,则图不连通。若连通图G的两两不相邻顶点间的最大独立轨数最小的P(A,B)值即为K(G)。若G为完全图(两两点可达),则

K(G)=n-1,即完全把某个点的所有边删掉后才不连通。既然独立轨是只能经过一次的边,那么可以构造网络流模型,其中每条边的容量为1,就可以限制只经过一次。

构建网络流模型:

若G为无向图:

(1)原G图中的每个顶点V变成N网中的两个顶点V`和V``,顶点V`至V``有一条弧容量为1;

(2)原图G中的每条边e=UV,在N网中有两条弧e`=U``V`,e``=V``U`与之对应,e`与e``容量均为无穷;

(3)以A``为源点,B`为汇点,求最大流。

若G为有向图

(1)原G图中的每个顶点V变成N网中的两个顶点V`和V``,顶点V`至V``有一条容量为1的弧;

(2)原G图中的每条弧e=UV变成一条有向轨U`U``V`V``,其中轨上的弧U``V`的容量为无穷;

(3)以A``为源点,B`为汇点求最大流。

上面的模型只是求出了以A为源点B为汇点的最大流max_flow,等价于在G中只要去掉max_flow个点就会使得A与B不连通。而图的连通度是要求去掉最少的点使得整个图不连通,做法是固定一个点为源点,枚举与源点不相邻的点为汇点,求最大流。在所有的枚举结果中最小的max_flow值就是要求的K(G).注意如果某次枚举的汇点求出 的最大流为无穷则说明此此枚举的源点与汇点是强连通的。如果所有的枚举结果都为无穷,则说明整个图G是强连通的,需要去掉n-1个点才能破坏其连通性。

所有具有流量为1的弧(V`,V``)对应的V顶点组成一个割顶集

通过求连通度可以得到一个结论:G是K的连通图,k>=2,则任意K个顶点共圈。

求边连通度总结:

同样引入独立轨的概念,只是在这里叫弱独立轨,同样在每条弱独立轨中只有去掉某一条边就可以使起点到终点不连通,现在整个图G的边连通度就是要找出任意两点的弱独立轨的最小值。如果图G为完全图,则K`(G)为n-1。

构建一个网络N

若G为无向图:

1.     原G图中的每条边e=UV变成两条边e`=UV,e``=VU,容量都为1;

2.     固定一个点为源点,枚举与源点不相邻的为汇点,求最大流max_flow,保留最小的max_flow即为图的边连通度。

若G为有向图:

1.     原G图中每条有向边容量为1;

2.     此步骤与无向图的步骤2相同。

求出的残余网络中,流量为1的弧e`=(u,v),则e`就是桥。

从图的边连通度中可以得到以下结论:

1.          A是有向图G的一个顶点,如果A与G的其他所有点V间的最小值为K,则G中存在以A为根的K棵无公共边的生成树;

2.          设G是有向图,0<k<=K`(G),L是0至k之间任意一个整数,对于图G的任意一对顶点(u,v)来说,存在U到V的L条弱独立有向轨,同时存在从V到U的L-k条弱独立有向轨。

附:求无向图边连通度代码

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;const int MAXN = 105;
const int MAXM = 105*105;
const int INF = 0x3f3f3f3f;struct Edge
{int v, next;int f;
}edge[MAXM];int cnt;
int n, m;int first[MAXN], level[MAXN];
int q[MAXN];void init()
{cnt = 0;memset(first, -1, sizeof(first));
}void read_graph(int u, int v, int f)
{edge[cnt].v = v, edge[cnt].f = f;edge[cnt].next = first[u], first[u] = cnt++;edge[cnt].v = u, edge[cnt].f = 0;edge[cnt].next = first[v], first[v] = cnt++;
}int bfs(int s, int t)
{memset(level, 0, sizeof(level));level[s] = 1;int front = 0, rear = 1;q[front] = s;while(front < rear){int x = q[front++];if(x == t) return 1;for(int e = first[x]; e != -1; e = edge[e].next){int v = edge[e].v, f = edge[e].f;if(!level[v] && f){level[v] = level[x] + 1;q[rear++] = v;}}}return 0;
}int dfs(int u, int maxf, int t)
{if(u == t) return maxf;int ret = 0;for(int e = first[u]; e != -1; e = edge[e].next){int v = edge[e].v, f = edge[e].f;if(level[v] == level[u] + 1 && f){int Min = min(maxf-ret, f);f = dfs(v, Min, t);edge[e].f -= f;edge[e^1].f += f;ret += f;if(ret == maxf) return ret;}}return ret;
}int Dinic(int s, int t)
{int ans = 0;while(bfs(s, t)) ans += dfs(s, INF, t);return ans;
}void read_case()
{init();while(m--){int u, v;scanf("%d%d", &u, &v);read_graph(u, v, 1);read_graph(v, u, 1);}
}void solve()
{read_case();int ans = INF;for(int i = 2; i <= n; i++) //以1为源点枚举 {int ans = min(ans, Dinic(1, i));}
}int main()
{while(scanf("%d%d", &n, &m)){solve();}return 0;
}

转载自:http://hi.baidu.com/lerroy312/item/5a5f36f2f5bba61bcf9f322e

图的点连通度边连通度总结相关推荐

  1. 【转】图的点连通度边连通度总结

    2010-08-24 00:44 来源 http://hi.baidu.com/lerroy312/blog/item/d7ea97ee7b1f3cddd439c927.html 点连通度的定义:一个 ...

  2. 图的割点、桥与双连通分支

    [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...

  3. [转载]图的割点、桥与双连通分支

    [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...

  4. 图论(9)图的连通度

    目录 一.割边.割点和块 割边及其性质 割点及其性质 块 二.连通度 顶点割定义 点连通度定义 k连通定义 边割定义 边连通度 连通度性质 减去一个点/边性质 点连通度与边连通度关系 边数点数确定的图 ...

  5. 图的割点 桥 双连通(byvoid)

    [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...

  6. 图的割点、桥和双连通分支的基本概念

    点连通度与边连通度 回到正题,首先介绍下什么是图的边连通度和点连通度.一般来说,点连通度是指对应一个图G,对于所有点集U属于V(G),也就是V(G)的子集中,使得G-U要么是一个非连通图,要么就是一个 ...

  7. 图的割点、桥与双连通分支的基本概念

    [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...

  8. 现代图论笔记(三)图的距离与连通性

    tags: Combinatorics GT 写在前面 这次总结一下图论距离与连通性这块的内容, 涉及到的算法不多, 但是概念还是比较多的, 分类比较一下. 主要概念 图的距离 设uuu和vvv是图G ...

  9. 图中割点、割边的理解

    割点集合 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.(一般是有多个顶点组成) 割边集合 在一个无向连通 ...

最新文章

  1. 线性表的动态顺序存储和实现(C语言实现)【线性表】(4)
  2. php soap实例讲解
  3. Coursera自动驾驶课程第7讲:Vehicle Lateral Control
  4. 《Go语言程序设计》读书笔记(六) 基于共享变量的并发
  5. 基于android记事本论文,基于android平台的记事本研究与开发 开题报告
  6. 资深前端开发工程师分享:关于前端学习路线的一些建议
  7. python学习Day7 数据类型的转换,字符编码演变历程
  8. Vue中全局导入和按需导入的区别
  9. 任意角度旋转图片(python)
  10. 云计算核心技术的基本理解
  11. 【深度学习】简单地利用keras做车标识别
  12. 必学:入行电商产品经理必备知识,原来这么简单
  13. php有个schost.exe_windows找不到svchost.exe(附图)
  14. 最小径集的算法_最小割集Stoer-Wagner算法 | 学步园
  15. matlab图形黎曼几何,黎曼几何不一致的定理—元数学与元物理学(22)
  16. delphi的时间Ttime,Tdatetime的信息
  17. Java8新特性学习第一天
  18. android 高德地图移动卡顿_使用高德SDK开发安卓地图应用软件
  19. 2021中国人寿广发银行科技岗实习
  20. Flutter —— dio

热门文章

  1. PHP实现附近的人、按距离排序之Redis GEO方案
  2. 找不到合适的工作怎么办
  3. 太原理工大学计算机专业老师,郝晓燕 - 太原理工大学 - 信息与计算机学院
  4. 项目管理中的冲突管理
  5. matlab测量平差实验报告,测量平差实习心得精选三篇
  6. 官方示例(十):网页开发3D粒子系统实现降雨效果 ThingJS
  7. 计算机网络实验一、验证性实验
  8. FEDformer: Frequency Enhanced Decomposed Transformer for Long-termSeries Forecasting(ICML2022)
  9. VLINK 的更新版本
  10. VGA线 1080P之伤 中秋节篇