【问题标题】:Outsmarting a Traveling Salesman Algorithm智取旅行推销员算法
【发布时间】:2016-02-11 04:29:07
【问题描述】:
我很难构建一个小的无向图 G,它的加权边比给定的算法更聪明,这意味着无论起点是什么,算法都不会选择最佳解决方案。每个节点都连接到每个其他节点。
给定一个起点,该算法迭代地选择图上最近的未使用点并访问它,直到它循环回到起点。该算法确实是蛮力的,以每个点为起点运行,并从所有输出的循环中选择最短的哈密顿循环。
我这辈子都无法弄清楚这一点,我画了无数的图,经历并解决了它们,但仍然无法提出算法无法找到最佳解决方案的图.
这完全是理论上的,没有代码。非常感谢任何关于我应该如何处理/思考这个问题的指导或指示。
【问题讨论】:
标签:
algorithm
theory
traveling-salesman
【解决方案1】:
考虑以下 4 顶点图:
我们有长度为 2 的 AB 和 CD、长度为 1 的 BC、长度为 3 的 AC 和 BD 以及长度为无穷大(或任意大)的 AD。
如果你从 A 开始并遵循贪婪的方法,你会去 B(长度 2),然后是 C(长度 1),然后是 D(长度 2),然后卡在 DA(长度无穷大)。通过图形的对称性,从 D 开始,你会得到相同的结果(你去 D -> C -> B -> A -> D,长度无穷大)。
如果你从 B 开始并遵循贪婪的方法,你会去 C(长度 1),然后是 D(长度 2),然后是 A(长度无穷大——这是唯一可用的移动,因为我们已经访问过 B和 C),最后是 B(长度为 2)。通过图形的对称性,从 C 开始时,你会得到相同的结果(你去 C -> B -> A -> D -> C,长度无穷大)。
简而言之,无论贪婪方法从哪里开始,最终都会得到长度无穷大。同时路径 A -> C -> D -> B -> A 的长度为 10。
无论起点如何,蛮力算法不仅不是最优的,而且它的表现也非常糟糕。