6色图顶点着色算法
Posted
技术标签:
【中文标题】6色图顶点着色算法【英文标题】:6 Color Graph Vertex Coloring Algorithm 【发布时间】:2012-01-26 15:43:20 【问题描述】:我正在尝试在 C++ 中创建一个算法,该算法将使用最多 6 种颜色为平面图的顶点着色。我只是在寻找一些伪代码来帮助我开始。任何帮助表示赞赏。谢谢。
【问题讨论】:
@EdHeal 我以为我们停止标记作业了?不过听起来确实如此。 是的。我知道使用双向链表,我认为我应该将最小 j 的非空 j 度列表的第一个顶点指定为顶点 ui。从 j 度列表中删除 ui。对于在 G 中与 ui 相邻并保留在某个度数列表中的每个顶点 U',比如 j',从 j' 度数列表中删除 - u' 并将 u' 插入到 j' - 1 度数列表中。有一个 for 循环来为每个顶点分配最小的颜色值(1-6 之间),这些颜色值不会出现在与 vi 相邻且已经着色的顶点上。听起来怎么样? 听起来您已经看过我在下面链接的同一篇论文的摘录。算法很好......那有什么问题? (我最近用Java编写了这个算法,如果你更具体,可以指点)。 【参考方案1】:见:
平面图五色的两种线性时间算法 作者:David Matula、Yossi Shiloach、Robert Tarjan
(只需 Google 一下,您就会找到该论文的 PDF)。
所以这是一篇关于在 O(n) 时间内对平面图进行 5 次着色的论文,但它首先简单描述了 6 次着色的算法。这是重要的摘录(对格式表示歉意,这只是 PDF 抓取):
算法 6 色。给定邻接表中的 n 个顶点平面图 G 形式,该算法确定 G 的 6 色。 步骤 1. [建立 度列表。] 对于每个 j 其中 0- j - n - 1,形成双重
【讨论】:
以上是关于6色图顶点着色算法的主要内容,如果未能解决你的问题,请参考以下文章