弦图判定及最小染色数 弦图:所有长度大于3的环均有弦的图叫弦
来源:互联网 发布:形容程序员的搞笑图片 编辑:程序博客网 时间:2024/06/01 09:52
【转】弦图判定及最小染色数
弦图:所有长度大于3的环均有弦的图叫弦图。
完美消除序列:一个序列{v1,v2,…,vn},满足{vi+1,vi+2,…,vn}中与vi相邻的点的诱导子图为完全图。
弦图的判定(ZOJ 1015)可以采用MCS算法:
基于定理:一个图无向图是弦图当且仅当它有完美消除序列。
首先找出消除序列:
0.i=n
1.找到一个u∈{j|label[j]=max{label[k]}(k为未标号点)},order[u]=i
2.--i,所有与u相邻的v且++label[v],回到1
也就是说,每次找现有未标号的点中,与已标号的点相邻最多的那个,标号。
然后判断该序列是否是完美消除序列:
对于每一个vi,找到{vi+1,vi+2,…,vn}中与vi相邻的标号最小的点vj,判断其它{vi+1,vi+2,…,vn}中与vi相邻的点是否与vj相邻,若不相邻则不是完美消除序列。
最小染色数(HNOI2008 神奇的国度)可以这样做:
在完美消除序列基础上,从最大标号开始,贪心地染色,最后用了几种颜色即为答案。
只是我想不通为什么CDQ那份PPT里说MCS和染色的复杂度是O(n+m),我只会写O(n^2+m)的…
完美消除序列:一个序列{v1,v2,…,vn},满足{vi+1,vi+2,…,vn}中与vi相邻的点的诱导子图为完全图。
弦图的判定(ZOJ 1015)可以采用MCS算法:
基于定理:一个图无向图是弦图当且仅当它有完美消除序列。
首先找出消除序列:
0.i=n
1.找到一个u∈{j|label[j]=max{label[k]}(k为未标号点)},order[u]=i
2.--i,所有与u相邻的v且++label[v],回到1
也就是说,每次找现有未标号的点中,与已标号的点相邻最多的那个,标号。
然后判断该序列是否是完美消除序列:
对于每一个vi,找到{vi+1,vi+2,…,vn}中与vi相邻的标号最小的点vj,判断其它{vi+1,vi+2,…,vn}中与vi相邻的点是否与vj相邻,若不相邻则不是完美消除序列。
最小染色数(HNOI2008 神奇的国度)可以这样做:
在完美消除序列基础上,从最大标号开始,贪心地染色,最后用了几种颜色即为答案。
只是我想不通为什么CDQ那份PPT里说MCS和染色的复杂度是O(n+m),我只会写O(n^2+m)的…
zoj1015,joj1036 弦图的判定
2012-04-11 11:21:08| 分类: 数据结构——图论|字号 订阅
弦图判断
分类: 图论2008-04-04 19:41 349人阅读 评论(0) 收藏 举报
graph算法c
定义:
无向图中,如果任意边数大于3的环,至少存在一条边连接环中不相邻的某两
个点,则称此图为弦图(Chordal Graph)。
zoj1015的题目:
判断无向图是否为弦图,是则输出Perfect,否则输出Imperfect。
以下是时间复杂度为O(n+m)的算法,n是图的点数,m是图的边数。
第一步:给节点编号
设已编号的节点集合为A,未编号的节点集合为B
开始时A为空,B包含所有节点。
for num=n-1 downto 0 do
{
在B中找节点x,使与x相邻的在A集合中的节点数最多,将x编号为num,
并从B移入A
}
第二步:检查
for num=0 to n-1 do
{
对编号为num的节点x,设所有编号大于num且与x相邻的节点集合为C,
在集合C中找出编号最小的节点y,如果集合C中存在不等于y的节点z,
且y与z间没有边,则此图不是弦图,退出。
}
检查完了,则此图是弦图。
无向图中,如果任意边数大于3的环,至少存在一条边连接环中不相邻的某两
个点,则称此图为弦图(Chordal Graph)。
zoj1015的题目:
判断无向图是否为弦图,是则输出Perfect,否则输出Imperfect。
以下是时间复杂度为O(n+m)的算法,n是图的点数,m是图的边数。
第一步:给节点编号
设已编号的节点集合为A,未编号的节点集合为B
开始时A为空,B包含所有节点。
for num=n-1 downto 0 do
{
在B中找节点x,使与x相邻的在A集合中的节点数最多,将x编号为num,
并从B移入A
}
第二步:检查
for num=0 to n-1 do
{
对编号为num的节点x,设所有编号大于num且与x相邻的节点集合为C,
在集合C中找出编号最小的节点y,如果集合C中存在不等于y的节点z,
且y与z间没有边,则此图不是弦图,退出。
}
检查完了,则此图是弦图。
- 弦图判定及最小染色数 弦图:所有长度大于3的环均有弦的图叫弦
- 大于一个数的最小回文数
- 有序数组长度为N 元素出现的长度为 大于等于 N 除 4 的最小的数
- 权重 相等大于N的最小数
- 大于N的最小回文数
- 大于N的最小回文数
- 获取长度大于某个值的所有行
- 打印长度大于10字符的所有输入行
- 打印长度大于80个字符的所有输入行。
- 求大于一个数的最小对称数
- 找出大于一个数的最小回文数
- poj 1734 Floyd输出路径(长度大于等于3的最小圈)
- 求出现次数大于数组长度一半的那个数
- [BZOJ1006][HNOI2008]神奇的国度(弦图最小染色)
- [弦图最小染色] BZOJ1006: [HNOI2008]神奇的国度
- BZOJ 1006-神奇的国度(弦图最小染色)
- 查找大于一正整数的最小的不重复数
- 大于N的最小回文数 HNUST 1274
- 文件/目录权限设置命令:chmod
- POJ 2449 A* K短路
- hdu1087 Super Jumping! Jumping! Jumping!(简单动态规划)
- 百练OJ 2746 约瑟夫问题
- 2013-7-30 linux
- 弦图判定及最小染色数 弦图:所有长度大于3的环均有弦的图叫弦
- C# 对象池的实现(能限制最大实例数量,类似于WCF的MaxInstanceCount功能)
- 索引概念
- Xcode 4.5 key binding (delete current line)
- POJ 1639 Picnic Planning【度限制最小生成树】
- 请回答下 一个大学生的疑惑。
- 线程控制--互斥锁与条件变量
- C/C++中的内存分区及堆栈相关知识
- hdu 4628 ——Pieces