【问题标题】:Nearest Neighbor Heuristic最近邻启发式
【发布时间】:2015-12-19 11:29:56
【问题描述】:

我正在使用教科书自学 TSP。 我对最近邻启发式和最小增量启发式之间的区别感到困惑。

正如我的教科书中所描述的,我将以下内容作为每个的定义。

最近邻启发式: 读入下一个点,并将其添加到当前行程中最接近的点之后。 如果它最接近的点不止一个,请将其插入到您发现的第一个这样的点之后。

最小增量启发式: 读入下一点,并将其添加到当前游览中导致的点之后 尽可能少地增加游览时间。如果有多个点,请将其插入到第一个这样的点之后 发现。

对于第二个启发式,最近的点不会给你总距离的最小增加吗?那么这两种启发式方法之间究竟有什么区别呢?

如果你们能提供任何意见,我将不胜感激。

【问题讨论】:

    标签: graph-algorithm


    【解决方案1】:

    首先,最近邻的这种描述似乎不标准。通常,所有点都被认为已经“读入”了,NN 会添加最接近增长游程结束的点。您正在使用的这本书似乎是在知道所有点之前通过将每个新点插入到不断增长的游览中来构建游览。

    假设部分游览是ABCDEF 是新点。此版本的最近邻在点 P 之后插入 F,从而最小化 d(P,F)。请注意,如果这是例如B 然后旅游费用增加了 sum d(B,F) + d(F,C)。最近邻完全忽略了第二项。最小的增加启发式将其考虑在内。它旨在最小化插入的总成本,而不仅仅是第一个术语。

    两种算法都以AB 开头,其中AB 是读取的前两个点。他们可能会与C 分歧(第三点阅读)。 Nearest Neighbor 将根据d(A,C)d(B,C) 是否更小,将游览扩展到ABCACB。另一方面,所描述的最小增加启发式将查看ACBABC,这取决于哪个是最短的旅行(这相当于说哪个代表旅行AB 的增加最少)。

    正如我之前所说,这是对最近邻的非标准描述,尽管它肯定是一种合理的启发式方法。此外,应该注意的是,最小增量启发式并不总是比这里描述的最近邻更好。这是因为最小增加的启发式可能会因为在最终巡回赛中基本上不相关的原因而放弃好的边缘。如果AC 是一个好的优势,为什么在CB 不太可能成为最终巡回赛的优势时,仅仅因为CB 是一个劣势就绕过它?

    【讨论】:

    • 感谢您的详细解释。但是,我仍然不清楚这种插入是如何工作的——假设我们从 A 点开始。然后,我们找到离 A 最近的 B 点(最小化 d(A,B))并在 B 处再次启动算法,直到每个顶点被标记。 (B 会找到最近的点 C,依此类推)。对于两种启发式方法,这不会导致相同的游览吗?我是否完全误解了插入过程?感谢您的宝贵时间
    • @user3777839 查看编辑后的帖子是否解决了您的问题。顺便问一下——你用的是什么文字?
    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 2011-12-06
    • 2011-11-10
    • 2019-02-26
    • 2012-03-02
    相关资源
    最近更新 更多