给定有一个无向图,找出最大团个数。

最大团也就是该图中最大的完全图(各顶点之间都有边)。

算法思想:设p为所有点集的集合,依次取出p中的顶点作为团的起始点,也就是以该点为起点开始拓展,每次查看相邻顶点是否与团内各点联通,若true,则加入该点。
为了进一步降低时间复杂度,采取记忆化递归的方式,从后向前遍历顶点,用cnt数组记录该点以后所成最大团的个数,以此知该点的潜力,达到剪枝的效果。

#include<bits/stdc++.h>
using namespace std;
#define maxm 55
int g[maxm][maxm];//存图
int vis[maxm];//存放已选择的点
int cnt[maxm];//cnt[i]表示用编号>=i的点能组成的最大团的点数
int ans, n;
bool dfs(int cur, int num) {//从第cur个点开始向后添加,当前点是第num个for (int i = cur + 1; i <= n; i++) {if (cnt[i] + num <= ans)//当前点后的所有点组成的最大团的最大点数+已经加入的点数<=当前最佳答案(最好的情况都不可能超过当前最优解,则进行剪枝)return 0;if (g[cur][i])//两点相邻{int ok = 1;for (int j = 0; j < num; j++)//是否和当前已经加入团的所有点相邻if (!g[i][vis[j]]){ok = 0;break;}if (ok) {//当前点可以加入团中vis[num] = i;if (dfs(i, num + 1))//第一次dfs成功的一定是最大的return 1;}}}ans = max(ans, num);return (ans == max(num, ans) ? 0 : 1);
}
void maxclique() {for (int i = n; i > 0; i--){vis[0] = i;dfs(i, 1);cnt[i] = ans;}
}
int main()
{cin >> n;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) {cin >> g[i][j];g[j][i] = g[i][j];}maxclique();cout << cnt[1];return 0;
}
/*
5
1 1 0 1 1
1 1 1 0 1
0 1 1 0 1
1 0 0 1 1
1 1 1 1 1
*/

分支限界——最大团问题相关推荐

  1. 最大团问题-分支限界

    问题描述: 给定无向图G=(V, E),其中V是非空集合,称为顶点集: E是V中元素构成的无序二元组的集合,称为边集,无向图中的边均是顶点的无序对,无序对常用圆括号"( )"表示. ...

  2. 作业12——分支限界解决最大团和图m着色问题

    1.问题 最大团:求一张无向图的最大团.团的定义:给定图G=(V,E),其中,V={1,-,n}是图G的顶点集,E是图G的边集,图G的团就是一个两两之间有边的顶点集合,团是G的一个完全子图.如果一个团 ...

  3. 中北大学算法分析与设计实验报告六(最大团问题)

    中北大学算法分析与设计实验报告六(最大团问题) 1.实验名称 实验六 回溯与分支限界算法实验 2.实验目的 题目:最大团问题 强化学生利用回溯算法和优化处理实际问题的能力. 3.训练知识点集群 (1) ...

  4. 2022-2028年中国团购行业投资分析及前景预测报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了团购行业相关概述.中国团购行业运行环境.分析了中国团购行业的现状.中 ...

  5. 消息延迟队列处理拼团时间到期

    1.RabbitMqConfig /*** * 延时队列交换机* * 注意这里的交换机类型:CustomExchange* ** * @return* */ @Bean public CustomEx ...

  6. 飞桨领航团 x Datawhale联合Meetup来了!杭州的小伙伴可以见面了!

    Datawhale线下 主办:百度飞桨,Datawhale 飞桨领航团是飞桨开发者的兴趣社区,为开发者们提供丰富的本地技术沙龙.Meetup.及线上交流平台,面向所有对人工智能及深度学习领域感兴趣的开 ...

  7. 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...

    刚打开红黑看到J8基友写的一个{易想团购系统 最新版 通杀}的文章,看他贴的代码里面有个get_client_ip()函数,哈哈,我猜没过滤,果断下了一套程序, 找到get_client_ip()函数 ...

  8. HDU1530(最大团问题)

    1定义: 其中,形式参数t表示第t个顶点,Place(t)用来判断第t个顶点能否放入团里.二维数组a[][]是图的邻接矩阵.一维数组x[]记录当前解.搜索到第t层时,从第1 个顶点用第t-1个顶点的状 ...

  9. 解题报告:luogu P2423 [HEOI2012]朋友圈【最大团转最大点独立集(匈牙利算法+时间戳优化)】

    图的最大团:"任意两点之间都有一条边相连"的子图被称为无向图的团,点数最多的团为图的最大团 朋友圈中任意两个点之间都有关系,既是图中的团. 答案就是图中的最大团. 我们如果把B国的 ...

最新文章

  1. P1912 [NOI2009]诗人小G
  2. Windows热键注册(反汇编方法 查看win32api 原理)
  3. 【C language】C语言感悟之const
  4. 计算机科学在航空航天仿真模拟,2016年南京航空航天大学计算机科学与技术学院541计算机综合基础之数据结构复试笔试仿真模拟题...
  5. Resource stopwords not found. Please use the NLTK Downloader to obtain the r
  6. Windows下批量删除svn配置文件夹.svn
  7. 如何使div像星星一样,简易demo,授人以鱼,自行更改完善
  8. MVC3中的视图文件
  9. php rabbitmq demo
  10. JS取消浏览器文本选中的方法
  11. Exchange 2013 、Lync 2013、SharePoint 2013 三
  12. 入职半年小结 | 给应届校招算法同学的几点建议
  13. 一维热传导问题与C++描述
  14. 你的系统可靠性和可用性是几个9?
  15. L1W3 用1层隐藏层的神经网络分类二维数据
  16. IDV VDI TCI RDS区别
  17. Android关闭输入法
  18. app爬虫之航班数据获取
  19. 从vivo Photo Lab“影像实验室”透视门店新价值
  20. Latex 字体的设置

热门文章

  1. 取出datatable的某一行_jquery dataTable 获取某行数据
  2. 前端热门图书推荐,含个人心得体会与阅读顺序指南
  3. 【历史上的今天】5 月 7 日:索尼诞生;Bungie 成立;数据排序结构先驱出生
  4. 中心化金融机构频现信任危机?DeFi或成金融最终形态
  5. 时间处理(仿朋友圈、微博发布时间)
  6. android u盘广播路径,android6.0 外部存储设备插拔广播以及获取路径(U盘)
  7. exonerate结果文件提取(蛋白序列)
  8. 初识Markdown
  9. 《iPhone X ARKit Face Tracking》
  10. python爬取双色球数据+数据统计