🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[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