博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
陈丹琪《弦图与区间图》总结
阅读量:6227 次
发布时间:2019-06-21

本文共 1758 字,大约阅读时间需要 5 分钟。

弦(chord):连接环中不相邻的两个点的边。

弦图(chordalgraph):一个无向图称为弦图当且仅当图中任意长度大于3的环都至少有一个弦。

单纯点(simplicialvertex):设N(v)表示与点v相邻的点集。一个点称为单纯点当{v} + N(v)的诱导子图为一个团。

完美消除序列(perfect elimination ordering):这是一个序列{v[i]},它满足v[i]在{v[i..n]}的诱导子图中为单纯点。

弦图的判定:存在完美消除序列的图为弦图。可以用MCS最大势算法求出完美消除序列。

 

最大势算法 Maximum Cardinality Search

从n到1的顺序依次给点标号(标号为i的点出现在完美消除序列的第i个)。

设label[i]表示第i个点与多少个已标号的点相邻,每次选择label[i]最大的未标号的点进行标号。

用n个vector来保存label为i的是哪些点,可以使复杂度达到O(n+m)。

 

弦图上的问题:

用最少的颜色给每个点染色使得相邻的点染的颜色不同:完美消除序列从后往前依次给每个点染上可以染的最小的颜色。

1 #include
2 #include
3 #include
4 #include
5 #define MAX(a,b) a>b?a:b 6 #define MIN(a,b) a
vec[N];15 void add(int u,int v)16 {17 e[++ee]=v;nex[ee]=head[u];head[u]=ee;18 }19 int main()20 {21 scanf("%d%d",&n,&m);22 rep(i,m)23 {24 scanf("%d%d",&u,&v);25 add(u,v);26 add(v,u);27 }28 best=0;29 for (i=1;i<=n;i++)30 vec[0].push_back(i);31 for (i=n;i>=1;i--)32 {33 while (1)34 {35 u=vec[best].back();36 if (vis[u])37 vec[best].pop_back();38 else39 break;40 while (vec[best].size()==0)41 best--;42 }43 a[i]=u;44 vis[u]=1;45 for (j=head[u];j>0;j=nex[j])46 {47 lab[e[j]]++;48 best=MAX(lab[e[j]],best);49 vec[lab[e[j]]].push_back(e[j]);50 }51 }52 //for (i=1;i<=n;i++)printf("lbz %d\n",a[i]);53 54 for (i=n;i>=1;i--)55 {56 for (j=head[a[i]];j>0;j=nex[j])57 {58 b[c[e[j]]]=i;59 } 60 rep(j,n)61 if (b[j]!=i)62 {63 c[a[i]]=j;64 ans=MAX(ans,c[a[i]]);65 break;66 }67 }68 printf("%d\n",ans);69 return 0;70 71 }
栗题:1006: [HNOI2008]神奇的国度

 

 最大独立集:完美消除序列从前往后能选就选。

 

判断一个序列是否为完美消除序列:设{vi+1,…,vn}中所有与vi相邻的点依次为vj1,…, vjk。只需判断vj1是否与vj2,…, vjk相邻即可。

 

区间图(Interval Graph):给定一些区间,定义一个相交图为每个顶点表示一个区间,两个点有边当且仅当两个区间的交集非空。

区间图一定是弦图。

给定n个区间,所对应的区间图为G
G的一个完美消除序列:将所有的区间按照右端点从小到大排序。

转载于:https://www.cnblogs.com/lbz007oi/p/5993590.html

你可能感兴趣的文章
Hibernate 、Hql查询和Criteria查询
查看>>
滚动条滚动到底部触发事件
查看>>
『SharePoint 2010』Sharepoint 2010 Form 身份认证的实现(基于SQL)
查看>>
python之模块pydoc
查看>>
ASP.NET MVC 下拉列表使用小结
查看>>
nodejs基础 -- NPM 使用介绍
查看>>
Loadrunner中关联的作用:
查看>>
(转)BT1120接口及协议
查看>>
Robot Framework与Web界面自动化测试学习笔记:定位到新窗口
查看>>
The Dataflow Model 论文
查看>>
Linux守护进程
查看>>
遇到没“人性”的管理:你真可怜!
查看>>
http://www.bootcss.com/p/font-awesome/
查看>>
新浪微博UWP UI意见征求
查看>>
使用ServiceStack构建Web服务
查看>>
Linqer工具
查看>>
table中超过长度的列,显示省略号
查看>>
Qtcreator中经常使用快捷键总结
查看>>
可扩展Web架构与分布式系统(转)
查看>>
KVM虚拟机的安装
查看>>