2 案例1——贪心算法实现
2.1 旅行商问题(TSP)
2.2 案例
2.3 Python实现
2.4 结果
3 案例2——图论及最短距离
3.1 知识点
3.2 networkx绘图
3.2.1 创建图
3.2.2 定点的添加、删除和查看
3.2.3 边的添加、删除和查看
3.3 案例
3.4 Python实现
3.5 结果
4 参考
1 概述
====
1.1 贪心算法
贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。
**基本思路:**从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到算法中的某一步不能再继续前进时,算法停止。
该算法存在问题:(1)不能保证求得的最后解是最佳的;(2)不能用来求最大或最小解问题;
(3)只能求满足某些约束条件的可行解的范围。
实现该算法的伪代码:
从问题的某一初始解出发;
while 能朝给定总目标前进一步 do
求出可行解的一个解元素;
由所有解元素组合成问题的一个可行解;
1.2 图论及求解最短距离
1.2.1 方法选择:
(1)需要求解任意两个节点之间的最短距离,使用 Floyd 算法;
(2)只要求解单源最短路径问题,有负权边时使用 Bellman-Ford 算法,没有负权边时使用 Dijkstra 算法;