如何将地图着色问题表述为爬山搜索问题?

人工智能 搜索 爬山
2021-11-13 06:08:17

我有一张地图。我需要给它上色ķ颜色,使得两个相邻区域不共享颜色。

如何将地图着色问题表述为爬山搜索问题?

2个回答

首先,您需要一个初始解决方案。然后,您将通过爬山改进此解决方案。

对于您的初始解决方案,您可以使用 K 种颜色随机为地图着色。这很可能会导致冲突(相同颜色的相邻区域)。

然后是爬山部分:找到一个有冲突的区域,把它的颜色换成另一种颜色,确保新颜色不会比旧颜色产生更多的冲突。随着每次迭代,您的解决方案应该会慢慢改进。

请注意,爬山并不完美,最终您可能找不到可行的解决方案。

首先,我们必须指定问题:

  1. 初始状态:地图全部随机着色。
  2. 后继功能(过渡模型):更改区域的颜色。
  3. 目标测试:地图全部着色,使得两个相邻区域不共享颜色。
  4. 成本函数:分配 1 以更改区域的颜色。

现在我们有了问题的规范,我们必须选择搜索算法来解决问题。在这种情况下,“爬山”。

当我们选择“爬山”时,我们必须再指定一个函数(目标函数):

  1. 启发式函数:返回共享相同颜色的相邻区域的数量。

现在我们已经制定了问题,我们应用“爬山”算法来尝试最小化启发式函数。

正如@Philippe Oliver 所说,仅使用“爬山”可能会遇到几个问题,例如:

  • 当地最低限度。
  • 平坦的局部最小值。

来自“人工智能:一种现代方法(第 3 版)”

您可以了解更多信息:Stuart Russell 和 Peter Norvig 的人工智能:现代方法(第 3 版)

你可以有几种方法来解决这个问题,我只向你展示一种。另一个可以逐步指定问题(更改没有区域着色的地图的“初始状态”,然后通过以两个相邻区域不共享颜色的方式绘制区域来指定“后继者”)。

参考:

  • Artificial Intelligence: A Modern Approach (3rd Edition) by Stuart Russell and Peter Norvig, chapter 4.1 (Local Search Algorithms and Optimization Problems).