我一直在尝试编写一个代码,将使用四色定理对邻接矩阵定义的区域进行着色。邻接矩阵如下所示:
A B C D
A 0 1 0 1
B 1 0 1 0
C 0 1 0 1
D 1 0 1 0
因此对于这个例子A本身或C不相邻,但它与B和D相邻。
我正在编写的程序必须使用递归和回溯来为定义的区域指定4种颜色(或更少)。
到目前为止我的算法如下:
global int[] colors = <region one color,region two, region three, region four >
public static int color(row,column)
if out of bounds ??
loop(!colored)
{
case 1: are any adjacent regions this color? assign
case 2: are any adjacent regions this color? assign.
case 3: are any adjacent regions this color? assign.
case 4: are any adjacent regions this color? assign.
case 5: if nothing found, steal closest (in #) region's color and call method from there
}
但我有几个问题:
谢谢你!
您的伪代码看起来更像本地搜索,而不是递归/回溯。逻辑返回将是空
,因为本地搜索不能证明没有解决方案,所以失败是通过永远运行来表示的。(如果找到着色本身,则通过全局变量返回。)
递归/回溯更像这样。
boolean extend-coloring(partial-coloring):
if every vertex has a color, then return true
let v be a vertex without a color
for each color c,
if v has no neighbors of color c,
apply color c to v in partial-coloring
if extend-coloring(partial-coloring), then return true
remove color c from v
return false
根调用是extend coloring(empty coloring)
,其中empty coloring
不为顶点指定颜色。返回值指示扩展部分着色的尝试是否成功。
目前的问题是,将一张地图分成邻接矩阵中表示的区域,并使用四种颜色对地图进行着色,以确保没有两个相邻区域共享相同的颜色。我们将使用邻接矩阵来编码哪个区域与哪个其他区域相邻。矩阵的列和行是区域,如果两个区域不相邻,则单元格包含0,如果两个区域相邻,则单元格包含1。创建一个递归回溯解决方案,该方案接受用户的交互输入,即地图中的区域数和表示地图组成的邻接矩阵的文件名。 问题是,我遇到的是,第一个值在国家颜
Jason Davies图形着色并没有避免我得到具有相同颜色的邻居多边形。 四色定理: 我们知道: 四色贴图定理指出,如果将平面分割成连续区域,生成一个称为贴图的图形,那么为贴图的区域着色所需的颜色不超过四种,因此没有两个相邻区域具有相同的颜色。(维基百科) 以及: 第二,为了定理的目的,每个“国家”必须是一个简单连接的区域,或相邻的区域。[...] 因为[非毗连国家]的领土必须是同一颜色,所以四
我编写了以下程序来递归地实现四色地图定理(简而言之,任何地图只能用4种颜色着色,而没有任何相邻区域是相同的颜色)。一切都在编译,但是我的输出给我错误的数据(每个区域的颜色为-1,而不是现在的值0-3)。我最大的问题是为什么输出不正确。 对于那些想知道的人来说,输入文件是一个邻接矩阵,看起来如下所示: 这是我的代码:
概述 四路颜色传感器使用可见光进行补光,大幅增强了对环境光的抗干扰能力,并且支持在巡线检测的同时进行颜色识别。新的环境光校准功能还能降低环境光对巡线效果的干扰。此外,传感器的数量由两个增加至四个,大大提高了该模块的编程潜力以应用场景。 四路颜色传感器 巡线传感器 塑料外壳 提升耐用性和质量 有 无 巡线传感器 4 个 2 个 颜色传感器 4 个 (与巡线传感器复用) 无 光线传感器 4 个 (与巡
第四课:彩色立方体 欢迎来到第四课!你将学到: 画立方体,代替单调的三角形 加上绚丽的色彩 学习深度缓存(Z-Buffer) 画立方体 立方体有六个方形表面,而OpenGL只支持画三角形,因此需要画12个三角形,每面两个。我们用定义三角形顶点的方式来定义这些顶点。 // Our vertices. Tree consecutive floats give a 3D vertex; Three co
原文:Specifying Colors 在 matplotlib 的几乎所有地方,用户都可以指定颜色,它可以以如下形式提供: RGB 或者 RGBA 浮点值元组,[0, 1]之间,例如(0.1, 0.2, 0.5)或者(0.1, 0.2, 0.5, 0.3)。 RGB 或者 RGBA 十六进制字符串,例如#0F0F0F或者#0F0F0F0F。 [0, 1]之间的浮点值的字符串表示,用于表示灰度,