算法复习:最大团问题(回溯法和分支限界法)
来源:互联网 发布:淘宝怎么凑单 编辑:程序博客网 时间:2024/06/06 20:24
问题描述
给定无向图G=(V,E),V是顶点集,E是边集。如果U
2、一个例子
–子集{1,2}是G的一个大小为2的完全子图,但不是一个团,因为它包含于G的更大的完全子图{1,2,5}中。{1,2,5}、{1,4,5}和{2,3,5}都是G的最大团。
A 回溯法:
·问题空间(input):
-G=(V,E)
·解空间(output):
-图G的顶点集V的子集选取问题,Xi
-约束函数:团的定义
-目标函数:所含顶点数最多
·解空间树(所有可能解的结构):
-子集数(因为这是一个子集选取问题)
·搜索空间(最优解的求解过程):
-约束函数 顶点i到已选入的顶点集中每一个顶点都有边相连。
-限界函数 有足够多的可选择顶点使得算法有可能在右子树中找到更大的团。
下面是根据图构造出来的树(没有构造完,虚线的地方可以继续往下画,相应的下面的表也是):
cn是当前顶点数,bestn是当前最大顶点数
下面的表是搜索过程:
Xi分别代表五个点,值为0代表没有选入顶点集U,值为1代表已选入顶点集U。
3、算法部分代码
int **a //图G的邻接矩阵int n //图G的顶点数int *x //当前解int *bestx //当前最优解int cn //当前顶点数int bestn //当前最大顶点数void MaxClique(int i){ if (i > n) //到达叶节点,更新最优值和最优解 { for (int j = 1;j <= n;j++) bestx[j] = x[j]; bestn = cn; return; //搜索扩展节点时,检查顶点i与当前团的连接 } int OK = 1; for (int j = 1;j < i;j++)//扫描当前团 if (x[j] && a[i][j] == 0)//i与当前团的顶点j不相连 { OK = 0; break; } if (OK)//顶点i与当前团的每个顶点均有连接,进入左子树 { x[i] = 1;//状态更新 cn++; MaxClique (i + 1); x[i] = 0;//输出叶节点后,搜索右子树之前的状态恢复(即回溯指搜索右子树) cn--; } if (cn + n - i > bestn)//进入右子树 { x[i] = 0; MaxClique(i + 1); }}
4、算法效率
解最大团问题的回溯算法所需的计算时间为O(n
B 分支限界法
优先队列式分支限界法
还是上面那题,图片再复制到这里
·解空间和解空间树都没变
·剪枝
-左子树:从顶点i到已选入的顶点集中每一个顶点都有边,否则剪枝
-右子树:顶点数上界小于当前最优值(就是上面的bestn)时剪枝
顶点数上界=已确定的顶点数+未确定的顶点数的上界
·优先队列中节点的优先级
-顶点数上界
解空间树如下:
现在懂节点上那两数字相加啥意思了吧
树搜索的过程如下表:
所以,这已经很明白了,回溯法求解搜索树是深度优先,先一条道走到底,再回溯找其他的看是不是比得到的最优,而分支限界是广度优先,一层一层往下找,中间不断排除不符合的,找到最下面一层就得到了最优解。
- 算法复习:最大团问题(回溯法和分支限界法)
- 算法java实现--分支限界法--最大团问题
- 分支限界法之最大团问题
- 最大团问题-分支限界算法
- 0037算法笔记——【分支限界法】最大团问题
- 0037算法笔记——【分支限界法】最大团问题
- 算法复习笔记(回溯法,分支限界法)
- 算法分析与设计复习-回溯法和分支限界法
- 复习五大算法:分治法、动态规划算法、贪心算法、回溯法和分支限界法
- 研究生课程 算法分析-回溯法和分支限界法
- 算法(五):回溯法和分支限界法
- 研究生课程 算法分析-回溯法和分支限界法
- 回溯法与分支限界算法
- 回溯算法与分支限界法
- 回溯法和分支限界法
- 分支限界和回溯法的对比
- 算法java实现--回溯法--最大团问题
- 0030算法笔记——【回溯法】最大团问题和图的m着色问题
- iOS-沙盒路径
- 1007. Maximum Subsequence Sum (25)
- 对象序列化
- java获取cpu、内存、硬盘信息
- Java 7之基础 - 强引用、弱引用、软引用、虚引用
- 算法复习:最大团问题(回溯法和分支限界法)
- Linux系统中采用Atlas+Keepalived实现MySQL读写分离、负载均衡
- C++中 #ifdef 和#endif的作用
- 汇编语言(三)内存拷贝问题 以及 汇编数据 不能以字母打头
- poj 2506 Tiling
- 逻辑斯蒂回归模型
- 做内心强大的女子:不念过往,不惧将来
- Activity启动模式解析
- 《欢乐颂》的引经据典