算法分析与设计实验报告——图的m着色问题

目录:

  • 算法分析与设计实验报告——图的m着色问题
    • 一、 实验目的
    • 二、实验要求
    • 三、 实验原理
    • 四、 实验过程(步骤)
    • 五、 运行结果
    • 六、实验分析与讨论
    • 七、实验特色与心得
    • 附件一 实验过程(步骤)
    • 附件二 运行结果

一、 实验目的

掌握回溯法的基本思想和解决问题的基本步骤,认识回溯法和动态规划、贪心选择的联系与区别,对比解决同一问题的三种算法设计策略的优缺点。

二、实验要求

用c++语言实现用回溯法解决图的m着色问题,分析时间复杂性,体会回溯法解决问题的基本思路和步骤。

三、 实验原理

四、 实验过程(步骤)

见附件一
实验步骤、特点
重要源代码(流操作的部分要醒目的提示并注释)

五、 运行结果

见附件二

六、实验分析与讨论

遇到的问题,及解决方案

七、实验特色与心得

附件一 实验过程(步骤)

#include <bits/stdc++.h>using namespace std;class Color {friend int mColoring(int n, int m, int **a);//声明友元函数private:bool OK(int k);//判断此颜色可不可用void Backtrack(int t);int n, m, **a, *x;//图的顶点数,可用颜色数,邻接矩阵,目前的解long sum;//已找到的m着色方案数
};bool Color::OK(int k) {//当边存在时且和周围的颜色不重时,此颜色可用for (int j = 1; j <= n; j++)if ((a[k][j] == 1) && (x[j] == x[k]))return false;return true;
}void Color::Backtrack(int t) {//回溯算法if (t > n) {//当找到叶子节点时sum++;for (int i = 1; i <= n; i++)cout << x[i] << ' ';cout << endl;} else {//不是叶子节点则继续回溯for (int i = 1; i <= m; i++) {x[t] = i;if (OK(t))Backtrack(t + 1);x[t] = 0;}}
}int mColoring(int n, int m, int **a) {Color X;X.n = n;X.m = m;X.a = a;X.sum = 0;int *p = new int[n + 1];for (int (i) = 0; (i) <= n; ++(i)) {p[i] = 0;}X.x = p;X.Backtrack(1);//开始回溯delete[] p;return X.sum;
}int main() {int n, e, m;int ii, jj;cout << "请依次输入顶点数,可用颜色数,边数;" << endl;cin >> n >> m >> e;int **a;a = new int *[e];for (int i = 0; i < e; i++) {a[i] = new int[e];}for (int i = 0; i < e; i++)for (int j = 0; j < e; j++)a[i][j] = 0;cout << "请依次输入各个顶点之间的相互关系:" << endl;for (int i = 0; i < e; i++) {cin >> ii >> jj;a[ii][jj] = 1;a[jj][ii] = 1;}cout<<"所有不同的着色法:"<<endl;int total = mColoring(n, m, a);cout << "Total = " << total << endl;return 0;
}
/*
5 4 8
1 3
1 2
1 4
2 3
2 4
2 5
3 4
4 5
*/

附件二 运行结果

算法分析与设计实验报告——图的m着色问题相关推荐

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

    中北大学算法分析与设计实验报告六(最大团问题) 1.实验名称 实验六 回溯与分支限界算法实验 2.实验目的 题目:最大团问题 强化学生利用回溯算法和优化处理实际问题的能力. 3.训练知识点集群 (1) ...

  2. 算法分析与设计实验报告 ——二分搜索程序算法的实现

    算法分析与设计实验报告 --二分搜索程序算法的实现 实验目的及要求 1.理解分治算法的概念和基本要素: 2.理解递归的概念: 3.掌握设计有效算法的分治策略: 4.通过二分搜索技术学习分治策略设计技巧 ...

  3. 算法分析与设计实验报告——实现汽车加油问题

    算法分析与设计实验报告--实现汽车加油问题 目录: 算法分析与设计实验报告--实现汽车加油问题 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与讨论 ...

  4. 算法分析与设计实验报告——二分搜索算法的实现

    算法分析与设计实验报告--二分搜索算法的实现 目录: 算法分析与设计实验报告--二分搜索算法的实现 一. 实验目的 二.实验要求 三. 实验原理 四. 实验过程(步骤) 五. 运行结果 六.实验分析与 ...

  5. 中北大学算法分析与设计实验报告一(BF算法)

    中北大学算法分析与设计实验报告一(BF算法) 1.实验名称 实验一 算法基础实验:数理基础与串匹配程序设计 2.实验目的 以字符串匹配问题为例,结合C等编程语言和链表.堆.栈等数据结构知识,基于BF算 ...

  6. 算法分析与设计实验报告

    计算机算法分析与设计实验报告 实验一:递归回溯 阶乘(Factorial) #include<iostream> using namespace std; int factorial(in ...

  7. 算法分析与设计实验报告三——动态规划算法

    一.实验目的 掌握动态规划方法贪心算法思想 掌握最优子结构原理 了解动态规划一般问题 二.实验内容 编写一个简单的程序,解决0-1背包问题.设N=5,C=10,w={2,2,6,5,4},v={6,3 ...

  8. matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc

    数字图像处理课程设计实验报告 数字图像处理课程设计 题 目:数字图像处理及Huufman(或小波变换)编码仿真实现 学生姓名: 学 院:信息工程学院 系 别:电子信息工程系 专 业:电子信息工程 班 ...

  9. 秒表设计实验报告C语言,电子秒表设计实验报告

    <电子秒表设计实验报告>由会员分享,可在线阅读,更多相关<电子秒表设计实验报告(10页珍藏版)>请在人人文库网上搜索. 1.精选文档 -淮阴工学院数字电子技术课程实验期末考核2 ...

  10. 计算机综合布线实验报告,综合布线设计实验报告.doc

    综合布线设计实验报告.doc 桂林电子科技大学综合布线实验报告实验名称布线工程图设计制作实验辅导员意见电子信息工程系通信技术专业班第2实验小组作者张三学号091同作者辅导员实验日期2011年5月31日 ...

最新文章

  1. android zip解压缩(含有子目录)
  2. SAP SD-如何控制定价折扣的总额度
  3. 乐视云监控数据存放到influxdb中
  4. OpenSSL--Window生成证书实战
  5. 从深圳到南阳-13天单骑3000里回家记
  6. 水土保持功能评估中k值的计算公式
  7. 继承或者重写django的user model?
  8. mysql配置和管理(转载)
  9. html css 实现发票(付款申请书)模板
  10. mysql数据库的基本操作
  11. 电商项目(谷粒商城)
  12. 【云计算学习教程】探讨私有云计算平台的搭建(附带3套解决方案)
  13. Codeforces 1324 D. Pair of Topics(二分)
  14. terraform 安装及命令
  15. 人常见的思维盲区有哪些?看懂这个你会少犯一半错误
  16. iOS textView return实现键盘收回
  17. Excel保护加密、解密、忘记密码该怎么办?
  18. PostgreSQL 出现cross-database references are not implemented的bug
  19. 自然语言理解应用API对比报告
  20. Python双引号与单引号的使用

热门文章

  1. 2021年中国牛肉市场供需现状、进出口贸易及价格走势分析[图]
  2. 中国智能传感器投资规划建议及前景方向预测报告2022年版
  3. marxico马克飞象
  4. Spark Streaming背压机制
  5. SQL Server下载和安装步骤
  6. Datawhale组队学习第五章-中值定理
  7. 消除六边形html5,六边形消除
  8. html中滚动速度怎么调节,html – 图像调整大小导致滚动速度慢
  9. Hive3.1.2 on spark
  10. 【基于ARM cortex-A53的音视频】