1. 问题图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个
    顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方
    案;如果不存在,则回答“NO”。
  2. 解析首先,使用邻接矩阵存储无向连通图;其次,明确color数组代表的含义:color[n],大小为n,下标肯定代表顶点,里面的值代表这个顶点放的是哪种颜色。还要判断当前顶点和哪些顶点有着色冲突,若有return false;否则return true。将颜色初始化,遍历搜索下一个颜色。根据着色情况输出、处理下一个顶点或回溯。用flag记录下来是否可以着色,如果没有可以着色的方案,输出“NO”。设G有n个顶点,将顶点编号为1,2,…,n,则搜索空间为深度n的m叉完全树,将颜色编号为1,2,…,m,结点<x1,x3,…,xk>(x1,x2,…,xk属于{1,…,m},1<=k<=n)表示顶点1的颜色x1,顶点2的颜色x2,…顶点k的颜色xk。
  3. 设计
bool OK(int k,int c[][100]){           //判断顶点k的着色是否发生冲突    int i;    for (i=1; i<k; i++)        if (c[k][i]==1 && color[i]==color[k])            return false;        return true;} void graphcolor(int n,int m,int c[][100]){    int i,k;    int flag=0;    for (i=1; i<=n; i++) {        color[i]=0;                     //初始化    }    k=1;    while (k>=1) {        color[k]=color[k]+1;        while (color[k]<=m) {            if(OK(k,c))                break;            else                color[k]=color[k]+1;      //搜索下一个颜色        }        if (color[k]<=m&& k==n) {         //输出            for (i=1; i<=n; i++) {                printf("%d ",color[i]);            }            printf("\n");            flag=1;        }        else if (color[k]<=m&&k<n){            k=k+1;                       //处理下一个顶点        }        else{            color[k]=0;            k=k-1;                       //回溯        }    }    if (flag==1) {        printf("NO\n");    }} 
  1. 分析搜索树有:1+m+m2+…+mn<=2m^2个结点。(m>2)
    每个结点要和其他所有顶点颜色进行n-1次比较。
    所以最坏的时间复杂度为O(nm^n)
  2. 源码 https://github.com/hackkkkkk/calculate

作业12图的着色问题相关推荐

  1. 作业12——分支限界解决最大团和图m着色问题

    1.问题 最大团:求一张无向图的最大团.团的定义:给定图G=(V,E),其中,V={1,-,n}是图G的顶点集,E是图G的边集,图G的团就是一个两两之间有边的顶点集合,团是G的一个完全子图.如果一个团 ...

  2. 软件工程个人作业12

    软件工程个人作业12 程序题目: •三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个"水王",他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻 ...

  3. 回溯法----图的着色问题

    图的着色问题 1.问题描述 图的m-着色判定问题--给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色? 图的m-着 ...

  4. 电子科大互加数据库课程作业——ER图设计

    电子科大互加数据库课程作业--ER图设计 书上习题P95, 第18题 (1) (2) 关系模型,转换为3个关系 Convoy(车队名.车队号) Car(牌照号.厂家.出厂日期.车队号) Driver( ...

  5. 图的着色问题(二分图)

    相关概念: 把相邻顶点染成不同颜色的问题叫做图的着色问题. ➢对图进行染色所需的最小颜色数,称为最小着色数.最小着色数为2的图称为二分图. ➢二分图:给定一个具有n个顶点的图,要给图上每个顶点染色,并 ...

  6. 【图的着色问题】算法设计与分析实验1

    计算机科学与工程学院实验报告 课程名称 算法设计与分析 班级 实验内容 实验1:图的着色问题 指导教师 姓名 重剑DS 学号 实验日期 2022.04.28 一.问题描述,含输入.输出数据内容.格式 ...

  7. python - 作业12:鼠标绘图(附代码)

    python - 作业12:鼠标绘图 作业要求 友情提示 分析 结果呈现 *2020/02/04* 更新code github指路 冲冲冲冲冲 ---------------------------- ...

  8. 计算机文化基础形考作业五,国开电大计算机文化基础形考作业12.pdf

    国开电大计算机文化基础形考作业 12 题目顺序是随机的,使用查找功能( Ctrl+F )进行搜索 题目: 一般软件中, 放弃当前操作的命令键是 ____.[答案]: Esc 题目: 64 位微型计算机 ...

  9. 数字图像处理期末大作业-美图秀秀

    本项目是以matlab为主语言并设计GUI界面的一款简易美图秀秀,包含基础的图像处理和一些常见美颜算法 对于一些matlab较难实现的算法采用C++或python来实现 ⭐️ github地址:htt ...

最新文章

  1. 《LeetCode力扣练习》第617题 合并二叉树 Java
  2. 为什么二级菜单会被挡住_武夷红茶为什么是二级茶?我们平时喝的红茶会不会被加了糖?...
  3. 【ARM】Tiny4412裸板编程之MMU(页 4K)
  4. 40个很棒的由html5开发的网络游戏案例
  5. 内容分发网络 - Content Delivery Network 学习笔记
  6. CVE-2017-7529Nginx越界读取缓存漏洞POC
  7. Linux系统下启动MySQL的命令及相关知识
  8. 删除数组中的负数,输出结果为正数
  9. 苹果电脑如何修改环境变量
  10. 【HDU 6299】Balanced Sequence
  11. 按键精灵手机助手之实战篇(二)防封
  12. Matlab 编程 《计算流体力学基础及应用(约翰D安德森)》 亚声速-超声速等熵喷管流动CFD解法 拉瓦尔喷管 守恒形式方程解法
  13. 十年比肩?看国产数据库如何突出重围!| 新程序员
  14. html进度条倒计时代码,html5+css3进度条倒计时动画特效代码【推荐】_html5教程技巧...
  15. 通过虚拟机搭建个人NAS
  16. 中国人为什么喜欢创业?
  17. python爬虫之Scrapy框架,基本介绍使用以及用框架下载图片案例
  18. OpenMP 快速入门
  19. 在 Create-React-App 中使用 TypeScript(汉化)
  20. VSFTPD搭建过程记录

热门文章

  1. 单元测试 Mocking 类库需具备的特性
  2. 12c adg添加数据文件报错处理ORA-01111
  3. 在线抓图WebSnap Beta 1.2 更新
  4. Angular开发实践(一):环境准备及框架搭建
  5. dotnet调用node.js写的socket服务(websocket/socket/socket.io)
  6. MySQL 视图技术
  7. angularjs-ngModel 控制页面的宽度
  8. Linux命令初识一
  9. 29个你必须知道的Linux命令
  10. 在VS上配置OpenCV