作业12图的着色问题
- 问题图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个
顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方
案;如果不存在,则回答“NO”。 - 解析首先,使用邻接矩阵存储无向连通图;其次,明确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。
- 设计
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+m+m2+…+mn<=2m^2个结点。(m>2)
每个结点要和其他所有顶点颜色进行n-1次比较。
所以最坏的时间复杂度为O(nm^n) - 源码 https://github.com/hackkkkkk/calculate
作业12图的着色问题相关推荐
- 作业12——分支限界解决最大团和图m着色问题
1.问题 最大团:求一张无向图的最大团.团的定义:给定图G=(V,E),其中,V={1,-,n}是图G的顶点集,E是图G的边集,图G的团就是一个两两之间有边的顶点集合,团是G的一个完全子图.如果一个团 ...
- 软件工程个人作业12
软件工程个人作业12 程序题目: •三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个"水王",他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻 ...
- 回溯法----图的着色问题
图的着色问题 1.问题描述 图的m-着色判定问题--给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色? 图的m-着 ...
- 电子科大互加数据库课程作业——ER图设计
电子科大互加数据库课程作业--ER图设计 书上习题P95, 第18题 (1) (2) 关系模型,转换为3个关系 Convoy(车队名.车队号) Car(牌照号.厂家.出厂日期.车队号) Driver( ...
- 图的着色问题(二分图)
相关概念: 把相邻顶点染成不同颜色的问题叫做图的着色问题. ➢对图进行染色所需的最小颜色数,称为最小着色数.最小着色数为2的图称为二分图. ➢二分图:给定一个具有n个顶点的图,要给图上每个顶点染色,并 ...
- 【图的着色问题】算法设计与分析实验1
计算机科学与工程学院实验报告 课程名称 算法设计与分析 班级 实验内容 实验1:图的着色问题 指导教师 姓名 重剑DS 学号 实验日期 2022.04.28 一.问题描述,含输入.输出数据内容.格式 ...
- python - 作业12:鼠标绘图(附代码)
python - 作业12:鼠标绘图 作业要求 友情提示 分析 结果呈现 *2020/02/04* 更新code github指路 冲冲冲冲冲 ---------------------------- ...
- 计算机文化基础形考作业五,国开电大计算机文化基础形考作业12.pdf
国开电大计算机文化基础形考作业 12 题目顺序是随机的,使用查找功能( Ctrl+F )进行搜索 题目: 一般软件中, 放弃当前操作的命令键是 ____.[答案]: Esc 题目: 64 位微型计算机 ...
- 数字图像处理期末大作业-美图秀秀
本项目是以matlab为主语言并设计GUI界面的一款简易美图秀秀,包含基础的图像处理和一些常见美颜算法 对于一些matlab较难实现的算法采用C++或python来实现 ⭐️ github地址:htt ...
最新文章
- 《LeetCode力扣练习》第617题 合并二叉树 Java
- 为什么二级菜单会被挡住_武夷红茶为什么是二级茶?我们平时喝的红茶会不会被加了糖?...
- 【ARM】Tiny4412裸板编程之MMU(页 4K)
- 40个很棒的由html5开发的网络游戏案例
- 内容分发网络 - Content Delivery Network 学习笔记
- CVE-2017-7529Nginx越界读取缓存漏洞POC
- Linux系统下启动MySQL的命令及相关知识
- 删除数组中的负数,输出结果为正数
- 苹果电脑如何修改环境变量
- 【HDU 6299】Balanced Sequence
- 按键精灵手机助手之实战篇(二)防封
- Matlab 编程 《计算流体力学基础及应用(约翰D安德森)》 亚声速-超声速等熵喷管流动CFD解法 拉瓦尔喷管 守恒形式方程解法
- 十年比肩?看国产数据库如何突出重围!| 新程序员
- html进度条倒计时代码,html5+css3进度条倒计时动画特效代码【推荐】_html5教程技巧...
- 通过虚拟机搭建个人NAS
- 中国人为什么喜欢创业?
- python爬虫之Scrapy框架,基本介绍使用以及用框架下载图片案例
- OpenMP 快速入门
- 在 Create-React-App 中使用 TypeScript(汉化)
- VSFTPD搭建过程记录