图着色问题的求解

一、问题分析 

问题描述:图着色问题(Graph Coloring Problem,GCP)又称着色问题,是最著名的NP-完全问题之一。道路着色问题(Road Coloring Problem)是图论中最著名的猜想之一。给定一个无向图G= (V,E),其中V为顶点集合,E为边集合,图着色问题即为将V分为K个颜色组,每个组形成一个独立集,即其中没有相邻的顶点。其优化版本是希望获得最小的K值。

要求:给定任意无向图,求出该图最少的着色数并给出着色方案,实现可视化展示。

二、算法的选择或设计思路

一般连通图的可着色法问题并不仅限于平面图。给定图G= (V,E)和 m种颜色,如果这个图不是m的可着色,给出否定回答,如果这个图是m的可着色的,找出所有不同的着色法。

根据回溯法的递归描述框架 backtrack设计图的m着色算法。用图的邻接矩阵a表示无向量连通图G= (V,E)。若(i,j)属于图G= ( V,E)的边集E,则a[i][j]=1,否则a[i][j]=0。整数1,2,…,m用来表示m种不同颜色。顶点i所有颜色用x[i]表示,数组x[1:n]是问题的解向量。问题的解空间可表示为一棵高度为n+1的完全m叉树。解空间树的第I ( 1<=i<=n)层中每一结点都有m个儿子,每个儿子相应于x[i]的m个可能的着色之一。第n+1层结点均为叶结点。

在算法 backtrack 中,当i>n时,算法搜索至叶结点,得到新的m着色方案,当前找到的m着色方案数sum增1。

当I<n时,当前扩展结点Z的每一个解空间中内部结点。该结点有x[i]=1,2,…,m共m个儿子结点,对当前扩展结点Z的每一儿子结点,有方法检查其可行性,并以深度优先的方式递归的对可行子树搜索,或减去不可行树。

对于图着色问题,我们选择的是回溯法。回溯法有"通用的解题法"之称。用它可以系统的搜索一个问题的所有解或任一解。是一个既带有系统性又带有跳跃性的搜索算法。

在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。而若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值