(有任何问题欢迎留言或私聊&&欢迎交流讨论哦

求树的最大独立集,最小点覆盖,最小支配集

三个定义

最大独立集:

 对一个图选出尽量多的点组成一个集合,满足这些点之间没有边相连。所有独立集中,顶点数最多的称作最大独立集。

最小点覆盖:

 对一个图选出尽量少的点组成一个集合,满足图中所有的边均有端点属于这个集合。所有覆盖集中,顶点数最少的称作最小点覆盖。

最小支配集:

 对一个图选出尽量少的点组成一个集合,满足图中剩余的点都和集合中的点有边相连。从集合中出去任何一个点之后若不再是支配集,则此支配集是极小支配集。所有支配集中,顶点数最少的称作最小支配集。


贪心解法

树的最大独立集:

 先求一遍dfs序,倒序遍历。若此节点未被标记,则将此端点加入独立集,并标记此节点和其父节点。

树的最小点覆盖:

 先求一遍dfs序,倒序遍历。若此节点及其父节点均未被标记,则将其父节点加入覆盖集,并标记此节点及其父节点。

树的最小支配集:

 先求一遍dfs序,倒序遍历。若此节点未被标记,把其父节点加入支配集(前提是它不在支配集中),然后标记此节点,父节点及其爷爷节点。

树形DP解法

树的最大独立集:

\(dp[i][0]\)表示点i在独立集中;\(dp[i][1]\)表示点i不在独立集中
\[
dp[u][0] = 1 + \sum dp[v][1];\\
dp[u][1] = \sum max(dp[v][0], dp[v][1]);
\]

树的最小点覆盖:

\(dp[i][0]\)表示点i在点覆盖集中;\(dp[i][1]\)表示点i不在点覆盖集中
\[
dp[u][0] = 1 + \sum min(dp[v][0], dp[v][1]);\\
dp[u][1] = \sum dp[v][0];
\]

树的最小支配集:

\(dp[i][0]\)表示点i属于支配集,并且以点i为根的子树都被覆盖了的情况下支配集中所包含最少点的个数

\(dp[i][1]\)表示点i不属于支配集合,且以i为根的子树都被覆盖,且i被其中不少于一个子节点覆盖的情况下支配集所包含最少点的个数

\(dp[i][2]\)表示点i不属于支配集合,且以i为根的子树都被覆盖,且i没被子节点覆盖的情况下支配集中所包含最少点的个数.即i将被父节点覆盖
\[
dp[u][0] = 1 + \sum min(dp[v][0],dp[v][1],dp[v][2]);\\
dp[u][2] = \sum dp[v][1];dp[u][2]=min(dp[u][2],INF);\\
if(dp[v][0]<=dp[v][1]) inc = 0;(if\;0\;always\;0)\\
else\;inc = min(inc, dp[v][0]-dp[v][1]);\\
if(u\;no\;son)dp[u][1] = INF;\\
else\; dp[u][1] = \sum min(dp[v][0],dp[v][1])+inc;
\]


参考博文:Ash-ly

求树的最大独立集,最小点覆盖,最小支配集 贪心and树形dp的更多相关文章

  1. POJ-3659-最小支配集裸题/树形dp

    Cell Phone Network Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7127   Accepted: 254 ...

  2. SPOJ 1479 +SPOJ 666 无向树最小点覆盖 ,第二题要方案数,树形dp

    题意:求一颗无向树的最小点覆盖. 本来一看是最小点覆盖,直接一下敲了二分图求最小割,TLE. 树形DP,叫的这么玄乎,本来是线性DP是线上往前\后推,而树形DP就是在树上,由叶子结点状态向根状态推. ...

  3. poj-3659 Cell Phone Network(最小支配集+贪心)

    http://poj.org/problem?id=3659 Description Farmer John has decided to give each of his cows a cell p ...

  4. 树的点分治 (poj 1741, 1655(树形dp))

    poj 1655:http://poj.org/problem?id=1655 题意: 给无根树,  找出以一节点为根,  使节点最多的树,节点最少. 题解:一道树形dp,先dfs 标记 所有节点的子 ...

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

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

  6. 【题解】Luogu p2016 战略游戏 (最小点覆盖)

    题目描述 Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题. 他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能 ...

  7. HDU 1054 Strategic Game(最小点覆盖+树形dp)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=106048#problem/B 题意:给出一些点相连,找出最小的点数覆盖所有的 ...

  8. Cogs 1632. 搬运工(二分图最小点覆盖)

    搬运工 ★ 输入文件:worker.in 输出文件:worker.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] 小涵向小宇推荐了一款小游戏. 游戏是这样的,在一个n*n的地 ...

  9. POJ 3342 Party at Hali-Bula (树形dp 树的最大独立集 判多解 好题)

    Party at Hali-Bula Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5660   Accepted: 202 ...

随机推荐

  1. 「NOI2016」循环之美 解题报告

    「NOI2016」循环之美 对于小数\(\frac{a}{b}\),如果它在\(k\)进制下被统计,需要满足要求并且不重复. 不重复我们确保这个分数是最简分数即\((a,b)=1\) 满足要求需要满足 ...

  2. luoguP2709 小B的询问 [莫队]

    题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...

  3. RzGroupBar

    何分多层 procedure TForm1.FormCreate(Sender: TObject); begin RzGroup1.Items.Clear; RzGroup1.Items.Add.Ca ...

  4. 【UR #2】跳蚤公路

    [UR #2]跳蚤公路 参照yjc方法.也就是地铁环线那个题. 求每个点不在负环内的x的取值范围.然后所有1到j能到i的j的范围取交.得到答案. 每个边形如kx+b的直线,每个环也是 每个点不在负环内 ...

  5. JWT(JSON Web Token) 多网站的单点登录,放弃session 转载https://www.cnblogs.com/lexiaofei/p/7409846.html

    多个网站之间的登录信息共享, 一种解决方案是基于cookie - session的登录认证方式,这种方式跨域比较复杂. 另一种替代方案是采用基于算法的认证方式, JWT(json web token) ...

  6. 1022 Digital Library (30 分)

    1022 Digital Library (30 分)   A Digital Library contains millions of books, stored according to thei ...

  7. playbackRate控制音频播放倍速

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Java文件系统

    Java7 引入了新的输入/输出2(NIO.2)API并提供了一个新的I/O API. 它向Java类库添加了三个包:java.nio.file,java.nio.file.attribute和jav ...

  9. [已解决]报错:报错AttributeError: 'int' object has no attribute 'upper'

    原因:openpyxl版本低,需升级 pip install --upgrade openpyxl

  10. [已解决]报错UnicodeDecodeError

    输出报错: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 220: in 解决方案:将编码方式utf-8 修 ...