图论 最大团,最大独立集
经典的NP完全问题,只有暴力解,时间复杂度O(n2^n)
对于无向图来说
所谓最大团, 其实就是找一个最大完全子图,最大就是包含的点最多.
而最大独立集 == 补图的最大团
这里使用深度优先搜索实现,对于每一个结点,考虑要与不要两种状态,则问题构成一个子集树,本质上与01背包一样,只不过多了联通性的判断
#include <bits/stdc++.h>
const int SIZE = 55;
int Graph[SIZE][SIZE];
//int bestx[SIZE]; //记录最大的团
int inset[SIZE];//当前用到的的结点
int cn,bestn;//当前的节点数量 ,, 当前最大的节点数量
int n;void DFS( int i ){if ( i > n ) {//此处可以记录最大团bestn = cn;return;}int flag = 1;for (int j = 0 ;j < cn;++j )if ( Graph[i][inset[j]] == 0){flag = 0;break;}if ( flag ) {inset[cn++] = i;DFS( i+1 );cn--;}if ( cn + n - i > bestn )DFS(i+1);
}
void init() {//memset(Graph,0,sizeof(Graph));//memset(x,0,sizeof(x));memset(inset,0,sizeof(inset));bestn = cn = 0 ;
}int main(){while ( ~scanf("%d",&n) && n ){init();for (int i = 1;i <= n;++i )for (int j = 1;j <= n;++j )scanf("%d",&Graph[i][j]);DFS(1);int ans = bestn;printf("%d\n",ans);}return 0;
}
图论 最大团,最大独立集相关推荐
- 无向图的最大团/最大独立集 算法总结
无向图的最大团/最大独立集 算法总结 目录 概述 普通DFS Bron-Kerbosch算法 概述 最大团其实就是最大完全子图的点集,同理极大团也就是极大完全子图的点集,点集内所有的点两两之间都有边相 ...
- 图论——最大团问题和最大独立集、二分图相关
文章目录 最大团问题和最大独立集 二分图.用网络流解决最大二分匹配的方法 一种另类的增广路--交替路.匈牙利算法 一般图.二分图中的其它性质 P1640 [SCOI2010]连续攻击游戏 最大团问题和 ...
- 无向图的最大团/最大独立集
讲解的博客:https://blog.csdn.net/SparkFucker/article/details/83051133 还没写完的代码: #include<iostream> # ...
- 图论 —— 最大团问题
[问题描述] 当 G′ 是图 G 的子图,且 G′ 是关于 V′ 的完全图时,子图 G' 为图 G 的团:当 G' 是团,且不是其他团的子集时,G' 为图 G 的极大团:当 G' 是极大团时,且点数最 ...
- Bron–Kerbosch算法求一般图最大团/最大独立集
最大团: V中取K个顶点,两点间相互连接 最大独立集: V中取K个顶点,两点间不连接 最大团数量 = 补图中最大独立集数 关于 Bron-Kerbosch算法(原文) 基础形式是一个递归回溯 ...
- 回溯、图论——最大团问题(求最大完全子图)
1.问题分析 要想解决最大团问题,也就是求最大完全子图.我们需要了解相关概念,现在有如下图: (1)完全子图: 给定无向图G=(V,E),其中V是顶点集,E是边集.G'=(V',E')如果顶点集V' ...
- [图论总结] 最大独立集(例题:Code Names)
[图论总结1] 最大独立集的概念 独立集 匹配 概念之间的关系及性质 例题 最大独立集的概念 独立集 来自oi-wiki 在上面的描述中,V是代表的点集,而E代表的是边集 独立集以及最大独立集均是点的 ...
- 最大团与最大独立集(递推法+dfs两剪枝求最大团)
传送门 最大团:从无向图的顶点集中选出k个并且k个顶点之间任意两点之间都相邻(完全图),最大的k就是最大团 最大独立集:从无向图中的顶点中选出k个并且k个顶点之间互不相邻,最大的k就是最大独立集 性质 ...
- 图论——强连通分量(Tarjan算法)
文章目录 强连通分量 利用Tarjan算法求强连通分量 来一道例题练手(USACO08DEC) 图论文章汇总 强连通分量 什么是强连通图? 如果一个有向图中,存在一条回路,所有的结点至少被经过一次,这 ...
最新文章
- 19年BAT常问面试题汇总:JVM+微服务+多线程+锁+高并发性能
- python入门(一)
- Servlet中乱码问题
- 小马哥spring编程核心思想_Spring源码高级笔记之——Spring核心思想
- 第一个 PyQt5程序
- 正视长尾挑战!颜水成、冯佳时团队发布首篇《深度长尾学习》综述
- Vue_异步加载_vue-resource(不再维护)
- 关于搞技术的一点思考
- Java实现蛇形矩阵
- 关于cmp函数参数中的符号(转)
- execute与executeUpdate的区别
- 阮一峰:WebSocket 教程
- 【Java系列】八大排序算法
- 国家知识产权局 下载专利全文
- 怎样的男女才是最合适的
- 第三阶段应用层——1.7 数码相册—电子书(3)—轮询方式支持多输入
- 强大的Pidgin,Pidgin的使用
- 10年程序员私单的经历,送你3个找客户的关键技巧
- 工作日记---android lockscreen.java 在lock状态下显示charing和alarm
- 【akka】Akka源码分析-Event Bus