算法设计:贪心算法、TSP问题、PageRank与线性规划
1. 贪心算法概述
贪心算法是一种快速且简单的策略,用于寻找多阶段问题的全局最优值。它基于选择局部最优值,而不验证这些局部最优值是否也是全局最优的。通常,除非运气好,否则贪心算法得到的值并非全局最优。不过,寻找全局最优值是一项耗时的任务,因此与分治法和动态规划算法相比,贪心算法速度更快。
贪心算法的一般定义如下:
1. 假设有一个数据集D,从中选择一个元素k。
2. 假设候选解或证书为S,考虑将k包含在解S中。如果可以包含,则解为Union(S, e)。
3. 重复此过程,直到S填满或D耗尽。
例如,分类与回归树(CART)算法就是一个贪心算法,它在顶层搜索最优分割,并在后续每层重复该过程。CART算法不会计算和检查该分割是否会在几层之后导致最低的杂质。CART使用贪心算法是因为找到最优树是一个NP完全问题,其算法复杂度为O(exp(m))时间。
2. 旅行商问题(TSP)
TSP是一个在20世纪30年代提出的著名问题,属于NP难问题。问题描述如下:
- 输入 :一个包含n个城市的列表V,以及每对城市之间的距离d ij(1 ≤ i, j ≤ n)。
- 输出 :访问每个城市恰好一次并返回初始城市的最短路径。
以下是加拿大五个城市之间的距离表:
| | 渥太华 | 蒙特利尔 | 金斯顿 | 多伦多 | 萨德伯里 |
| — | — | — | — | — | — |
| 渥太华 | - | 199 | 19
超级会员免费看
订阅专栏 解锁全文
1146

被折叠的 条评论
为什么被折叠?



