给定一个无向图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)的更多相关文章

  1. POJ3659 Cell Phone Network(树上最小支配集:树型DP)

    题目求一棵树的最小支配数. 支配集,即把图的点分成两个集合,所有非支配集内的点都和支配集内的某一点相邻. 听说即使是二分图,最小支配集的求解也是还没多项式算法的.而树上求最小支配集树型DP就OK了. ...

  2. POJ 3398 Perfect Service --最小支配集

    题目链接:http://poj.org/problem?id=3398 这题可以用两种上述讲的两种算法解:http://www.cnblogs.com/whatbeg/p/3776612.html 第 ...

  3. POJ 3398 Perfect Service(树型动态规划,最小支配集)

    POJ 3398 Perfect Service(树型动态规划,最小支配集) Description A network is composed of N computers connected by ...

  4. POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心)-动态规划做法

    POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心) Description Farmer John ...

  5. POJ 3659 Cell Phone Network(树的最小支配集)(贪心)

    Cell Phone Network Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6781   Accepted: 242 ...

  6. 树形DP求树的最小支配集,最小点覆盖,最大独立集

    一:最小支配集 考虑最小支配集,每个点有两种状态,即属于支配集合或者不属于支配集合,其中不属于支配集合时此点还需要被覆盖,被覆盖也有两种状态,即被子节点覆盖或者被父节点覆盖.总结起来就是三种状态,现对 ...

  7. 树形DP 树的最小支配集,最小点覆盖与最大独立集

    最小支配集: 从V中选取尽量少的点组成一个集合,让V中剩余的点都与取出来的点有边相连. (点) 最小点覆盖: 从V中选取尽量少的点组成一个集合V1,让所有边(u,v)中要么u属于V1,要么v属于V1 ...

  8. 树的问题小结(最小生成树、次小生成树、最小树形图、LCA、最小支配集、最小点覆盖、最大独立集)

    树的定义:连通无回路的无向图是一棵树. 有关树的问题: 1.最小生成树. 2.次小生成树. 3.有向图的最小树形图. 4.LCA(树上两点的最近公共祖先). 5.树的最小支配集.最小点覆盖.最大独立集 ...

  9. 求树的最大独立集,最小点覆盖,最小支配集 贪心and树形dp

    目录 求树的最大独立集,最小点覆盖,最小支配集 三个定义 贪心解法 树形DP解法 (有任何问题欢迎留言或私聊&&欢迎交流讨论哦 求树的最大独立集,最小点覆盖,最小支配集 三个定义 最大 ...

随机推荐

  1. 战地记者也在使用Scrum

    2011年埃及骚乱 2011年1月25日开始,埃及人民由于不满物价上涨.失业率高和腐败等问题,埃及多个城市发生民众大规模集会,要求总统穆巴拉克下台.本来这只是一场小规模的抗议活动,却如星火燎原般点燃了 ...

  2. windows server R2 密钥

    一.win2012r2激活码 永久激活 Volume版 Windows Server 2012 R2 Datacenter数据中心版: [Key]:TVNTG-VFJQ3-FQXFP-DVCP6-D3 ...

  3. schedule与scheduleAtFixedRate之Timer源码分析

    执行Timer任务调度方法有如下几种: 这些方法最后调用的都是这个方法: private void sched(TimerTask task, long time, long period)   这个 ...

  4. 通过maven自动修改idea的compiler

    Idea在使用过程中,经常会自动修改compiler水平,有时会变成jdk1.5,不支持@override,也不能忽略实例化的泛型参数,更不支持try-with-resource. 版本太低,很多特性 ...

  5. TCP端口状态说明ESTABLISHED、TIME_WAIT、 CLOSE_WAIT

    一. 首先说下tcp端口的几种状态: 1.LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态. 2.ESTABLISHED状态 ESTABLISHED的意思是建立连接.表示 ...

  6. 监控windows

    一.zabbix server和zabbix agent(windows)的地址说明 zabbix server的ip为:192.168.1.106 zabbix agent的ip为:192.168. ...

  7. jQuery开发者眼中的AngularJS

    文章来源:http://blog.jobbole.com/76265/ AngualrJS是一个很贴心的web应用框架.它有很不错的官方文档和示例:经过在现实环境中的测试著名的TodoMVC proj ...

  8. back propogation 的线代描述

    参考资料: 算法部分: standfor, ufldl  : http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial 一文弄懂BP:https: ...

  9. 去除SVN图标并解除svn控制 (转)

    今天一不小心把F盘弄成了SVN管理项目,结果如图: 看到这个,当场晕菜,经过不懈的努力终于找到一种方法,如下: 右键  ===>TortoiseSVN   ===>Settings 点击确 ...

  10. dbcp的销毁

    使用commons-dbcp-1.2.2.jar的DataSource,发现每次动态编译后连接池中的连接不会释放,新的连接池建立有mssql多出一组连接,只有重新启动tomcat或weblogic才可 ...