我读过经典
travelling salesman problem (TSP)是NP-Hard.并且存在一些近似算法以及在O(N ^ 2 * 2 ^ N)时间内运行的特定算法.但是AFAIK,这些都是针对TSP的一般图表.
所以我的问题是,是否有更好的(优选的多项式时间)算法来解决M×N网格中的TSP?
例如,假设有一个3×4的网格,从一个单元格到两个相邻(底部和右侧)单元格中的每一个都有不同的成本.所以我想找到访问所有单元格的最低成本,从单元格(0,0)开始并返回到单元格(0,0).
编辑:只是为了清理,我很确定这不是欧几里德TSP.为简单起见,请考虑以下示例.矩形分为M行和N列.销售人员在单元格0,0(左上角的单元格).他必须访问所有细胞并仍然回到他的起始细胞(0,0).但他只能从一个牢房到四个相邻的牢房(顶部,左侧,底部,右侧).从一个小区到其相邻小区中的任何一个小区的成本可能不同.
谢谢.
最佳答案 TSP的复杂性是由于两个节点之间可能的路由数量是指数的.
网格具有固定的节点度(每个节点具有例如4个邻居),但是对于具有4个邻居的M * N网格,两个行进节点之间的可能路由的数量仍然是O(4 ^(M * N)).
算法可以在网格上运行得更快,但问题仍然是NP难的.
编辑:您可以省略访问顶点的路径,然后路径返回到最后一个顶点,因为这些路径不必要很长.这意味着总有3个可能的邻居可供选择(而不是4个).因此,复杂性可以表示为O(3 ^(M * N)).这也与Vikrams答案中描述的蛮力方法相对应.