文档章节

回溯法---->图的着色问题

小强斋太
 小强斋太
发布于 2016/11/09 20:07
字数 733
阅读 6
收藏 0
点赞 0
评论 0

图的着色问题

1、问题描述

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

图的m-着色优化问题——若一个图最少需要m种颜色才能使图中任意相邻的2个顶点着不同颜色,则称这个数m为该图的色数。求一个图的最小色数m的问题称为m-着色优化问题

2、找一个图的所有m-着色方案

procedure MCOLORING( k )

∥这是图着色的一个递归回溯算法。图G 用它的布尔邻接矩阵GRAP H(1∶n , 1∶  n)表示∥

∥它计算并打印出符合以下要求的全部解, 把整数1 , 2 , ⋯  ,m 分配给图中∥

∥各个结点且使相邻近的结点的有不同的整数。k 是下一个要着色结点的下标∥

global integer m, n , X(1∶  n)   boolean GRAPH (1∶n  , 1∶n)

integer k

loop ∥产生对X( k)所有的合法赋值∥

call  NEXTVALUE( k) ∥将一种合法的颜色分配给X( k) ∥

if  X( k) = 0 then exit endif ∥没有可用的颜色了∥

if  k = n

then  print ( X) ∥至多用了m 种颜色分配给n 个结点∥

else  call MCOLORING( k + 1 ) ∥所有m-着色方案均在此反复递归调用中产生∥

endif

repeat

end MCOLORING

在最初调用callMCOLORING(1)之前, 应对图的邻接矩阵置初值并对数组X置0值。在确定了X(1)到X(k-1)的颜色之后,过程NEXTVALUE从这m种颜色中挑选一种符合要求的颜色, 并把它分配给X(k) , 若无可用的颜色, 则返回X(k) = 0。

3、获取下一种颜色

procedure NEXTVALUE( k)

∥进入此过程前X(1) , ⋯ , X( k - 1 )已分得了区域[ 1 , m] 中的整数且相邻近的结点有不同的

整数。本过程在区域[0 ,m] 中给X( k )确定一个值:如果还剩下一些颜色, 它们与结点k 邻

接的结点分配的颜色不同, 就将其中最高标值的颜色分配给结点k ;如果没剩下可用的颜

色, 则置X( k) 为0∥

global integer m, n , X(1∶n)  boolean GRAP H(1∶n , 1∶  n)

integer j , k

loop

X(k) ←(X(k) + 1 ) mod (m + 1) ∥试验下一个最高标值的颜色∥

if X( k ) = 0 then return endif ∥全部颜色用完∥

for j←1 to n do ∥检查此颜色是否与邻近结点的那些颜色不同∥

if GRAPH( k , j ) and ∥如果( k , j )是一条边∥

X(k) = X(j) ∥并且邻近的结点有相同的颜色∥

then exit endif

repeat

if j = n + 1 then return endif ∥找到一种新颜色∥

repeat ∥否则试着找另一种颜色∥

end NEXTVALUE

4、例子

本文转载自:http://www.cnblogs.com/xqzt/archive/2013/05/16/5637087.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
算法设计策略----回溯法和分枝限界法

显示约束和解空间:规定每个分量xi取值的约束条件称为显式约束。对给定的一个问题,显示约束规定了所有可能的元组,他们组成问题的候选解集,被称为该问题实例的解空间。 隐式约束和判定函数...

Superheros
03/10
5
0
常用算法和复杂度总结

一、常用算法和复杂度 算法 名称 复杂度 备注 快速排序 QuickSort(A,p,r) 最坏:O(n2) 平均:O(nlog n) 均衡划分:O(nlog n) 合并排序 MergeSort(A,p,r) O(nlog n) 选最大 FindMax O(n) 选最...

啊莱
2010/01/03
0
0
游戏与常用的五大算法---下篇

前言: 心是一个人的翅膀,心有多大,世界就有多大。很多时候限制我们的,不是周遭的环境,也不是他人的言行,而是我们自己!看不开,放不下,忘不了,把自己囚禁在灰暗的记忆里;不敢想,不...

loving_forever_
2017/01/08
0
0
砝码分盐问题——从数学和计算机的角度分析(7)

本博客(http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正! Content 0.问题 1.一些方法 2.从数学的角度分析 3.能否编程计算? 4....

晨曦之光
2012/03/09
58
0
算法的设计基本方法的理解

算法设计基本方法有什么好处? 了解常见的算法设计方法以及它们之间的区别,有利于构建算法思维的广度,有充分的理论知识。当然,如果算法思维的深度再好的话,将来你见识的算法越多,天下之...

qingliangdexiar
2017/05/31
0
0
算法设计与分析复习——第六章:分支先结法

第六章:分支先结法 1,请简述分支限界法的算法思想以及两种主要的实现方法。 答:分支限界法的算法思想是在问题的解空间树上以广度优先或最小耗费(最大效益)优先方式搜索问题的满足约束条...

科技小能手
2017/11/12
0
0
数据结构-迷宫问题(回溯法)

题目描述: 迷宫是一个二维矩阵,其中1为墙,0为路,入口在第一列,出口在最后一行。要求从入口开始,从出口结束,按照 上,下,左,右 的顺序来搜索路径.。 思路: 回溯法 + 试探法。回溯法可用栈或递...

sssssuuuuu666
2017/12/11
0
0
十大算法之一回溯法—解背包问题-C#代码

1、概念 回溯法实际使用基本枚举的方式来遍历所有的解,是枚举法的一个简单优化。 按照深度优先的策略,从根结点出发搜索解空间树。搜索至解空间树的任一节点时,先判断是否满足求解条件,不...

aiTCR
2017/09/30
0
0
五大常用算法:分治、动态规划、贪心、回溯、分支限界

分治:把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并 http://www.cnblogs.com/ste...

毛朱
2015/09/11
2.5K
0
回溯算法思想与八皇后问题解的个数

八皇后问题: 在88的国际象棋棋盘上,皇后是威力较大的棋子,它可以攻击到与自己同行、同列以及同一斜线上的棋子,如下图,所有橙色格子上的棋子,都可能会被皇后攻击: 而八皇后问题就是在8...

silenceyawen
03/04
24
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周六乱弹 —— 妹子和游戏哪个更好玩

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享唐朝乐队的单曲《国际歌》 《国际歌》- 唐朝乐队 手机党少年们想听歌,请使劲儿戳(这里) @举个栗子- :日常祈雨 邪恶的大祭...

小小编辑
28分钟前
61
4
流利阅读笔记32-20180721待学习

“人工智能”造假:只有人工,没有智能 Lala 2018-07-21 1.今日导读 当今社会,擅长单个方面的人工智能已经盛行,手机借助 AI 智慧防抖技术帮助大家拍出清晰照片,谷歌研发的 AI 助手将可以帮...

aibinxiao
今天
2
0
我的成长记录(一)

今天突然精神抖擞,在我的博客下新开一项分类>成长记录,专门记录每隔一段时间我的一点感悟吧。因为今天才专门花时间新开这样一个分类,所以以前有过的一些感悟没有记录下来,现在已经想不起...

dtqq
今天
0
0
机器学习管理平台 MLFlow

最近工作很忙,博客一直都没有更新。抽时间给大家介绍一下Databrick开源的机器学习管理平台-MLFlow。 谈起Databrick,相信即使是不熟悉机器学习和大数据的工程湿们也都有所了解,它由Spark的...

naughty
今天
0
0
idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
13
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部