【问题标题】:Hill Climbing search algorithm Applied to travelling salesmanHill Climbing 搜索算法应用于旅行商
【发布时间】:2013-02-20 02:11:43
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: algorithm search traveling-salesman


    【解决方案1】:

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

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

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

    # first iteration
    start: ABCDEFGA
    next: ACBDEFGA, ADCBEFGA, AECDBFGA, AFCDEBGA, AGCDEFBA
    
    # second iteration
    start: ADCBEFGA
    next: ACDBEFGA, ABCDEFGA, AECBDFGA, AFCBEDGA, AGCBEFDA
    

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

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

    【讨论】:

    • 但是如果我们继续交换同一个位置不会导致很多冗余状态,就像在这种情况下,在“下一个”行的第二次迭代结束时,我们会重复开始状态再次。可以吗?
    • 是的,这会导致冗余状态,但它仍然不如您当前的解决方案适合,因此永远不会倒退。但由于其他原因,该算法并不是解决旅行商问题的最佳算法。
    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 2011-02-02
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多