求解任意图的最小支配集(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解法 (有任何问题欢迎留言或私聊&&欢迎交流讨论哦 求树的最大独立集,最小点覆盖,最小支配集 三个定义 最大 ...
随机推荐
- 查看端口占用情况lsof,并关闭对应进程kill
lsof -n -P| grep ":<端口号>" | grep LISTEN #监听对应端口号的进程 lsof -i tcp:<端口号> #和对应端口号有 ...
- 安装mongodb时报错 configure: error: Cannot find OpenSSL's libraries
请安装这些包以便继续: apt-get install build-essential libexpat1-dev libgeoip-dev libpng-dev libpcre3-dev libss ...
- apt 查询软件
apt-cache search percona-server apt list percona-server-server-5.6
- freeswitch由于ext-sip-ip地址填写错误导致32秒拆线问题
通话32秒左右就断掉 检查 profile 的 ext-sip-ip 设置ext-rtp-ip和ext-sip-ip 可以直接设置为外网IP 自建stun-server, 更新后, 过了好几个小时出现 ...
- Nginx源码完全注释(5)core/ngx_cpuinfo.c
/* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #include <ngx_config.h> #include ...
- Standard shader 和 Standard (Specular setup) Shader
http://blog.csdn.net/jk823394954/article/details/48594341
- 第二话:javascript中闭包的理解
闭包是什么? 通过闭包,子函数得以访问父函数的上下文环境,即使父函数已经结束执行. OK,我来简单叙述下,先上图. 都知道函数是javascript整个世界,对象是函数,方法是函数,并且js中实质性的 ...
- 初学者教程之命名空间,范围解析及LEDB规则
2014年5月12日 Sebastian Raschka编写 这是一篇关于采用LEGB规则实现Python变量命名空间及范围解析的简短教程.下面章节将会提供简短的可以说明问题的示例代码块来简要阐述问题 ...
- c/c++中关于String类型的思考
首先说明:String并不是一种内置类型,因此任何通过String声明出来的实例都不是一个变量,不同于内置类型因此String仅仅能称之为一种特殊的型别,没错String是一个类类型. 一般来说c语言 ...
- sed的模式空间和保持空间
摘自:https://blog.csdn.net/wanglelelihuanhuan/article/details/51591809 sed的模式空间和保持空间 2016年06月06日 17:15 ...