不要去百度百科找最大团,因为你会找到一个团购网站= = 维基百科:https://en.wikipedia.org/wiki/Clique_problem
首先,团是什么呢? 团就是一个点集,点集中任意两点都有直接的边相连 举个栗子: 图中红色的点构成了一个团,当然单独一个点也算是一个团。
那么,独立子集又是什么呢? 和团正好相反,独立子集也是一个点集,但是任意两点之间都没有直接的边相连…… 再举个栗子……
图中绿色的点构成了一个独立子集,你说一个点是一个独立子集我也没意见……
那么,最大团和最大独立子集怎么求呢? 首先最大独立子集和最大团正好相反,所以最大独立子集的数目就是这个图的“补图”的最大团…… (补图就是一张图有边的改成没边,没边的改成有边……) 于是最大独立子集问题转化成最大团问题
最大团又怎么求呢??? 最大团其实是个NP完全问题……目前常用的算法是搜索+优化和随机化…… 这里介绍随机化算法(适合懒人……) 把点组成随机组成一个排列,然后从前往后暴力找……首先第一个点可以组成一个最大团,然后加入第二个,看看是不是,如果是,加入第三个,如果不是,不加入第二个,直接加入第三个……这样跑一边是n^2的,但是答案并不一定正确,所以需要多次随机,然后取max…… 这样的准确性还是挺高的,代码也不难打,这里还是贴出来吧……(代码风格鬼畜,请做好心理准备!!!)
#include
#include
#include
#include
using namespace std;
bool a[120][120];
int b[120];
bool p[120];
int n,m,x,y;
void RANDOM()
{
srand(time(0));
for(int i = 1;i m;
for(int i = 1;i > x >> y;
a[x][y] = 1;
a[y][x] = 1;
}
for(int i = 1;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?