《算法图解》读书笔记

  1. 二分查找。大O表示法
  2. 选择排序。数组、链表
  3. 递归。栈
  4. 快速排序。分而治之
  5. 散列表。散列函数、分而治之
  6. 广度优先搜索。最短路径、队列、图
  7. 狄克斯特拉算法
  8. 贪婪算法。背包问题、旅行商问题、NP完全问题、近似算法
  9. 动态规划。背包问题、最长公共子串
  10. K最近邻算法。特征抽取、机器学习
  11. Next。树、反向索引、傅里叶变换、并行算法、线性规划等。

7.狄克斯特拉算法

狄克斯特拉算法找出的是 总权重最小的路径
带权重的图称为加权图(weighted graph),不带权重的图称为非加权图(unweighted graph)
要计算非加权图中的最短路径,可使用广度优先搜索。要计算加权图中的最短路径,可使用狄克斯特拉算法
在无向图中,每条边都是一个环。狄克斯特拉算法只适用于有向无环图(directed acyclicgraph,DAG)
狄克斯特拉算法背后的关键理念:找出图中最便宜的节点,并确保没有到该节点的更便宜的路径
通过沿父节点回溯,便得到了完整的交换路径
最短路径指的并不一定是物理距离,也可能是让某种度量指标最小
如果有负权边,就不能使用狄克斯特拉算法。因为负权边会导致这种算法不管用
海报节点已处理过,这里却更新了它的开销。这是一个危险信号。节点一旦被处理,就意味着没有前往该节点的更便宜途径,但你刚才却找到了前往海报节点的更便宜途径!
狄克斯特拉算法这样假设:对于处理过的海报节点,没有前往该节点的更短路径。 这种假设仅在没有负权边时才成立。因此,不能将狄克斯特拉算法用于包含负权边的图。在包含 负权边的图中,要找出最短路径,可使用另一种算法——贝尔曼福德算法(Bellman-Ford algorithm)

包含四个步骤:
(1)找出“最便宜”的节点。即可在最短时间内到达的节点。
(2)更新该节点的邻居开销。
(3)重复这个过程,直到对图中的每个节点都这样做了。
(4)计算最终路径。

8.贪婪算法

本章内容
 学习如何处理不可能完成的任务:没有快速算法的问题(NP完全问题)。
 学习识别NP完全问题,以免浪费时间去寻找解决它们的快速算法。
 学习近似算法,使用它们可快速找到NP完全问题的近似解。
 学习贪婪策略——一种非常简单的问题解决策略。

小结
 贪婪算法寻找局部最优解,企图以这种方式获得全局最优解。
 对于NP完全问题,还没有找到快速解决方案。
 面临NP完全问题时,最佳的做法是使用近似算法。
 贪婪算法易于实现、运行速度快,是不错的近似算法。

知识点:

  1. 贪婪算法
    1)贪婪算法的优点:简单易行。每步都采取最优解法。
    2)每步都选择 局部最优解

转载于:https://my.oschina.net/workhardforward/blog/1842273

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值