贪婪算法(Greedy algorithm)


1、基础

定义:贪婪算法分阶段地工作,在每一阶段,选择在当前最好的决策,不考虑将来的后果。所以一般只能得到局部最优而不是全局最优。

贪婪算法:

  • Dijkstra 算法
  • Prim 算法
  • Kruskal 算法
  • 哈夫曼编码

2、Dijkstra 算法

原理:

  1. 把起点的 dv 初始化为0,其它的为∞,并设置所有点的最短路径都是不知道的
  2. 声明起点最短路径已知,根据权值更新邻接点的 dv 和 pv
  3. 从未知最短路径的点中,选择 dv 最小的值,更新邻接点的 dv 和 pv
  4. 重复步骤 3 直到所有点的最短路径都已知



伪代码:


3、哈夫曼编码

原理:一棵树的权等于它的树叶出现的频率的和,哈夫曼编码就是要使得树的权最小。每一个元素都可以看成是一棵树,任意选取最小权的两颗树T1和T2,组合成新的树。不断组合,直到所有的节点都被包含在一棵树中。



          ……….


数据结构与算法(C++)– 贪婪算法(Greedy algorithm)相关推荐

  1. 贪婪算法-Greedy algorithm

    贪婪算法(greedy algorithm) WIKI A greedy algorithm is an algorithmic paradigm that follows the problem s ...

  2. 数据结构与算法(基于<algorithm>)

    algorithm算法库 一.排序算法(sort.stable_sort.partial_sort.nth_element) 1.代码示例 2.运行结果 二.查找算法(find.find_if.cou ...

  3. 数据结构与算法--递归(Recursion Algorithm)

    什么是递归算法? 把规模大的.较难解决的问题变成规模较小的.易解决的同一问题.规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解(基本问题),从而得到原来问题的解. 哪时候用递归算 ...

  4. 贪心(Greedy Algorithm)

    贪心(Greedy Algorithm) 贪心 44.通配符匹配 45.跳跃游戏 II 55.跳跃游戏 122.买卖股票的最佳时机II 134.加油站 135.分发糖果 179.最大数 277.搜寻名 ...

  5. 数据结构与算法--贪婪算法2

    近似装箱问题 解决装箱问题(bin packing problem)的算法.也可以用贪婪算法来完成 给定N项物品,大小为s1,s2,s3-sn,所有的大小满足0 < si < 1.问题是要 ...

  6. 动态规划(Dynamic Programming)与贪心算法(Greedy Algorithm)

    文章目录 动态规划算法(Dynamic Programming) 动态规划问题的属性 应用实例:最长公共子序列问题(Longest Common Subsequence, LCS) 贪心算法(Gree ...

  7. 数据结构与算法(Python)– 回溯法(Backtracking algorithm)

    数据结构与算法(Python)– 回溯法(Backtracking algorithm) 1.回溯法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条 ...

  8. 贪婪算法(greedy Algorithm)

    贪婪算法的应用: 相关算法练习题: LeetCode股票买卖的最佳时机 LeetCode判断子序列 LeetCode 分发饼干 LeetCode跳跃游戏 LeetCode加油站 一.简单调度问题: 给 ...

  9. 数据结构与算法 Big O 备忘录与现实

    不论今天的计算机技术变化,新技术的出现,所有都是来自数据结构与算法基础.我们需要温故而知新. 算法.架构.策略.机器学习之间的关系.在过往和技术人员交流时,很多人对算法和架构之间的关系感到不可理解,算 ...

最新文章

  1. Spring为什么建议构造器注入?
  2. Python可视化(matplotlib)图像自定义图例(Legend)
  3. Docker入门系列8
  4. Android Studio 第六十五期 - Android业务组件库
  5. 2020 我的C++的学习之路
  6. ZetCode Spring 教程
  7. Python获取文件夹下的所有文件名
  8. 中国凝血测试耗材行业市场供需与战略研究报告
  9. 用python进行人脸识别
  10. git merge/git rebase分支合并
  11. Wannacry勒索病毒样本分析
  12. C#读取windows注册表键值的代码
  13. 网线水晶头制作的线序
  14. 线上3D产品展示的方式
  15. html跳转到关注的微信公众号,手机浏览器一键跳转微信公众号关注的方法
  16. 介绍一个java的Excel处理工具
  17. 手把手教你如何高效落地单项目管理 | 一看既会
  18. LeetCode455分发饼干
  19. RuoYi若依打包发布与部署
  20. c语言变量名拼音,C语言的32个关键字(读音、用法、注释)转来的,给刚接触C的...

热门文章

  1. CSS3特效之转化(transform)和过渡(transition)
  2. 失败用例重跑机制-python装饰器
  3. 【数据算法】Java实现二叉树存储以及遍历
  4. HashMap和LinkedHashMap的比较使用
  5. Future 和 ExecutorCompletionService 对比和使用
  6. 此microsoft fix it不适用于您的操作系统 解决方案
  7. 【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例
  8. DDoS攻防战 (二) :CC攻击工具实现与防御理论
  9. 对Extjs中store的多种操作
  10. vuex modules 命名空间