求解任意图的最小支配集(Minimun Dominating Set)
给定一个无向图G =(V,E),其中V表示图中顶点集合,E表示边的集合。G的最小控制顶点集合为V的一个子集S∈V;假设集合R表示V排除集合S后剩余顶点集合,即R∩S=∅,R∪S=V;则最小控制顶点集合S满足约束条件:R中任意一个顶点至少与S的一个顶点直接相连。给定一个图,求出最小控制集。

控制集定义:
控制集又称支配集(Minimun Dominating Set),支配集是图G中的顶点集合S ⊆ V,满足对于任何顶点v∈V,要么v∈S,要么v与集合S中至少一个顶点相邻。
最小控制集:
对于支配集S0,不存在任何支配集S1,使|S1|<|S0|,则称S0是图G的最小支配集,γ(G)=|S0|称为图G的支配数;
最小支配集的性质:
1)求最小支配集问题被证明属于NP完全问题,即对于给定问题域的输入规模,目前尚无足够的手段证明该问题能够被判定在多项式时间内求解。
2)在含n个点的任意图中,若任意点的度大于等于3,则该图的最小支配集小于等于3n/8。
3)对于特殊图,如树,可使用贪心或dp的方法解决问题。
将图论问题转化为数学问题:
为了方便说明,我们定义图中节点vi的闭邻集为N[vi],若vi为支配点赋值为1,否则赋值为0。根据支配集的定义,我们可以看出,图A中每个点要满足的条件即为N[i]的和大于等于一,也就是说,vi及其临集中至少含有一个支配点,而最小支配集则要求v1…vn的和最小,转化为数学公式,也就是特殊的0-1整数规划问题。
设计算法:
输入:一个任意图,格式为,第一行n表示n个节点,接下来任意行,每行两个数,a,b表示a到b有一条无向边。
输出:最小支配集(节点编号)
1)遍历邻接表,找出度为0的节点,直接加入支配集,度为1的节点,其相邻节点加入支配集,并加入支配集,度为1的节点记录为精确取值。
2)将邻接集合按从大到小排序,贪心选择最大的设为支配集,并动态维护邻接集合,直到支配集满足条件,将此支配集设为约束条件。
3)开始深度搜索,首先对该集合判断是否满足条件,若满足,和当前约束条件比较,若小于当前上界,代替约束条件。
4)按顺序遍历节点,若已经明确加入支配集则跳过该节点,若已经超过上界,返回,否则分别将该节点置为0和1,跳到步骤4。
这个算法的朴素时间复杂度是O(2^n)的,理论上一般要优于这个时间复杂度。
Grandoni算法的时间复杂度为O(2^0.61n),有兴趣的可以去看看论文:路纲, 周明天, 唐勇,等. 任意图支配集精确算法回顾[J]. 计算机学报, 2010, 33(6):1073-1087.
求解任意图的最小支配集(Minimun Dominating Set)的更多相关文章
- POJ3659 Cell Phone Network(树上最小支配集:树型DP)
题目求一棵树的最小支配数. 支配集,即把图的点分成两个集合,所有非支配集内的点都和支配集内的某一点相邻. 听说即使是二分图,最小支配集的求解也是还没多项式算法的.而树上求最小支配集树型DP就OK了. ...
- POJ 3398 Perfect Service --最小支配集
题目链接:http://poj.org/problem?id=3398 这题可以用两种上述讲的两种算法解:http://www.cnblogs.com/whatbeg/p/3776612.html 第 ...
- POJ 3398 Perfect Service(树型动态规划,最小支配集)
POJ 3398 Perfect Service(树型动态规划,最小支配集) Description A network is composed of N computers connected by ...
- POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心)-动态规划做法
POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心) Description Farmer John ...
- POJ 3659 Cell Phone Network(树的最小支配集)(贪心)
Cell Phone Network Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6781 Accepted: 242 ...
- 树形DP求树的最小支配集,最小点覆盖,最大独立集
一:最小支配集 考虑最小支配集,每个点有两种状态,即属于支配集合或者不属于支配集合,其中不属于支配集合时此点还需要被覆盖,被覆盖也有两种状态,即被子节点覆盖或者被父节点覆盖.总结起来就是三种状态,现对 ...
- 树形DP 树的最小支配集,最小点覆盖与最大独立集
最小支配集: 从V中选取尽量少的点组成一个集合,让V中剩余的点都与取出来的点有边相连. (点) 最小点覆盖: 从V中选取尽量少的点组成一个集合V1,让所有边(u,v)中要么u属于V1,要么v属于V1 ...
- 树的问题小结(最小生成树、次小生成树、最小树形图、LCA、最小支配集、最小点覆盖、最大独立集)
树的定义:连通无回路的无向图是一棵树. 有关树的问题: 1.最小生成树. 2.次小生成树. 3.有向图的最小树形图. 4.LCA(树上两点的最近公共祖先). 5.树的最小支配集.最小点覆盖.最大独立集 ...
- 求树的最大独立集,最小点覆盖,最小支配集 贪心and树形dp
目录 求树的最大独立集,最小点覆盖,最小支配集 三个定义 贪心解法 树形DP解法 (有任何问题欢迎留言或私聊&&欢迎交流讨论哦 求树的最大独立集,最小点覆盖,最小支配集 三个定义 最大 ...
随机推荐
- springmvc基本知识点
springmvc高级知识:
- go grpc
https://godoc.org/google.golang.org/grpc go get google.golang.org/grpc go get -a github.com/golang/p ...
- Linux实战教学笔记36:PHP服务缓存加速深度优化实践
一,PHP缓存加速器介绍与环境准备 1.1 PHP缓存加速器介绍 1.1.1 操作码介绍及缓存原理 当客户端请求一个PHP程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码(Ope ...
- Anisotropic Specular Shader
[Anisotropic Specular] Anisotropic Specular(各向异性反射)模拟表面凹槽的方向性.就像CD表面一样.CD的表面凹槽是有方向的. BlinnPhong中Spec ...
- Kafka集群中 topic数据的分区 迁移到其他broker
前言 kafka集群扩容后,新的broker上面不会数据进入这些节点,也就是说,这些节点是空闲的:它只有在创建新的topic时才会参与工作.除非将已有的partition迁移到新的服务器上面:所以需要 ...
- 【hdu4135】【hdu2841】【hdu1695】一类通过容斥定理求区间互质的方法
[HDU4135]Co-prime 题意 给出三个整数N,A,B.问在区间[A,B]内,与N互质的数的个数.其中N<=10^9,A,B<=10^15. 分析 容斥定理的模板题.可以通过容斥 ...
- 解剖Nginx·模块开发篇(1)跑起你的 Hello World 模块!
1 学习 Nginx 模块开发需要有哪些准备? 需要的预备知识不多,有如下几点: 有过一些 C 语言的编程经历: 知道 Nginx 是干嘛的,并有过编写或改写 Nginx 的配置文件的经历. OK,就 ...
- EZOJ #258
传送门 分析 我们考虑一个点有多少中情况可以被删除 我们发现只有删除它自己和删祖先共$dep_i$中 所以每个点的答案就是$\frac{1}{dep_i}$ 代码 #include<iostre ...
- linux查看操作系统版本信息
linux查看操作系统版本信息 摘自:https://www.cnblogs.com/vaelailai/p/7545166.html 一.linux下如何查看已安装的centos版本信息: 1.L ...
- [GO]定时器的停止和重置
package main import ( "time" "fmt" ) func main() { timer := time.NewTimer( * tim ...