中出现了以下问题谜语人它的特点是将一个古老的游戏与四色定理有趣地结合在一起。
著名的四色定理从本质上说,你可以在任何地图的区域中使用最多四种颜色,这样相邻区域就不会共享一种颜色。1976年提供了一个基于计算机的定理证明。
大约2200年前,传奇的希腊数学家阿基米德描述了一种叫做奥斯托马奇恩(如下所示)。它是一组碎片,类似于七巧板它将一个12乘12的正方形划分为14个区域。其目的是将碎片重新排列成有趣的形状,例如霸王龙。它通常被称为已知最古老的数学难题。
你今天面临的挑战是:用四种颜色给奥斯托马奇恩广场的各个区域着色,这样每种颜色都会给一个相等的区域着色。(也就是说,每种颜色都需要着色36个平方单位。)着色还必须满足相邻区域没有相同颜色的约束。
额外学分:这个挑战有多少解决方案?
以下是我如何解决问题的详细信息:
[显示解决方案]
我想首先指出,Hector Pefo也发布了很好的解决方案解决这个问题。Twitter上还发布了一些解决方案的图表,例如@DimEarly公司和来自@聊天室(chattinthehatt)。我将在这里描述的解决方案与Hector的类似,但我将解释如何将其建模为一个整数线性规划,并以这种方式进行求解。当然,这两种解决方案产生了相同的答案(因为它们都是正确的!),但很高兴看到不同的方法。所以不用再麻烦了…
整数线性程序
让我们假设有$N$的形状,并且我们想要使用$C$的颜色。定义:
\[
x{ij}=\开始{案例}1&\文本{if-shape}i\text{使用颜色}j\\0&\text{otherwise}\end{cases}着色
\]第一个约束是每个形状必须指定给一种颜色。我们可以用代数的方式表达如下:
\[
\sum_{j=1}^Cx_{ij}=1\qquad\text{表示}i=1,\点,N
\]现在假设形状$j$具有区域$a_j$。每种颜色都有相等的面积份额这一约束意味着每种颜色形状的面积之和必须是$A_\text{tot}/C$,其中$A_\text{tot{$是Ostomachion的总面积。代数上,我们可以这样写:
\[
\sum_{i=1}^Na_ix_{ij}=a_\text{tot}/C\qquad\text{for}j=1,\点,C
\]最后,我们必须处理边约束。如果shape$p$与shape$q$共享一条边,我们说$(p,q)$是一条“边”。共享边的形状必须是不同的颜色。我们可以将其代数编码为:
\[
x_{pj}+x_{qj}\le1\qquad\text{用于所有边}(p,q)\text{和}j=1,\点,C
\]就这样!我们将可行解集描述为满足上述三组线性约束的矩阵$x\in\{0,1\}^{N\timesC}$的集合。这种优化模型是背包问题。一般来说,它是一个整数线性程序(ILP)。这些问题是众所周知的NP-hard公司这大致意味着在最坏的情况下,除了尝试所有可能的颜色之外,没有有效的方法来解决这些问题。然而,现代ILP求解器相当复杂,通常可以非常有效地解决这些类型的问题。
寻找所有解决方案
当使用ILP模型时,大多数商业解算器都是为了找到单个解决方案而设计的。对于这个问题,我们有兴趣找到全部的解决。绕过限制的一种方法是使用Barvinok算法。还可以使用分支和切割另一种方法是使用随机方法,这种方法虽然不太系统,但更容易解释和实施。
由于我们所有的变量都是二进制的(0或1),所以可行集的凸包不能包含任何内部解点。所有解决方案都在边界上。这意味着可以通过为优化指定正确的目标函数来找到任何解决方案。如前所述,我们的优化只是一个可行性问题,没有指定目标。对于这个问题,我们首先让$r_{ij}$是随机数(我们可以画出它们静脉注射。来自标准正态分布例如)。然后,我们简单地添加目标函数:
\[
\文本{最小化}\qquad\sum_{i=1}^N\sum_{j=1}^Cr_{ij}x_{ij}
\]并解决问题。如果我们对$\{r_{ij}\}$的不同实现重复这样做,我们最终将列举优化问题的所有可能的解决方案。
要直接跳到解决方案(和漂亮的图片!),请参见下文。
[显示解决方案]
解决
我使用实现了前面描述的ILP朱莉娅和JuMP公司我用古罗比解算器。尽管查找所有解决方案的随机化方法运行良好,但Gurobi具有内置功能,允许用户直接查找所有解决方法。除此之外,我还包括了删除同一解决方案的不同重新着色所产生的重复解决方案的逻辑。例如,如果你取一个溶液,把红色换成绿色,我把它算作相同的溶液。以下是我找到的解决方案。我包括Gurobi(在我的笔记本电脑上)为每个案例找到所有解决方案所花的时间:
对于$C=3$种颜色,有$2$种不同的解决方案(需要1.6毫秒才能解决)
对于$C=4$种颜色,有$9$种不同的解决方案(需要32毫秒才能解决):
对于$C=6$种颜色,有$33$种不同的解决方案(需要700毫秒才能解决):
有趣的是,使用更少的颜色更容易满足等面积约束,但它更难满足边缘约束。最终,只有针对上述情况的解决方案($C=3,4,6$)。没有任何其他$C$值的解决方案。
如果您有兴趣查看我的代码,这是我的IJulia笔记本.