4

假设我们有 7 个城市 A,B,C,D,E,F,G 并且我们有一个起始状态 ABCDEFGA 和一些成本 'x' ,我不明白这个节点的子节点是什么。意味着如何爬山算法的第二次迭代会继续吗?

作为起始状态的节点 ABCDEFGA 会有 6 个子节点吗?就像在

第二次迭代是 ACBDEFGA、ADCBEFGA、AECDBFGA、AFCDEBGA、AGCDEFBA?

第三次迭代:假设在第二次迭代中选择了ADCBEFGA,那么第三次迭代是否会与所有其他城市交换城市'C'等等?

我只想知道我对算法的理解是否正确。

4

1 回答 1

6

Hill Climbing 算法非常适合寻找局部最优,它通过改变当前状态的一小部分来获得更好的(在这种情况下,更短的)路径。

如何实施小改动以找到更好的解决方案取决于您。假设您只想切换两个节点,并且仅在结果优于当前解决方案时才保留结果。

只需将第二个城镇与其他城镇交换即可获得以下信息:

# first iteration
start: ABCDEFGA
next: ACBDEFGA, ADCBEFGA, AECDBFGA, AFCDEBGA, AGCDEFBA

# second iteration
start: ADCBEFGA
next: ACDBEFGA, ABCDEFGA, AECBDFGA, AFCBEDGA, AGCBEFDA

您会想要检查每种可能性的适用性并保留最好的一种。然后重复,直到下一个可能性都没有比你当前的状态更好。您将希望在每次迭代中不断使用相同的算法。

您可以在第一次迭代时切换第二个城市,在第二次迭代中切换第三个城市,在第三次迭代中切换第四个城市,等等。但请确保您循环返回并继续这种交换方式,并且在到达终点时不要停止。我建议坚持一个点并与其他点交换,但无论你如何解决这个问题,最终你都会得到不同的次优答案。

于 2013-02-20T02:29:00.833 回答