无向图的最大团/最大独立集
时间:2019-08-30
本文章向大家介绍无向图的最大团/最大独立集,主要包括无向图的最大团/最大独立集使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
讲解的博客:https://blog.csdn.net/SparkFucker/article/details/83051133
最大团其实就是最大完全子图的点集,同理极大团也就是极大完全子图的点集,点集内所有的点两两之间都有边相连。
定义 (维基百科):
在图论领域的一个无向图中,满足两两之间有边连接的顶点的集合,被称为该无向图的团。
最大独立集其实就是补图的最大团,因为和最大团相反,最大独立集合内的点两两之间都没有边相连。
定义(维基百科):
一个独立集(也称为稳定集)是一个图中一些两两不相邻的顶点的集合。
最大团的个数 = 补图的最大独立数
最小覆盖数+最大独立数 = 顶点数。
在二分图中,最小覆盖数 等于 最大匹配数, 而最大独立数又等于 顶点数减去最小覆盖数
求解方法:
一.暴力法求最大团的点集---dfs
例题:hdu 1530
#include<bits/stdc++.h> using namespace std; const int masn=2e6+10; int mp[55][55],n; vector<int> best; vector<int> a; void dfs(int pos)//下标 { if(pos>=n+1) { if(best.size()<=a.size()) best=a; return; } //判断是否可以在团内 int flag=0;//表示可以 for(int i=0;i<a.size();i++){ if(!mp[pos][a[i]])//注意:第二个方括号里面是a[i] { flag=1;//表示不可以 break; } } if(a.size()+(n-pos)>=best.size()){//剪枝操作 有可能a元素比best多就进行 if(!flag){ a.push_back(pos); dfs(pos+1);//尝试插入该点 a.pop_back(); } dfs(pos+1);//尝试不插入该点 } } int main() { while(~scanf("%d",&n)&&n){ a.clear(); best.clear(); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { scanf("%d",&mp[i][j]); } dfs(1); cout<<best.size()<<endl; } }
Bron-Kerbosch 算法
原文地址:https://www.cnblogs.com/Aiahtwo/p/11437031.html
- rpc框架: thrift/avro/protobuf 之maven插件生成java类
- WebComponent魔法堂:深究Custom Element 之 从过去看现在
- 数据可视化-EChart2.0使用总结1
- JavaScript事件概览
- gradle项目与maven项目相互转化
- rpc框架之gRPC 学习 - hello world
- Angular Service入门
- spring:如何用代码动态向容器中添加或移除Bean ?
- WebComponent魔法堂:深究Custom Element 之 标准构建
- druid 数据源 使用属性文件的一个坑
- Angular企业级开发(3)-Angular MVC实现
- spring: 加载远程配置
- java:如何让程序按要求自行重启?
- Angular学习-指令入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法