简单爬山算法中遇到的问题示例

简单爬山算法在遇到局部最优解、脊线和巷道以及平坦区域问题时,会出现哪些示例?我尝试搜索过以下内容:

  • 链接一:提供了一个关于简单爬山算法在积木排列中陷入局部最优解的相当好的示例。然而,它没有展示具体步骤。
  • 链接二:提供了在简单爬山算法中寻找解决方案的步骤。然而,我不明白为什么当只有四个积木且全部错位时,h(1)的值会是-6,因为这应该只会导致-4的值。它也没有展示简单爬山算法遇到的具体问题。
  • 链接三:我理解了达到状态’g’会使算法达到局部最优解并陷入其中的概念。然而,状态的定义相当模糊,我不知道状态’g’和最终状态具体指什么。

根据我阅读的讲义,我得到了旅行商问题(TSP)的例子。图是一个包含四个节点A、B、C和D的完全图。我们使用了简单爬山算法和最陡上升爬山算法来解决这个问题。用于解决该问题的启发式值是每个状态的总距离。我们可以通过交换字符”ABCD”的位置来探索其他邻近状态,使用6种不同的组合(第一位与第二位交换,第二位与第三位交换,等等)。然而,在给出的示例中,它并没有展示“陷入局部最优解”具体是什么情况。也没有展示脊线和巷道问题以及平坦区域问题。

有人能给我一个示例,展示我们是如何达到这些问题的,以及这些问题在示例中具体是什么吗(我理解每个问题的定义:这里这里)?作为参考,这是我提到的TSP问题的图像:TSP Map


回答:

当你的简单爬山算法在这个脊线上寻找上升路径时,它会变得低效,因为它会在x或y方向上行走,即沿着图片中的线行走。这会导致锯齿形运动。

要达到这种状态,给定一个随机起始位置,算法会评估4个位置(x+1,y)(x-1,y) (x, y+1) (x, y-1)(以1为步长)并选择最高的。因此,它会开始向脊线移动。

让我们用前面的图片来说明这种行为。假设从原点(0,0)开始,步长为1。薄暗线在表面上相交的点是单位点((0,1),(0,2),…,(1,0),…)通过函数的图像。算法在这些点中选择,但只选择直接相邻的点(因为它沿着轴移动)。这是它将采取的路径。(请原谅我的绘图技巧不佳)。

在链接2中,为了计算启发式函数,你需要评估每个积木,如果积木位置错误(即不在堆中的正确索引上),每个在它下面的积木减去-1,否则,每个在它下面的积木加上+1。h(1) = -3 -2 -1(A位置错误,它下面有3个积木所以是-3,B也是如此但下面有2个积木所以是-2,C是-1,D下面没有积木所以不加任何值)

对于平坦区域问题,如果你到达一个平坦或几乎平坦的表面,算法将无法找到更好的位置。

我希望我理解了你的问题。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注