图形着色的实际应用是什么。换句话说,为什么我们需要使用这样的算法来优化颜色数量(问题的一些重要特征)。
答案 0 :(得分:5)
您似乎对graph coloring的内容有所误解,可能还有graph的内容。
实际颜色与此无关,图形着色用于解决资源数量有限或其他限制的问题。颜色只是您尝试优化的任何资源的抽象,图表是您问题的抽象。
网上有大量关于图论的资源,简而言之 - 图是一组元素(称为顶点)的抽象表示,其中一些元素共享一个连接(称为边缘)。这当然是最基本的概念,还有许多其他属性可以添加到其上,例如有向边,权重等,但这个概念现在应该足够了。
图形通常用于模拟各种现实世界的问题(有时也会出现问题,因为数学家和计算机科学家毕竟仍然需要继续发表论文),现在我们有许多算法可以有效地处理它们(在复杂性方面),找到可能有趣的各种因素以解决上述问题。或者,我们有时可以证明使用任何有效的算法都无法解决问题。图形着色是其中之一(或更准确地说,问题:can a graph be colored in up to k colors
或问题what is the minimal number of colors needed to color the graph
),除非我们处理图形的某些子类型,例如平面图(邻近地图)国家是一个很好的例子,因为它被用于一些有趣的图形着色证明)。这里的着色意味着将“颜色”或数字附加到每个顶点,使得没有两个带有连接边的顶点具有保存值。
现实问题的一个例子可以应用图形着色:你设计一个编译器,在一个给定的程序中你观察N个变量,并希望将它们中的尽可能多的分配到寄存器中可能(其余的必须溢出到内存,这是更慢,最好避免)。但是,您的CPU总共只有16个逻辑寄存器。但是,从好的方面来说 - 你知道哪些变量在相同的上下文和时间中使用,哪些不是。显然,不在一起的那些可以使用相同的寄存器。那么,您可以将所有变量分配到现有的寄存器集中吗?
要解决此问题,您可以构建一个图形,其中变量是顶点,并且边连接在同一时间帧使用的每两个变量。以最小数量的“颜色”着色图表将告诉您总共需要多少个寄存器,因为每种颜色都可以分配给寄存器,并且由于着色前提 - 没有2个变量同时存活可以使用相同的“颜色” “(注册),因为它们将通过边缘连接,并且不能以相同的方式着色。
答案 1 :(得分:3)
Sudoku solver是图表着色派上用场的典型示例。
请注意,此处的颜色数量受游戏规则的限制。图形着色算法中的“颜色”通常是具象而非文字。数字通常使用数字1-9而不是颜色,但这并不能阻止图形颜色相关。
答案 2 :(得分:0)
有许多实际应用依赖于图形着色。例如,蜂窝天线的频率分配是一个着名的问题。在这个问题中,人们只能使用少量的频率(颜色),并将它们分配给天线,使客户端始终连接到其中一个天线。当几个天线的覆盖区域重叠时出现问题,并且在这种情况下,我们希望具有至少一个具有唯一频率(颜色)的天线。在这个问题中,不能使用简单的正确(非单调)着色。
在上述情况下,我们处理超图的着色。我们根据着色问题定义超图。并且有不同的着色变体,例如无冲突着色,唯一最大着色。在静态情况下已经进行了许多研究,其中超图不随时间而变化。在在线设置的情况下,有很多有趣的研究正在进行,其中超边缘可能会随时间变化(比如某些天线停止工作,或者新天线固定在某个位置)。
您还可以参考 1 调查报告,详细了解有趣的着色问题及其应用。