[TOC]
# 问题描述
给一张带节点和边的图,我们现在要做的是使用最少的颜色对当前图中的所有点进行着色,满足的条件是相连接的结点不能共享一个颜色。如下图所示。
![](https://box.kancloud.cn/2016-05-26_5746eea564e10.png)
# 算法设计
我们来看一个最简单情况,即结点个数为n=3,颜色可选个数为m=3。以此得到的解空间树为:
![](https://box.kancloud.cn/2016-05-26_5746eea58850a.png)
第一层为第一个结点可选的颜色值,那么遍历的时间复杂度为3^3=27.
假设我们有如下图:
n=4
m=3
![](https://box.kancloud.cn/2016-05-26_5746eea5a4349.png)
得到的邻接矩阵为:
![](https://box.kancloud.cn/2016-05-26_5746eea5b8d8c.png)
伪代码如下:
![](https://box.kancloud.cn/2016-05-26_5746eea5d1079.png)
![](https://box.kancloud.cn/2016-05-26_5746eea620a41.png)
第一步:
![](https://box.kancloud.cn/2016-05-26_5746eea63b3e7.png)
![](https://box.kancloud.cn/2016-05-26_5746eea65b2f8.png)
![](https://box.kancloud.cn/2016-05-26_5746eea681f34.png)
# 代码实现-1