问题描述

完全子图:给定无向图G=(V,E)。如果U<=V,且对任意u,v<=U有(u,v)<=E,则称U是G的完全子图。
:G的完全子图U是G的团当且仅当U不包含在G的更大的完全子图中。
G的最大团:是指G中所含顶点数最多的团。

{1,2}是G的完全子图,但不是团,因为它被更大的完全子图
{1,2,5}包含。{1,2,5}、{1,4,5}和{2,3,5}都是最大团。

思路

解空间:子集树
可行性约束函数:顶点i到已选入的顶点集中每一个顶点都有边相连。
限界函数:有足够多的可选择顶点使得算法有可能在右子树中找到更大的团。
复杂度分析:最大团问题的回溯算法backtrack所需的
计算时间显然为O(n2n)。

输入

第一行输入一个数n,表示图的顶点数
第二行到第n+1行表示图的邻接矩阵

5
0 1 0 1 1
1 0 1 0 1
0 1 0 0 1
1 0 0 0 1
1 1 1 1 0

输出

输出有两行
第一行表示最优值,最大团的顶点数
第二行表示最优解,最大团中的顶点编号,每一个编号中间有一个空格

3
1 2 5

代码

#include <iostream>
using namespace std;
int m[101][101];//有向图的邻接矩阵
int x[101];//当前团的解
int bestx[101];//最优解
int n;//表示图的顶点数
int cn=0;//当前团的大小
int bestn;//当前最优值
void getbestn(int i)
{if(i>n){//递归出口,到根节点时,更新最优值和最优解,返回bestn=cn;//更新最优值for(int j=1;j<=n;j++)bestx[j]=x[j];return ;//返回}x[i]=1;//先假定x[i]=0;for(int j=1;j<i;j++){if(x[j]==1&&m[i][j]==0){x[i]=0;//如果该点与已知解中的点无边相邻break;//则不遍历左子树}}if(x[i]==1){//当且仅当x[i]==1时,遍历左子树cn++;//该点加入当前解getbestn(i+1);//递归调用cn--;//还原当前解}x[i]=0;//假定x[i]==0if(cn+n-i>bestn){//如果当前值+右子树可能选择的节点<当前最优解,不遍历左子树x[i]=0;getbestn(i+1);}return ;
}
int main()
{cin>>n;//输入图的顶点数//输入图的邻接矩阵for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>m[i][j];//求最优解getbestn(1);cout<<bestn<<endl;//输出最优值//输出for(int i=1;i<=n;i++)if(bestx[i])cout<<i<<" ";//输出最优解return 0;
}

最大团问题回溯法求解相关推荐

  1. 【算法分析】实验 4. 回溯法求解0-1背包等问题

    目录 实验内容 实验目的 实验结果 步骤1:描述与分析 步骤2:策略以及数据结构 步骤3 步骤4 步骤5 步骤6 实验总结 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述.算法设 ...

  2. java背包算法回溯法_【算法分析】实验 4. 回溯法求解0-1背包等问题

    [TOC] 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述.算法设计.算法描述.算法正确性证明.算法分析.算法实现与测试),通过回溯法的在实际问题求解实践中,加深理解其基本原理和 ...

  3. 回溯法求解N皇后问题(Java实现)

    回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并以此慢慢地扩大问题规模,迭代地逼近最终问题的解.这种迭代类似于穷举并且是试探性的,因为当目前的可 ...

  4. php生成迷宫图片,PHP实现基于回溯法求解迷宫问题的方法详解

    本文实例讲述了PHP实现基于回溯法求解迷宫问题的方法.分享给大家供大家参考,具体如下: 引言 最近在leetcode上看了些算法题,有些看着很简单的很常用的东西,竟然一下子想不出来怎么求解,比如说:实 ...

  5. 回溯法求解图着色问题

    回溯法求解图着色问题 #include <iostream> #include <cstdlib> using namespace std; #define n 5 #defi ...

  6. 回溯法求解N皇后问题及其时间复杂度分析

    回溯法求解N皇后问题及其时间复杂度分析 一.回溯法简介 1. 什么是回溯法? 2. 回溯法的时间复杂度分析 蒙特卡罗方法 蒙特卡罗方法在回溯法求解时间复杂度中的应用 二.回溯法求解N皇后问题 1. 回 ...

  7. 算法设计与分析 实验三 回溯法求解地图填色问题

    回溯法求解地图填色问题 一.实验目的与要求 1.实验基本要求: 2.实验亮点: 二.实验内容与方法 三.实验步骤与过程 1.未优化的回溯: (1)算法描述: (2)编程实现 (3)运行并测试: 2.对 ...

  8. 回溯法求解0-1背包问题

    回溯法求解0-1背包问题时比较随机序列和按 v/w 降序排列的算法 问题描述: 针对0-1背包问题,尝试用回溯法. 物品总数N=10,背包容量 C=26, 物品的重量数组为w={7,3,10,12,1 ...

  9. 回溯法 | 求解装载问题

    问题描述: 有 n 个集装箱要装上一艘载重量为 W 的轮船,其中集装箱 i (1<=i<=n) 的重量,为wi.子啊装在体积不受限制的情况下,将尽可能重的集装箱装上轮船,当重量相同时要求选 ...

  10. n皇后问题-回溯法求解

    n皇后问题-回溯法求解 1.算法描述 在n×n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. n皇后是由八皇后问题演变而来的.该问题 ...

最新文章

  1. c语言logout_C++ 格式化日志输出实现代码
  2. R语言gganimate包创建可视化gif动图、并使用anim_save函数保存可视化gif动图(gganimate export to gif)
  3. leetcode算法题--链表中倒数第k个节点
  4. 自己封装线程(Demo)
  5. centos+nginx+php+mysql(经典架构流程案例)
  6. 十招教你学会软件破解(转)
  7. [2017.11.11特辑]以一个光棍节表白案例浅谈ECMAScript6模块化的使用方法
  8. 两个SEO技巧让你的网站排名靠前
  9. 深入研究memcache 特性和限制
  10. 三星Galaxy S22 Ultra发布推迟:此前至少5款骁龙8平台旗舰亮相
  11. VC网络编程实战视频教程
  12. 个人记录——洛谷试炼场,BOSS战!【新手村】
  13. Panel控件—让你的界面变好看
  14. 基于superslide的导航栏 效果切换
  15. 三角网导线平差实例_导线平差自动计算表(非常实用)
  16. F-星球大战 几何 割线定理 精度
  17. 判断一个月之前的是星期几
  18. 采购预制发票MIR7 发票校验屏幕格式调整
  19. Q_01_06 狄拉克符号
  20. crc16的c语言详解,自己整理CRC16 C语言 笔记

热门文章

  1. Maven引入数据库JDBC驱动
  2. SPSS——相关分析——偏相关(Partial)分析
  3. 关于websocket兼容IE版本
  4. 关闭绿联硬盘盒子自动休眠的方法!
  5. java和eova的关系_Eova 1.1 发布,Java Web 快速开发平台
  6. jfinal解决跨域(eova和jfinal)
  7. visio画图导入word公式符号发生变形
  8. Git小乌龟分支操作
  9. SQL语句设置标识种子
  10. 使用C++刷算法题的简明教程