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

这篇具有很好参考价值的文章主要介绍了中北大学算法分析与设计实验报告六(最大团问题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1.实验名称

实验六 回溯与分支限界算法实验

2.实验目的

题目:最大团问题
强化学生利用回溯算法和优化处理实际问题的能力。

3.训练知识点集群

(1)根据实验内容设计算法伪代码进行算法描述;
(2)利用C++/C/Java等编程语言对算法伪代码进行工程化实现;
(3)输入测试用例对算法进行验证;
(4)列出算法时间复杂度模型并与计算机运行统计时间进行对比分析。

4.实验内容

给定一个无向图G=(V,E)。若 ,且对任意的,都有边 ,则称U是图G的一个完全子图。G的完全子图U是一个图,当且仅当U不包含在G的更大的完全子图中。G的最大团是指包含顶点数最多的团。对给定的无向图,找出最大团中定点的个数。

5.实验原理

算法思路:
首先最大团是一个空团(即不包含任何一个顶点的团),然后把每一个顶点依次加入团中。加入当前顶点i时,需要考虑当前顶点i是否与所有已经加入团的顶点邻接。如果不邻接,直接跳过该顶点,考虑下一个顶点。如果邻接,还需要考虑两种情况:一种是把当前顶点i加入团中,然后递归考虑后面的顶点;另一种是不把当前顶点i放入团中,然后递归考虑后面的顶点。直到所有的顶点都考虑完后,判断当前的最有解是否比之前的最优解更优。如果更优,用当前最优解替代之前的最优解,回溯;如果不是更优,回溯。直到将整个子集树遍历完,算法结束。

约束函数:当前顶点i要与选入顶点集的每一个顶点邻接。
上界函数:有足够多的可选顶点使有可能在右子树找到最大团。

6.源代码实现

#include <stdio.h>
#include <string.h>
int book[25][25],visit[25],que[25];//que数组表示在图中的点,book记录边,visit记录访问过的点
int n,m,max;
void dfs(int x,int sum){
    if(x>n){//搜完所有的点,递归出口
         max=sum;
         return ;
    }
    int vt=0;
    for(int j=0;j<sum;j++){//判断与图中的点是否两两相通
        if(book[x][que[j]] == 0){
                vt=1;
                break;
                }
            }
    if(vt == 0)//相通进入que数组,并且图中顶点+1
    {
        visit[x]=1;
        que[sum]=x;
        dfs(x+1,sum+1);
    }
      if(sum+n-x >max)//剪枝
         dfs(x+1,sum);
}
int main(){
    int t,vi=0;
    scanf("%d",&t);
    while(t--){
        scanf("%d %d",&n,&m);
        int x,y;
        memset(visit,0,sizeof(visit));
        memset(book,0,sizeof(book));
        max=0;
        for(int i=1;i<=m;i++){
            scanf("%d %d",&x,&y);
            book[x][y]=1;
            book[y][x]=1;
        }
             dfs(1,0);
        vi++;
       printf("Case %d: %d\n",vi,max);
    }
    return 0;
}

7.实验结论及心得体会

通过本次实验,了解了回溯算法思想,学会了回溯法的算法框架,发现使用算法优化之后与优化前最原始的代码相比提升了太多。文章来源地址https://www.toymoban.com/news/detail-457393.html

到了这里,关于中北大学算法分析与设计实验报告六(最大团问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【上海大学数字逻辑实验报告】七、中规模元件及综合设计

    掌握中规模时序元件的测试。 学会在Quartus II上设计序列发生器。 74LS161是四位可预置数二进制加计数器,采用16引脚双列直插式封装的中规模集成电路,其外形如下图所示: 其各引脚功能为: 异步复位输入端:RD 计数使能输入端:ET、EP 时钟输入端:CP 进位输出端:RCO 电源

    2024年02月04日
    浏览(44)
  • 算法设计与分析实验二:动态规划法求解TSP问题和01背包问题

    【实验内容】 (1)tsp问题:利用动态规划算法编程求解TSP问题,并进行时间复杂性分析。 输入:n个城市,权值,任选一个城市出发; 输出:以表格形式输出结果,并给出向量解和最短路径长度。 (2)01背包问题:利用动态规划算法编程求解0-1背包问题,并进行时间复杂性分

    2024年02月03日
    浏览(55)
  • 算法设计与分析实验4 :利用动态规划的方法解决子集等和分割判断问题

    实验4  利用动态规划的方法解决子集等和分割判断问题 一、实验目的 1. 了解动态规划的主要思想。 2. 掌握背包问题解决方法用以解决该问题。 3. 分析核心代码的时间复杂度和空间复杂度。 二、实验内容和要求 题目:给定一个只包含正整数的非空数组。是否可以将这个数组

    2024年04月23日
    浏览(39)
  • 南京邮电大学算法与设计实验二:贪心算法(最全最新,与题目要求一致)

    三、实验原理及内容 实验原理: 1 、用贪心法实现求两序列的一般背包问题。要求掌握贪心法思想在实际中的应用,分析一般背包的问题特征,选择算法策略并设计具体算法,编程实现贪心选择策略的比较,并输出最优解和最优解值。 2 、用贪心法求解带时限的 ( 单位时间

    2024年02月05日
    浏览(45)
  • 《软件工程》课程四个实验的实验报告(《可行性研究与项目计划》《需求分析》《系统设计》《系统实现》)

    实验学时:     2        实验地点:        任意           实验日期:    12月15日          了解:软件项目可行性研究及项目计划的基本原理与方法; 掌握:Visio等工具进行可行性研究和制定项目计划。 图书管管理系统更便于对图书进行分类和管理,对借阅

    2024年02月03日
    浏览(42)
  • 南京邮电大学算法与设计实验一:分治策略(最全最新,与题目要求一致)

    实验原理: 1、用分治法实现一组无序序列的两路合并排序和快速排序。要求清楚合并排序及快速排序的基本原理,编程实现分别用这两种方法将输入的一组无序序列排序为有序序列后输出。 2、采用基于“五元中值组取中值分割法”(median-of-median-of-five partitioning)的线性时

    2024年04月17日
    浏览(103)
  • 南京邮电大学算法与设计实验四:回溯法(最全最新,与题目要求一致)

    要求用回溯法求解8-皇后问题,使放置在8*8棋盘上的8个皇后彼此不受攻击,即:任何两个皇后都不在同一行、同一列或同一斜线上。请输出8皇后问题的所有可行解。 用回溯法编写一个递归程序解决如下装载问题:有n个集装箱要装上2艘载重分别为c1和c2的轮船,其中集装箱i的

    2024年02月05日
    浏览(53)
  • 【最大流】Ford-Fulkerson算法——算法设计与分析

    给定有向图 G = V , E , C G=V,E,C G = V , E , C ,其被称为流网络: 容量: ∀ e ∈ E , c ( e ) ≥ 0 forall e in E, c(e) ge0 ∀ e ∈ E , c ( e ) ≥ 0 流量: ∀ e ∈ E , 0 ≤ f ( e ) ≤ c ( e ) forall e in E, 0 leq f(e) leq c(e) ∀ e ∈ E , 0 ≤ f ( e ) ≤ c ( e ) 剩余容量: ∀ e ∈ E , c ( e ) − f ( e ) forall

    2024年02月04日
    浏览(28)
  • 吉林大学算法设计与分析考前突击

    以比较为基础的检索算法的时间下界是O(logn); 以比较为基础的分类算法的时间下界是O(nlogn); 简要说明理由: NP完全问题一定是NP难问题,但NP难问题不一定是NP完全问题; 算法的五大特性:确定性,能行性,输入,输出,有穷性。 而计算过程只满足前4条特性,不满足“有穷性

    2024年02月05日
    浏览(44)
  • 【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(二)、需求分析和系统设计

    本次实验(一)见博客:【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(一)、实验指导书 说明 :本次实验的代码使用verilog编写,文章中为阅读方便,故采用matlab代码格式。 2.1、需求分析 本次实验要求设计一种通过操作开关的时间控制灯

    2024年04月26日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包