问题描述
根据我的理解,最近邻算法可以用来求解旅行商问题。我相信这是最近邻算法上使用的算法:
1)Choose vertex v.
2)Mark v as visited.
3)Find closest unvisited neighbor u of v.
4)Set v:=u.
5)Mark v as visited
6)If all the vertices are visited,terminate. Else,go to step 3.
这是维基百科中给出的算法。首先,这个算法保证不会给出哈密顿循环(因为它在返回起始顶点之前就终止了,它甚至不存储起始顶点)。令我感到困惑的是,即使在访问完所有顶点后修改该算法以返回起始顶点,这是否可能?考虑这个未加权的图:
这个圈有一个明显的哈密顿圈,就是1-2-3-4-5-6-7-8-1。但是,最近邻算法(至少是我在这里写的那个)将无法找到该路线。由于所有边都具有相同的权重,我们最终可以走 1-2-8-6-7-。鉴于所有这些情况,该算法(或其任何变体)如何找到哈密顿圈?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)