优化:尽量减少绘画错误

时间:2012-09-01 02:21:23

标签: math optimization

您将获得一个m * n网格,其中每个单元格都标记为“b”或“w”。你也有黑色和白色的颜料。您可以使用k笔画,每种颜色(黑色或白色),笔画定义为来自同一行的连续无色细胞的着色(这意味着笔画不能超出行的长度,如果你在该行程结束的行结束之前拿起画笔。目的是最大限度地减少错误数量,如果您绘制的颜色错误或细胞仍未上漆,则会发生错误。什么是最优策略?

1 个答案:

答案 0 :(得分:0)

知道一行问题的解决方案(给定BW行上k个笔画的最小错误数量)可以用来解决问题。

对于每一行,列出给定数字笔画k_i = [0, 1, ..., min k needed to cover i-th row]的错误数量列表。现在我们有n个列表(大小不同)。要找到使用'k'笔划的行,只需从列表的开头处弹出k元素即可覆盖大多数单元格。

所以,主要任务是解决一行问题,我不知道如何: - )

设C为一行中的颜色变化数。比覆盖行的最小笔划数是ceil( (C+1)/2 )。这可以通过具有第一笔划的交替笔划颜色来完成,以覆盖最后一个笔划中最远距离变化之间的整行和下一笔划。第一个笔划的颜色为一个(或两个)端。

我认为,使用类似的方法,当没有足够的笔划覆盖整行时,可以找到错误数。必须省略一种颜色的范围。这可以通过以下方式完成:

  • 从不在边界上的颜色开始(省略第一个笔划),

  • 有些笔画不是最后一次中风最远的变化,而是 在更近的变化之间。

我不确定,但似乎找到几个最小的相同颜色部分就足够了,这就是错误。可能这些部分与目标的距离是多么重要。

现在就是......