旅行推销员问题
在旅行推销员问题中, 推销员必须访问n个城市。可以说, 销售员希望进行巡回或汉密尔顿周期旅行, 只访问一次每个城市, 然后在其出发的城市结束。从城市i到城市j会有非负成本c(i, j)。目标是找到最低成本的行程。我们假设每两个城市相连。这种问题称为旅行推销员问题(TSP)。
我们可以将城市建模为n个顶点的完整图形, 其中每个顶点代表一个城市。
可以证明, TSP是NPC。
如果假设成本函数c满足三角不等式, 则可以使用以下近似算法。
三角不等式
令u, v, w为任意三个顶点, 我们有
文章图片
开发近似解决方案的一个重要观察结果是, 如果我们从H *中删除一条边, 则巡回路线将成为生成树。
Approx-TSP (G= (V, E)) {1. Compute a MST T of G;
2. Select any vertex r is the root of the tree;
3. Let L be the list of vertices visited in a preorder tree walk of T;
4. Return the Hamiltonian cycle H that visits the vertices in the order L;
}
推销员问题
文章图片
【旅行推销员问题】凭直觉, Approx-TSP首先进行完整的MST T遍历, 该遍历每个边缘恰好两次。要从完整的步行创建汉密尔顿周期, 它绕过了一些顶点(相当于建立捷径)
推荐阅读
- 子集和问题
- 顶点覆盖问题
- 最大团问题
- vue项目部署到非根目录下的问题及解决
- NP完全问题实例分析
- 算法复杂度分类
- 图论(网络流量问题)
- android studio 0.8.1使用和遇到问题解决
- 图论算法(Johnsons算法)
- DNS问题故障排除(使用nslookup、dig和host等命令)